跳转: 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域传递域属性则必须使用请求转发
如果希望资源跳转后修改用户的地址栏则使用请求重定向