每次Servlet中总会有各种各样的中文请求,为了避免在每个Servlet种都添加request.setCharacterEncoding(“GB2312”)或者response.setCharacterEncoding(“GB2312”),为此可以考虑添加一个中文过滤器,下面给大家演示一个案例:
1、创建一个中文过滤器类(CharacterEncodingFilter):
package com.xiaomo;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
private FilterConfig config;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//获取Filter初始化参数
String encoding = config.getInitParameter("encoding");
if(encoding != null && !"".equals(encoding)){
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
System.out.println("encoding:"+encoding);
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
}
2、在部署描述文件中配置过滤器:
<!-- 定义一个过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>com.xiaomo.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、自己写一个需要用到中文的Servlet:
package com.xiaomo;
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
public class HttpSessions extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html,charset=GB2312");
// response.setCharacterEncoding("GB2312");
HttpSession session = request.getSession();
String heading = null;
Integer accessCount = (Integer) session.getAttribute("accessCount");
if(accessCount == null){
accessCount = new Integer(1);
heading = "欢迎您,首次登陆该页面!";
}else{
heading = "欢迎您,再次登陆该页面!";
accessCount = accessCount +1;
}
session.setAttribute("accessCount", accessCount);
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<title>Session Tracking Example</title></head>");
out.println("<body><center>");
out.println("<h4>"+heading+"<a href='httpSessions'>再次访问</a></h4>");
out.println("<table border='0'>");
out.println("<tr bgcolor=\"ffad00\"><td>信息<td>值\n");
String state = session.isNew()?"新会话":"旧会话";
out.println("<tr><td>会话状态:<td>"+state+"\n");
out.println("<tr><td>会话ID:<td>"+session.getId()+"\n");
out.println("<tr><td>创建时间:<td>"+new Date(session.getCreationTime())+"\n");
out.println("<tr><td>最近访问时间:<td>"+new Date(session.getLastAccessedTime())+"\n");
out.println("<tr><td>最大不活动时间:<td>"+session.getMaxInactiveInterval()+"\n");
out.println("<tr><td>Cookie:<td>"+request.getHeader("Cookie")+"\n");
out.println("<tr><td>已访问次数:<td>"+accessCount+"\n");
out.println("</table>");
out.println("</center></body></html>");
}
}
4、在web.xml种配置改HttpSessions,启动tomcat,查看效果:
大家可以看到,第一个是没有配置中文过滤器,出现了乱码,配置了中文过滤器之后中文出来了,没有乱码现象。
出处:http://blog.csdn.net/cl05300629/article/details/9329257 作者:伫望碧落
分享到:
相关推荐
jsp传参 servlet接收中文乱码问题的解决方法.docx
彻底解决Servlet及jsp解决中文乱码问题
解决此问题的方法非常简单,在业务处理中重新指定中文字符集进行编码即可解决。在实际的开发过程中,如果通过每一个业务处理指定中文字符集编码,则操作过于繁琐,而且容易遗漏某一个业务中的字符编码设置;如果通过...
Servlet + Tomcat 中文乱码的解决方法,浏览器把Unicode字符转换为GBK字符,这样页面的内容和浏览器的显示模式都设成了GBK,就不会乱码了
解决jsp+servlet开发中的中文乱码问题
JSP_利用Filter解决Servlet输出中文乱码的问题.docx
解决servlet中文乱码问题1
解决Struts2和servlet的中文乱码问题
下面小编就为大家带来一篇jsp传参 servlet接收中文乱码问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Java Servlet输出中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
彻底解决servlet中文乱码问题,对于gbk、utf-8、iso-8859-1之间的选择,做了详细的讲解!
讲述javaweb开发中的jsp乱码问题 get、post的区别 http协议的图解
可以完全解决servlet的dopost和doget中文乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105237768 这个思维导图是我精华整理过的,试试上传功能
jsp,servlet,jdbc,mvc,sql2005 解决中文乱码 环境是myeclipes... 需要新建一个数据库fisrtdb,表fuser.
jsp和servlet操作mysql中文乱码问题的解决办法.docx
可以完全解决servlet的dopost和doget中文乱码还有控制台乱码的思维导图,如果觉得太少了看的不太明白,可以去看我的博客https://blog.csdn.net/qq_42495847/article/details/105293206 这个是升级版,更加给力
在Servlet中接收浏览器的数据以及发送数据到浏览器的时候容易遇到一些中文显示乱码的问题,下面是博主对这类问题的一个总结,希望能帮到大家! 一、问题分析 当我们的Servlet程序从客户端接收到一个中文数据或者...
解决使用smartupload上传普通字段中文乱码问题,在servlet中可以通过smart.getRequest().getParameter()直接获取
主要介绍了Servlet中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
JSP Servlet 汉字编码问题 乱码解决方法