1. 程式人生 > >關於Filter過濾器的@WebFilter註解

關於Filter過濾器的@WebFilter註解

以前我們需要通過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");
	}

}