JavaWeb学习-02(response和request)

2023-11-03

JavaWeb学习-02(response和request)

一、request对象

1.HttpServletRequest是ServletRequest的子接口

​ request对象用于接收客户端传递过来的请求内容,通过该对象的各种方法来获取请求中的内容,以便于后台根据请求的内容进行处理。

2.request对象的常用方法

​ ①:获取请求的完整路径,从http到?之前的数据

​ String url=request.getRequestURL()+"";//该方法返回的不是字符串,所以需要转为字符串。

​ ②:获取请求的部分路径,从站点名到?之前

​ String uri=request.getRequestURI();

​ ③: 获取请求时的参数字符串,从?之后的内容

​ String qurString=request.getQueryString();

​ ④:获取指定名称的参数值

​ String userName=request.getParameter(“userName”);

​ ⑤:获取协议版本

​ String version=request.getProtocol();

​ ⑥: 获取请求的方法

​ String method=request.getMethod();

​ ⑦:获取传递过来的有多个值的参数的值,以数组的形势获取

​ String[] likes=request.getParameterValues(“like”);

3.request乱码问题

​ 原因:在浏览器中默认使用的编码格式是ISO-8859-1,该编码是支持中文的,所以对传递中文会乱码。

​ 1. Tomcat8.0及以上 :

​ GET请求:GET请求不会乱码

​ POST请求 : 会乱码

​ 2.Tomcat7.0及以下

​ GET请求: 会乱码

​ POST请求 : 会乱码

​ 3.post请求乱码解决:

​ 在获取信息之前设置request的编码格式:request.setCharacterEnconding(“UTF-8”);注:只能用于POST请求

​ 4.所有请求乱码都能解决:

​ 获取传过来的字节序列,再将其转换为UTF-8的编码格式;(只允许在7.0及以下,否则在8.0不会乱码,都乱码了),此方 法针对于任何请求有乱码的

​ 解决:String s=new(request.getParameter(“name”).getBytes(“ISO-8859-1”),“UTF-8”));

4.request的转发跳转

​ 服务器在接受到了客户端的请求之后,根据传递过来的请求可以进行跳转。可以跳转到指定的JSP、HTML或者Java类。

​ 1.request转发跳转的特点

​ ①.是服务器端的行为

​ ②.浏览器中的地址栏不会发生变化

​ ③.使用的都是一个请求

​ ④.数据共享,在进行转发跳转的时候使用的是同一个request请求的数据

		//请求转发跳转到另外一个实现了HttpServlet的类,getRequestDispatcher()中传递的是跳转的地址,forward()是将请求的数据转发过去
		request.getRequestDispatcher("/ser01").forward(request, response);
		
		//请求跳转到其他的html或者JSP页面
		request.getRequestDispatcher("/NewFile.html").forward(request, response);
	

注意:转发跳转只能使用一个,不能同时使用

5.request域对象

​ 在服务器获取了客户端发送过来的请求数据之后,我们还可以在request的域对象中添加数据。作用范围只在一次请求中有效,但是可以多次请求转发。

		//1.设置域对象中的内容
 			request.setAttribute(String name,Object value);//类似于键值对,其中值的类型为对象,即可以传整数、字符串、集合等等
 		//2.获取域对象中的内容
 			requset.getAttribute(String name);//注意当获取的时候要注意接收时候的数据类型,可能会需要进行类型转换
 		//3.删除对象中的内容
 			requset.removeAttribuet(String name)

二、response对象

1.response对象

​ 每次发送请求都会有一个response 和request的对象传递过来,通过response对象向浏览器传递数据。

​ 1.获取的方法:注:两种方法只能使用一种,不能同时使用

​ getWriter()获取字符流的输出对象,只能输出字符串

​ getOutputStream()获取字节流的输出对象,能输出所有的数据类型

		//获取字符流
		PrintWriter writer=response.getWriter();
		writer.write("你好");
		//获取字节流
		ServletOutputStream outStream=response.getOutputStream();
		outStream.write("你好!!".getBytes());//传递的参数要是字符串的字节码

​ 2.乱码问题

​ ①:字符流getWriter():必定会产生乱码,在客户端中的IOS-8858-1不支持中文编码

​ 解决:统一客户端和服务器端的编码格式

	//服务器:
	response.setCharacterEncoding("UTF-8")
	//客户端:
	response.setHeader("content-type","UTF-8");
	//或者两者同时设置
	response.setContentType("charset=UTF-8");

​ ②:字节流getOutputStream():输出的是字节,但是由于来服务器和客户端的编码不同,导致乱码

	//解决:同时设置服务器和客户端的编码:
	response.setContentType("charset=UTF-8");

2.重定向

​ 重定向是一种服务端指导,客户端的行为。在服务器端接受到第一次请求之后,进行重定向,会传递给客户端一个新的地址,进行跳转,会发送第二次请求。

	//重定向	
	response.sendRedirect(url);

3.重定向与转发跳转的区别

​ ①:重定向的地址栏会发生变化,转发跳转不会。

​ ②:重定向会发送两次请求,转发跳转只会发送一次

​ ③:重定向的request数据不可共享(因为发送了两次请求),转发跳转的request数据是可共享的

​ ④:重定向是客户端行为,而转发跳转是服务器行为

​ ⑤:重定向访问的地址可以是任何地址(可进行跨域),而转发跳转的地址只能是当前站点下的资源(不能进行跨域)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb学习-02(response和request) 的相关文章

随机推荐