jsp转发、重定向乱码问题解决

本文详细解析了JSP中的请求转发与重定向的区别,包括它们的工作原理、使用场景及编码设置,特别关注了解决中文乱码问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp转发、重定向乱码问题解决

请求的转发和重定向:

  • .本质区别:请求的转发只发出了一次请求,而重定向则发出了两次请求。
    具体:
    ①请求转发:地址栏是初次发出请求的地址
    请求的重定向:地址栏不再是初次发送的请求地址,地址栏为最后响应的那个地址。

    ②请求转发:在最终的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 文件的方式.

<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值