一、通过配置方式写一个简单的字符集过滤器
1、web.xml
<filter>
<filter-name>FilterLearning</filter-name>
<filter-class>com.ykq.FilterLearning</filter-class>
<init-param>
<param-name>CharacterEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterLearning</filter-name>
<url-pattern>
2、过滤器类
package com.ykq;
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.HttpServletResponse;
public class FilterLearning implements Filter{
private String characterEncoding;
public void destroy() {
System.out.println("销毁过滤器!");
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) arg0;
HttpServletResponse resp = (HttpServletResponse) arg1;
req.setCharacterEncoding(characterEncoding);
arg2.doFilter(req, resp);
}
public void init(FilterConfig arg0) throws ServletException {
characterEncoding = arg0.getInitParameter("CharacterEncoding");
}
}
二、通过注解方式写一个简单的字符集过滤器
package com.ykq;
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.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
@WebFilter(value = "/*",
asyncSupported = false,
filterName = "FilterClass",
initParams = {@WebInitParam(name = "characterEncoding", value = "UTF-8")})
public class FilterClass implements Filter {
private String characterEncoding;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(characterEncoding);
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
characterEncoding = fConfig.getInitParameter("characterEncoding");
}
}
三、springMVC方式配置字符集过滤器
<!-- 中文乱码处理 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 下面的encoding和forceEncoding都是CharacterEncodingFilter中的成员变量 -->
<!-- 所以当不记得param-name时,可以点开原码看看 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>