Filter技术解决网站的所有中文乱码问题
来源:互联网 发布:付费阅读源码 编辑:程序博客网 时间:2024/05/23 01:59
Filter(过滤器)可以拦截所有的请求,在访问请求的资源时会先调用Filter如果过滤成功,则可以访问所有访问的资源,因此只要编写一个Filter就可以解决整个站点的中文乱码问题。
EncodeFilter.java
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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;/* 解决全站的中文问题 */public class EncodingFilter implements Filter{private FilterConfig config = null;@Overridepublic void init(FilterConfig config) throws ServletException {this.config = config;}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;String encode = config.getInitParameter("encode");request.setCharacterEncoding(encode);response.setCharacterEncoding(encode);response.setContentType("text/html;charset="+encode);myRequest myRequest = new myRequest(request);chain.doFilter(myRequest, response);}@Overridepublic void destroy() {}}MyRequest.java(增强了功能的Request,该类的getParamter()方法可以解决以get方法提交过来的数据的中文乱码问题)
/* 增强了功能的Request,该类的getParamter()方法可以解决以get方法提交过来的数据的中文乱码问题 */class myRequest extends HttpServletRequestWrapper{private HttpServletRequest request;public myRequest(HttpServletRequest request) {super(request);this.request = request;}@Overridepublic String getParameter(String name) {try{String value = request.getParameter(name);if(value == null){return value;}if(!request.getMethod().equalsIgnoreCase("get")){return value;}String encoding = request.getCharacterEncoding();value = new String(value.getBytes("ISO-8859-1"), encoding);return value;}catch(Exception e){throw new RuntimeException(e);}}}web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><filter><filter-name>EncodingFilter</filter-name><filter-class>com.filter.EncodingFilter</filter-class><init-param><param-name>encode</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>
- Filter技术解决网站的所有中文乱码问题
- Filter解决中文乱码问题
- 用filter来解决Struts中文乱码的问题
- Filter的使用(解决中文乱码问题)
- Tomcat中文乱码问题filter解决
- Filter全局解决中文乱码问题
- Filter 解决全站中文乱码问题
- javaWeb利用Filter解决中文乱码问题
- Filter拦截器解决中文乱码问题
- 使用Filter解决中文乱码问题
- 解决所有MyEclipse中文乱码问题
- 使用filter解决中文乱码问题--struts2乱码
- phantomjs 抓取、截图中文网站乱码的问题的解决
- phantomjs 抓取、截图中文网站乱码的问题的解决
- phantomjs 抓取、截图中文网站乱码的问题的解决
- 解决用teleport ultra下载网站中文乱码的问题
- 解决页面中文的乱码问题,使用过滤器为所有页面配置编码格式,解决大部分的中文乱码问题
- Ajax技术之解决中文乱码问题
- VC2005开发ActiveX控件把属性页和属性关联
- 关于 TableViewer 控件的问题
- Power Network之网络流解题报告
- 黑马程序员——银行业务调度系统
- XML的一些概念和原理
- Filter技术解决网站的所有中文乱码问题
- 直接拿来用!最火的Android开源项目(一)
- Validating Checkboxlist using CustomValidator
- 生活调理
- Android文件命名规范
- wait和sleep区别狭义jiavaBean规范,三层架构模式
- 仿银行取号
- POJ1101The Game
- 精简出最小JRE