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. SQL Prompt 5.3.4.1

    Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程   Red Gate系列之三 SQL Se ...

  2. MATLAB代码

    clear;clc%%%%%%%%%%%%方程里的参量%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha=0.5;beta=0.5;%%% ...

  3. iOS 推送证书

    push 服务器证书 钥匙串:登入-->证书,选项里面导出证书命名为cert.p12,跟密钥命名为key.p12 需要将上面的2个.p12文件转成.pem格式: openssl pkcs12 - ...

  4. Java中单例设计模式总结

    两种单例常见的实现方式: 1:懒汉的设计模式,在第一次调用的时候才完成相关的初始化操作 懒汉式是典型的时间换空间,就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间.当然,如果一直没有人 ...

  5. crm操作货币实体

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messages; /// <summary> ...

  6. JavaScript DOM对象和JQuery对象相互转换

    1.分析源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  7. Codeforces Gym 100513F F. Ilya Muromets 线段树

    F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...

  8. 解决mac的日历问题:服务器响应一个错误

    出了一个问题好久,平时也不用这个同步不靠谱的日历.今晚花点时间解决了下. 参考Apple 官网日历的问题解答. 当出现如下情况时: 退出日历和提醒事项. 从 Apple () 菜单中选取“系统偏好设 ...

  9. Python integer objects implementation

    http://www.laurentluce.com/posts/python-integer-objects-implementation/ Python integer objects imple ...

  10. assets

    我们知道assets/和res/文件夹用于存放可在应用程序中的使用文件. assets/用于存储各种应用程序中需要的文件(例如配置文件或音频文件等),这些文件会打包在Android应用程序中. res ...