以前我们需要通过XML对过滤器进行配置和初始化值:如(系统字符编码需要进行初始化)
<filter> <!-- 配置filter -->
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>cn.lcp.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
现在我们可以直接通过过滤器过滤器的@WebFilter注解进行配置和值的初始化:
@WebFilter
(filterName="character",urlPatterns="/*",
initParams= {@WebInitParam(name="encoding",value="utf-8")})
public class characterFilter implements Filter {
String encoding;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
if(encoding == null) {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
response.setContentType("text/html"+encoding);
chain.doFilter(request, response);
}
}
public void init(FilterConfig fConfig) throws ServletException {
encoding = fConfig.getInitParameter("encoding");
}
}