Servlet之过滤器
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之过滤器的更多相关文章
- 面试之servlet、过滤器、监听器
servlet.过滤器.监听器servlet是Java中WEB请求和响应的容器servlet的运行需要在类似tomcat容器中,一个 Web 应用对应一个 Context 容器,也就是 Servlet ...
- Servlet的过滤器Filter
Servlet 编写过滤器 Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Serv ...
- javaWeb中servlet开发——过滤器
servlet开发--过滤器(filter) servlet有三种,分为简单servlet.过滤器servlet.监听servlet 简单servlet是作为一种程序所必须的开发结构保存的,继承htt ...
- 动手学servlet(六) 过滤器和监听器
过滤器(Filter) 过滤器是在客户端和请求资源之间,起一个过滤的作用,举个例子,比如我们要请求admin文件夹下的index.jsp这个页面,那么我们可以用一个过滤器,判断登录用户是不是管理员 ...
- java servlet之过滤器1(解决jsp之间POST方式数据传递乱码)
首先,看看没有解决乱码的效果,新建两个jsp页面(a.jsp跳转到b.jsp). <form action="b.jsp" method="post"&g ...
- 个人笔记--Servlet之过滤器实现权限拦截
一.编写一个Java类实现javax.servlet.Filter接口 package cn.edu.sxu.filter; import java.io.IOException; import ja ...
- servlet之过滤器(转载)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.Filter 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...
- Servlet Filter 过滤器
Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源: 例如Jsp, Servlet, 静态图片文件或静态 ht ...
- Servlet 笔记-过滤器
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servlet 过滤 ...
随机推荐
- Android之基于HTTP协议的下载
Android之基于HTTP协议的下载 http://www.blogjava.net/zh-weir/archive/2010/05/02/319892.html http://www.qianfa ...
- Cucumber 入门一
(转自:http://www.cnblogs.com/jarodzz/archive/2012/07/02/2573014.html) 第一次看到Cucumber和BDD(Behavior Drive ...
- ListView往TreView里面拖拽
ListView往TreView里面拖拽 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Class ...
- android-betterpickers
https://github.com/derekbrameyer/android-betterpickers
- Android提高21篇之一:MediaPlayer
本文介绍MediaPlayer的使用.MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用Med ...
- 框架使用的技术主要是SpringMVC 在此基础上进行扩展
框架使用的技术主要是SpringMVC 在此基础上进行扩展 1 Web前端使用 2 前段控制器采用SpringMVC零配置 3 IOC容器Spring 4 ORM使用 Mybites或者hiberna ...
- sql操作事务SqlTransHelper类实现
具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- JAXB完毕XML与Java对象的互转
这段时间都老忙了,甚至连周末全部人员都在赶产品的进度,想想连续上12天班,人都有点晕了! 到这会儿最终有点时间.所以准备和大家分享一下JAXB,会不会有人认为有点陌生呢?没事,这里跟大伙儿简单的描写叙 ...
- currentTarget 与 Target 的区别
在一般情况下,target与currentTarget指向的是同一个对象.一般情况是指我们只对某一个独立的mc添加侦听器.如下: var mc:Sprite=new Sprite();addChild ...
- LVS 之 DR model arp_announce arp_ignore转
DR模式的收发流程: 1)客户端发起请求到调度器的vip.2)调度器根据调度算法在各个服务器中动态选择一台服务器,但它不修改ip报文,而是将数据帧的MAC地址改为选出服务器的MAC地址.再将修改名的数 ...