javaweb基础 - request和response

跳转: request - 暴走小骚年

跳转: response - 暴走小骚年

- -删了自己的笔记转载的,超详细。


Request对象的五个集合:

QueryString:用以获取客户端附在url地址后的查询字符串中的信息。 
  stra=Request.QueryString [“strUserld”] 
Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST) 
  stra=Request.Form[“strUserld”] 
Cookies:用以获取客户端的Cookie信息。 
  stra=Request.Cookies[“strUserld”] 
ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。 
  stra=Request.ServerVariables[“REMOTE_ADDR”],返回客户端IP地址 
ClientCertificate:用以获取客户端的身份验证信息 
  stra=Request.ClientCertificate[“VALIDFORM”],对于要求安全验证的网站,返回有效起始日期。

request乱码问题

1. 以POST方式提交表单中文参数的乱码问题 
原因:服务器端和客户端使用的编码不一致 
解决方法:request.setCharacterEncoding(“UTF-8”); – 服务器端设置UTF-8编码

2. 以GET方式提交表单中文参数的乱码问题 
原因:GET方法通过URL传值(UTF-8格式),Tomcat对URL解码,统一解成ISO8859-1格式 
解决方法:先以ISO8859-1字符编码接收到原始数据的字节数组,通过字节数组以指定的编码构建字符串 
String name = request.getParameter(“name”);//接收数据 
name =new String(name.getBytes(“ISO8859-1”), “UTF-8”) ;

response乱码问题

向浏览器发送数据:getWriter() / getOutputStream(); 
1. 对于getOutputStream():  //用于传输非文本类型的内容
resp.getoutputStream().write(“中文”.getBytes(“UTF-8”)); //还需要通知浏览器用UTF-8码表解码 
2. 对于getWrite(): 
resp.setContentType(“text/html;charset=uft-8”); //通知浏览器和Tomcat用UTF-8码表解码

3. 请求转发(请求包含)和请求重定向

request 请求转发forward() 状态码:307

1 请求转发forward();

this.getServletContext().getRequestDispatcher(String realpath).forward(request, response);  //只能通过绝对路径
request.getRequestDispatcher(String path).forward(request,response);  //(绝对或相对路径)
return;
1)一次请求只能转发一次, 否则会发生下面的异常: -- 可以得到第一次转发获取的数据
2)当有数据已经写到客户端时再请求转发也会抛出异常.

2 请求包含include();

//当需要将多个servlet的输出合并到一块打给浏览器时可以使用请求包含
this.getServletContext().getRequestDispatcher(String realpath).include(request, response);
request.getRequestDispatcher(String path).include(request, response);
return;
// 1)被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略.
// 2)常被用来进行页面布局

sendRedirect()地址栏会发生变化.forward()地址栏不发生变化. 
sendRedirect()两次请求两次响应.forward()一次请求一次响应. 
如果需要在资源跳转时利用request域传递域属性则必须使用请求转发 
如果希望资源跳转后修改用户的地址栏则使用请求重定向

猜你喜欢

转载自www.cnblogs.com/kiqi/p/10458072.html