</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
帅帅
选个“总统”还要去老美那汇报