servlet过滤器



  

过滤器的用途

  • 过滤器可以处理编码问题(中文乱码问题)
  • 用户认证和管理员功能(权限控制)
  • 实现web应用的日志处理功能
  • 实现数据压缩功能
  • 对传输的数据进行加密
  • 实现xml文件的xslt转换
  •  令牌过滤
  • 图像转换过滤
  • 资源访问触发事件过滤

过滤器的实现

第一步:编写实现javax.servlet.Filter接口的类

  • 实现init方法,读取过滤器的初始化函数
  • 实现doFilter方法,完成对请求或过滤的响应
  • 调用FilterChain接口对象的doFilter方法,通过后续过滤器

第二步:配置servlet过滤器

 

下面通过举个处理编码问题的例子

第一步在一个web项目中新建一个filter类

servlet过滤器

 

第二步,打开web.xml进行如下配置

 

<filter>
    <display-name>EncodingFilter</display-name>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>cn.netjava.filter.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

如果是自动生成的话就只有将<url-pattern>中的/EncodingFilter改成/*就可以了

 

第三步,编写代码

方法一:在doFilter方法中插入以下代码

request.setCharacterEncoding("gbk");
  response.setContentType("text/html;charset=gbk");
  chain.doFilter(request, response);

方法二:

public class codeFilter implements Filter {
		private FilterConfig config;
		private String encoding="UTF-8";
	public void destroy() {
		condig=null;
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding(encoding);
		response.setCharacterEncoding(encoding);
		chain.doFilter(request, response);
	}

	public void init(FilterConfig config) throws ServletException {
		this.config=config;
		String s=config.getInitParameter("encoding");
		if(s!=null){
		s=encoding;
		}
	}

}

  

常用对象有request,response,chain,config。

 

你可能感兴趣的:(Web,xml,servlet,项目管理,配置管理)