通过Filter解决字符编码问题
2012-06-20 17:50
387 查看
字符编码是最常用的Filter之一了,常用来解决Tomcat等服务器里request、response乱码问题。字符编码Filter是在request提交到Servlet之前对request进行制定编码方式的编码。通过CharacterEncodingFilter.java解决,web.xml进行相应的配置即可。
CharacterEncodingFilter.java代码如下:
web.xml的配如下:
CharacterEncodingFilter.java代码如下:
package demo.filter; 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 String characterEncoding; //编码方式,配置在web.xml中 private boolean enabled; //是否开启用该Filter,配置在web.xml中 public void init(FilterConfig config)throws ServletException{ //初始化时加载参数 characterEncoding = config.getInitParameter("characterEncoding"); //编码方式 enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim()); //启用 } public void destroy() { characterEncoding = null; //销毁时清空资源 } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if(enabled || characterEncoding != null){ //如果启用该Filter request.setCharacterEncoding(characterEncoding); //设置request编码 response.setCharacterEncoding(characterEncoding); //设置response编码 } } }
web.xml的配如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Filter的编码应用 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>demo.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>characterEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>PS:页面编码方式与Filter编码方式必须一致。另外,如果表单时GET方式提交的,还需修改Tomcat下的/conf/server.xml配置文件,制定URIEncoding;否则,依然会乱码。修改如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
相关文章推荐
- Google App Engine 中通过自定义Django的filter解决时区问题
- 解决通过dataSource.filter(filters)过滤后分页信息以及聚合列不刷新问题
- 通过过滤器(Filter)解决JSP的Post和Request中文乱码问题
- 通过定义过滤器filter解决跨域问题
- 通过Filter解决跨域问题,可以跨多个域,域可以通过@Value注解取
- Filter中对字符编码过滤解决中文乱码问题
- 37-002-1 通过spring的OpenSessionInViewFilter解决jsp页面懒加载显示的问题
- 解决Spring Boot中,通过filter打印post请求的 request body 问题
- 通过过滤器(Filter)解决JSP的Post和Request中文乱码问题
- 通过脚本解决VMware克隆CentOS6.x后网卡不识别的问题
- 解决使用SearchView和Filter时出现搜索词悬浮窗问题
- Chrome安装Postman插件并解决“只能通过Chrome网上应用商店安装该程序”问题
- 使用filter解决jsp乱码问题
- 解决mysql中只能通过localhost(127.0.0.1)访问不能通过ip访问的问题
- eclipse中启动项目报内存溢出问题通过修改配置解决
- WINSOCK RESET解决只能通过IP地址访问目的地址,而域名无法访问的问题。
- 常见字符集简介 数据库以及jsp中文乱码问题以及Struts 中文乱码问题 Filter解决
- 机器学习2:通过交叉检验(cross validation)来解决方差过大的问题
- 解决员工更换工号后通过SPContext.Current.Web.CurrentUser.LoginName查找当前登录用户还是原来工号的问题
- 解决通过modem 拨号到服务器上网问题的方法