JSP中请求转发和重定向区别和中文乱码问题解决方法



1.请求的转发和重定向:
 1).本质区别:请求的转发只发出了一次请求,而重定向则发出了两次请求。
 具体:
   ①请求转发:地址栏是初次发出请求的地址
     请求的重定向:地址栏不再是初次发送的请求地址,地址栏为最后响应的那个地址。
    
   ②请求转发:在最终的Servlet中,request对象和中转的request是同一对象
     请求的重定向:在最终的Servlet中,request对象和中转的request不是同一对象.
  
   ③请求转发:只能转发给当前的WEB应用的资源
     请求的重定向:可以重定向到任何资源
    
   ④请求转发:/代表的是当前WEB应用的根目录
    请求的重定向:/代表的是当前WEB站点的根目录
  
   //1.请求转发的代码
    request.getRequestDispatcher("/c.jsp").forward(request, response);
    
   //2.请求的重定向
   // response.sendRedirect("c.jsp");
    //可以重定向到任何资源
    response.sendRedirect("
http://www.baidu.com");


2.中文乱码

1). 在 JSP 页面上输入中文, 请求页面后不出现乱码: 保证  contentType="text/html; charset=UTF-8",
    pageEncoding="UTF-8" charset 和 pageEncoding 的编码一致, 且都支持中文. 通常建议取值为UTF-8
   
        还需保证浏览器的显示的字符编码也和请求的 JSP 页面的编码一致.
       
2). 获取中文参数值: 默认参数在传输过程中使用的编码为 ISO-8859-1

①. 对于 POST 请求: 只要在获取请求信息之前(在调用 request.getParameter 或者是 request.getReader 等),
调用 request.setCharacterEncoding("UTF-8") 即可.

②. 对于 GET 请求: 前面的方式对于 GET 无效. 可以通过修改 Tomcat 的 server.xml 文件的方式.

参照 http://localhost:8080/docs/config/http.html 文档的 useBodyEncodingForURI 属性.
为 Connector 节点添加 useBodyEncodingForURI="true" 属性即可.


参考:http://blog.csdn.net/superch0054/article/details/9325793

你可能感兴趣的:(JSP)