JavaWeb(7)request response对象

request & response对象

1、request对象和response对象

web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个用于代表请求的request对象和代表响应

的response对象

(1)如果想要得到客户端提交过来的数据,只需要用request对象就可以了;

(2)如果想要向客户端响应数据,只需要用response对象就可以了。

request请求对象

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest

类的实例。Request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

下图为request对象中方法。

常用方法:

获取客户端提交的数据:

- getParameter(String)    返回值为字符串类型

- getParameterValues(String name)    返回值为字符串数组类型

请求转发:指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。

request.getRequestDispatcher(String path).forward(request,response);

通过request对象提供的getRequestDispatcher(String path)方法,该方法返回一个RequestDispatcher对象,调用

这个对象的forward方法可以实现请求转发。

response响应对象

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。

response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的

response对象对当前页面无效。

下图为response对象中方法。

常用方法:

- getWriter()    向客户端输出字符对象

响应重定向web客户端发送请求到服务器,服务器端接收到请求后进行处理将响应的结果返回客户端,同时告诉客户端

需要进行一次请求,请求服务器指定的资源,通过response对象进行处理。

response.sendRedirect(String path);

处理get post乱码问题:

POST方式提交处理中文乱码

request.serCharacterEncoding("utf-8");

reponse.setCharacterEncoding("utf-8");

response.setContextType("text/html;charset=utf-8")

get方式提交处理中文乱码

对于以get方式传输的数据,request即使设置了以指定的编码接收数据也是无效的,默认的还是使用ISO8859-1这个字

编码来接收数据,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字

编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。解决办法:在接收到数据后,先获取

request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决

乱码问题。

第一种方式:

修改tomcat的配置文件server.xml:

<Connector  URIEncoding="UTF-8" port="8888" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />           

只需增加 URIEncoding="UTF-8"  这一句,然后重启tomcat即可

第二种方式:

 将接收到的中文乱码重新编码:

//get请求方式接收到的中文字符串

String name = request.getParameter("userName");

//将中文字符重新编码 默认编码问 ISO-8859-1

String userName = new String(name.getByte("ISO-8859-1"),"utf-8");


 

发布了40 篇原创文章 · 获赞 10 · 访问量 4059

猜你喜欢

转载自blog.csdn.net/qq_41693150/article/details/80255028
今日推荐