这几天听同事说servlet中午乱码问题。我也心血来潮就搞了一把。主要还是时间比较长没有接触servlet了。感觉有点忘了。就又自己搞了一个web小测试。注册到登录给自己复习复习。
情景:jsp页面统一采用post请求。我基本从来不用get请求.页面编码统一设置成gbk
过程:表单通过action提交
servlet:这里面中文参数的接受debug进去会发现中文乱码怎么解决呢?实验过后发现两种办法:
第一种:上来直接request.setCharacterEncoding("gbk");搞定。中文参数String username=request.getParameter("username");//直接中文搞定
第二种:String username=request.getParameter("username");
username=new String(username,getBytes("iso-8859-1"),"gbk");//也能搞定
两者取其一。不能重用
情景:我去,servlet转发到jsp页面,页面获取reqeust.getAttribute("info");显示??????//乱码又出现
解决:在servlet中处理:
第一步:request.setCharacterEncoding("gbk");直接注释掉
第二步:response.setCharacterEncoding("gbk")添加代码
第二步:String username=request.getParameter("username");
username=new String(username,getBytes("iso-8859-1"),"gbk");
结果:转发jsp中文ok!
如果此时servlet不用转发而用重定向呢?重定向是服务器和浏览器间的通信,此时request对象不能共用所以request绑定信息为空
response.sendRedirect(request.getContextPath()+"/info.jsp");重定向到页面绝对路径
情景:jsp页面向servlet发起请求的路径问题