Servlet的介绍:

  Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig Filter 程序是一个实现了 Filter 接口的 Java 类, Servlet 程序相似, 与 它由 Servlet 容器进行调用和执行 Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源:Filter 程序可以 拦截 Jsp, Servlet, 静态图片文件和静态 html 文件。

  我们来创建一个Servlet对象:

 import java.io.IOException;

 import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class Filter implements Servlet { @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
} @Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub } @Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub } }

Servlet

  我们来对其方法进行介绍一下:

  Filter 接口 init(FilterConfig filterConfig)throws ServletException:在 web 应用程序启动时, web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将 其保存在服务器的内存中。Web 容器创建 Filter 对象实例后,将立即调用该 Filter 对象的 init 方法。Init 方法在 Filter 生命周期中仅执行一次,web 容器在调用 init 方法 时, 会传递一个包含 Filter 的配置和运行环境的 FilterConfig 对象(FilterConfig 的用 法和 ServletConfig 类似)。利用 FilterConfig 对象可以得到 ServletContext 对象,以及 部署描述符中配置的过滤器的初始化参数。在这个方法中,可以抛出 ServletException 异 常,通知容器该过滤器不能正常工作。

  doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws java.io.IOException,ServletException: doFilter()方法类似于 Servlet 接口的 service()方法。当客户端请求目标资源的时候,容器就会调用与这个目标资源相关联的过滤器的 doFilter()方法。其中参数 request, response 为 web 容器或 Filter 链的上一个 Filter 传递过来的请求和相应对象;参数 chain 为代表当前 Filter 链的对象,在特定的操作完成后,可以在当前 Filter 对象的 doFilter 方法内部需要调用 FilterChain 对象的 chain.doFilter(request,response)方 法才能把请求交付给 Filter 链中的下一个 Filter 或者目标 Servlet 程序去处理,也可 以直接向客户端返回响应信息,或者利用 RequestDispatcher 的 forward()和 include()方 法,以及 HttpServletResponse 的 sendRedirect()方法将请求转向到其他资源。这个方法 的请求和响应参数的类型是 ServletRequest 和 ServletResponse,也就是说,过滤器的使 用并不依赖于具体的协议。

  FilterChain 接口: FilterChain 接口:代表当前 Filter 链的对象.由容器实现,容器将其实例作为参数传入 过滤器对象的 doFilter()方法中。过滤器对象使用 FilterChain 对象调用过滤器链中的下 一个过滤器,如果该过滤器是链中最后一个过滤器,那么将调用目标资源。

  在实现一个过滤器后,需要在 web.xml 中进行注册和设置它所能拦截的资源。这可以通过 <filter>和<filter-mapping>元素来完成的。其配置方式和 servlet 非常类似,过滤器的配置主要分为两个步骤,分别为声明过滤器和创建过滤器的映射。

<!-- 过滤声明 -->
<filter>
<filter-class>com.caiduping.MyFilter</filter-class>
<filter-name>CDP</filter-name>
</filter>
<!-- 过滤映射 -->
<filter-mapping>
<filter-name>CDP</filter-name>
<!-- 过滤URL映射 -->
<url-pattern>/MyFilter</url-pattern>
</filter-mapping>

web.xml

Servlet之过滤器的更多相关文章

  1. 面试之servlet、过滤器、监听器

    servlet.过滤器.监听器servlet是Java中WEB请求和响应的容器servlet的运行需要在类似tomcat容器中,一个 Web 应用对应一个 Context 容器,也就是 Servlet ...

  2. Servlet的过滤器Filter

    Servlet 编写过滤器 Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Serv ...

  3. javaWeb中servlet开发——过滤器

    servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...

  4. 动手学servlet(六) 过滤器和监听器

     过滤器(Filter) 过滤器是在客户端和请求资源之间,起一个过滤的作用,举个例子,比如我们要请求admin文件夹下的index.jsp这个页面,那么我们可以用一个过滤器,判断登录用户是不是管理员 ...

  5. java servlet之过滤器1(解决jsp之间POST方式数据传递乱码)

    首先,看看没有解决乱码的效果,新建两个jsp页面(a.jsp跳转到b.jsp). <form action="b.jsp" method="post"&g ...

  6. 个人笔记--Servlet之过滤器实现权限拦截

    一.编写一个Java类实现javax.servlet.Filter接口 package cn.edu.sxu.filter; import java.io.IOException; import ja ...

  7. servlet之过滤器(转载)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.Filter 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...

  8. Servlet Filter 过滤器

    Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源: 例如Jsp, Servlet, 静态图片文件或静态 ht ...

  9. Servlet 笔记-过滤器

    Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servlet 过滤 ...

随机推荐

  1. SOS 调试扩展 (SOS.dll)

    http://blog.csdn.net/cslie/article/details/2158780 SOS 调试扩展 (SOS.dll) 提供公共语言运行时(CLR)内部环境的有关信息,帮助你在Wi ...

  2. radio select的 option使用

    1  radio的使用 <td id="sex">性别:              <input type="radio" name=&quo ...

  3. java 数据库连接池 Oracle版

    首先应加入连接池和数据库连接的配置文件:数据库连接包:ojdbc6.jar数据库连接池包:commons-pool2-2.2.jar                       commons-dbc ...

  4. PowerShell管理IIS(新建站点、应用程序池、应用程序、虚拟目录等)

    #导入IIS管理模块 Import-Module WebAdministration #新建应用程序池 api.dd.com New-Item iis:\AppPools\api.dd.com Set ...

  5. Diskpart挂载/卸载VHD

    #Diskpart挂载VHD $DriveLetter = "X"$VHD_File = "e:\vhd\test\win2008r2.vhdx"$Curren ...

  6. 【转】linux中的常见目录及文件

    1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...

  7. 如何防止ListView控件闪烁

    如何防止ListView控件闪烁 beginupdate()和endupdate()之间写代码   ListView1.Items.BeginUpdate;ListView1.Items.Add('A ...

  8. ListView美化:去阴影、底色、选中色

    原文:http://blog.csdn.net/wxg630815/article/details/6987305 1.去滑动到顶点和底边时的黑色阴影 [html] view plaincopy   ...

  9. java后端模拟表单提交

    代码可实现文本域及非文本域的处理 请求代码: /** * 上传 * * @param urlStr * @param textMap * @param fileMap * @return */ pub ...

  10. 20种常用的DOS命令小结

    先介绍一下通配符的概念. 通配符*和? *表示一个字符串 ?只代表一个字符 注意通配符只能通配文件名或扩展名,不能全都表示.例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*:如 ...