关于jsp界面乱码问题

关于jsp界面乱码问题

 在学习Sevrlet的重定向与转发时,写了一个登录界面,用LoginServlet处理该登录请求,登录成功则跳转至success.jsp页面,失败则跳转至error.jsp页面。

一、乱码问题

    有重定向和转发两种方式实现页面的跳转,在用转发实现跳转时,跳转后的jsp页面总是乱码,中文显示为问号???

如图:

    

解决办法:

1、jsp界面的顶部的编码设置为:

<%@ page language="java" import="java.util.*"  contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

2、Servlet中的response对象的编码也要设置成UTF-8,在创建out流之前进行编码设置,即该语句要放在response.getWriter()前,最好是放在前面两行。

如图:


这是因为获取response对象需要先设置字符集   后设置的话就不会生效了,不先设置,那么还是用的原来的字符集,后设置的不管用的  所以要先设置 。

如果有中文请求,如从页面表单中传来的数据有中文,还要先设置request编码,

request.setCharacterEnconding("utf-8");

顺带解释一下:关于JSP页面中的pageEncoding和contentType两种属性的区别: 

  pageEncoding是jsp文件本身的编码 
  contentType的charset是指服务器发送给客户端时的内容编码 

    问题解决!

二、关于转发与重定向

首先看他们的格式:

//转发

RequestDispatcher rd = request.getRequestDispatcher("xx.jsp");        //xx.jsp位于WebContent目录下

rd.forward(request, response);

//重定向

response.sendRedirect(xx.jsp);  

从x度上复制过来的区别:

重定向和转发有一个重要的不同:

当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。

重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

希望可以帮到像我一样的javaweb初学者。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值