过滤器过滤多个网站目录filter-mapping servlet filter(7)

电脑杂谈  发布时间:2018-02-20 06:24:08  来源:网络整理
  </servlet>
  <servlet-mapping>
   <servlet-name>advExtract</servlet-name>
   <url-pattern>/ad/</url-pattern>
  </servlet-mapping>

Servlet的配置一定要有<servlet></servlet>与<servlet-mapping></servlet-mapping>。

<init-param>的作用:

配置了初始化servlet需要用到的参数。

Java代码

publicclassAdvExtractServletextendsHttpServlet{

privateStringencoding;

@Override

publicvoidinit(ServletConfigconfig)throwsServletException{

super.init(config);

encoding=config.getInitParameter("encoding");

……

}

}

public class AdvExtractServlet extends HttpServlet{
  private String encoding;   
  @Override
  public void init(ServletConfig config) throws ServletException {
   super.init(config);
   encoding = config.getInitParameter("encoding");
   ……
  }
}

如上面<init-param>中配置了encoding为UTF-8,那么在override HttpServlet类的init()方法的时候,就可以从config中取出”encoding”的值”UTF-8”。

4、Filter。

Filter与servlet是密不可分的。Tomcat在接收到一个来自客户端(如浏览器)的请求之后,在这个请求被传递给servlet之前,需要经过层层Filter的过滤。它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response。

一个filter必须实现javax.servlet.Filter接口并定义三个方法:

1.void setFilterConfig(FilterConfig config) //设置filter 的配置对象

2. FilterConfig getFilterConfig() //返回filter的配置对象;

3. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) //执行filter 的工作

Filter与servlet是一个层层包裹的关系,如下图:

对于每个request,将会先进入Filter1的doFilter()方法,在这个方法中会调用chain.doFilter()方法把控制权交给Filter2,然后在Filter2的doFilter()方法中会调用servlet的servici()方法,进入servlet,在离开servlet一层之后,依次退回到Filter2与Filter1,进行doFilter()中的后续处理,这里可以对从servlet返回来的response进行处理。

因此filter的实质就是(interceptor),它与Spring AOP中的包围通知(MethodInterceptor)类似,层层的包围住servlet。

常见的filter的应用有:权限控制(如Acegi的实现),记录日志,转换编码格式,加密等。过滤器过滤多个网站目录filter-mapping

推荐:servlet 和filter区别和servlet、filter、interceptor的执行顺序

[1)servlet和filter的区别Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servl


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-86028-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...