概念:servlet过滤器是客户端与目标资源间的中间层组件,用于拦截客户端的请求与相应信息。我的理解就是在交由其他组件处理并且显示之前,过滤器会先对一个操作进行处理,然后再传递给其他部分。
1、Filter接口
方法 | 说明 |
public void init (FilterConfig filterConfig) | 过滤器的初始化方法,容器调用到此方法完成过滤的初始化。对于每一个Filter实例,此方法只被调用一次 |
public void doFilter(ServletRequest request ,ServletResponse response ,FilterChain chain) | 此方法与Servlet的service()方法类似,当请求及响应交给过滤器时,过滤器调用此方法进行过滤处理 |
public void destroy() | 在过滤器生命周期结束时调用此方法,用于释放过滤器所占用的资源 |
根据java语法的规定,接口的方法必须全部实现,所以我就尝试注释掉过滤器的一个方法,果然会出现问题
2、FilterChain窗口
方法:
void doFilter(ServletRuest request,ServletResponse response)throws IOException,ServletException
主要用于将过滤器处理的请求或响应传递给下一
个过滤器对象
3、FilterConfig接口
我认为这应该算一个辅助性的接口,用的时候并不多,只是起到一个获取初始化期间的参数信息的作用。
方法 | 说明 |
public String getFilter Name() | 返回过滤器的名称 |
public String getInitParameter(String name) | 返回初始化名称为name的参数值 |
public Enumeration getInitParameterName() | 返回所有初始化参数名的枚举集合 |
public ServletContext getServletContext() | 返回Servlet的上下文对象 |
4、过滤器的配置
声明过滤器对象基本可以说是个公式化的操作,就不多做记录。而映射过滤器中的
可选值 | 说明 |
REQUEST | 直接请求时 |
INCLUDE | 通过Request Dispatcher对象的include()方法请求时 |
FORWARD | 通过REQUESTDISpatcher对象的forward方法请求时 |
ERROR | 当声明式异常产生时 |
练习:上次只是简单用中文过滤器处理输出了几个字,这次对表单进行处理
有两点必须注意
1、form表单中的action对应web.xml配置的url-pattern
2、必须用doPost()方法接受表单的请求