< filter>指定一个过滤器。
< filter-name>用于为过滤器指定一个名字,该元素的内容不能为空。
< filter-class>元素用于指定过滤器的完整的限定类名。
< init-param>元素用于为过滤器指定初始化参数,它的子元素< param-name>指定参数的名字,< param-value>指定参数的值。
在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。
< filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径
< filter-name>子元素用于设置filter的注册名称。该值必须是在< filter>元素中声明过的过滤器的名字
< url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式)
< servlet-name>指定过滤器所拦截的Servlet名称。
< dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。用户可以设置多个< dispatcher>子元素用来指定 Filter 对资源的多种调用方式进行拦截。
< dispatcher>子元素可以设置的值及其意义
REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。
INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
为了避免提交数据的中文乱码问题,Filter可以批量拦截修改servlet的请求和响应。
我们编写一个EncodingFilter.java,来批量设置请求编码。
public class EncodingFilter implements Filter {
public void init(FilterConfig config) throws ServletException {}
public void destroy() {}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("gb2312");
chain.doFilter(request, response);
}
}
为请求设置gb2312编码并执行chain.doFilter()继续下面的操作。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55857-4.html
有去无回
说不好的要么不是苹果用户或者机器太老