`
包涵
  • 浏览: 38675 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

doFilter

阅读更多
过滤器 API 包含 3 个简单的接口,它们整洁地嵌套在 javax.servlet 包中。那 3 个接口分别是 Filter 、Filter Chain 和 Filter Config。从编程的角度看,过滤器类将实现 Filter 接口,然后使用这个过滤器类中的 Filter Chain 和 Filter Config 接口。该过滤器类的一个引用将传递给 Filter Chain 对象,以允许过滤器把控制权传递给链中的下一个资源。Filter Config 对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。

init():这个方法在容器实例化过滤器时被调用,它主要设计用于使过滤器为处理做准备。该方法接受一个 Filter Config 类型的对象作为输入。

  doFilter ():与 servlet 拥有一个 service() 方法(这个方法又调用 doPost() 或者 doGet())来处理请求一样,过滤器拥有单个用于处理请求和响应的方法――doFilter方法。这个方法接受三个输入参数:一个 Servlet Request、response 和一个 Filter Chain 对象。

  destroy():正如您想像的那样,这个方法执行任何清理操作,这些操作可能需要在自动垃圾收集之前进行。


初始化

  当容器第一次加载该过滤器时,init() 方法将被调用。该类在这个方法中包含了一个指向 Filter Config 对象的引用。我们的过滤器实际上并不需要这样做,因为其中没有使用初始化信息,这里只是出于演示的目的。

  过滤

  过滤器的大多数时间都消耗在这里。doFilter方法被容器调用,同时传入分别指向这个请求/响应链中的 Servlet Request、Servlet Response 和 Filter Chain 对象的引用。然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源(通过调用 Filter Chain 对象引用上的 doFilter方法),之后在处理控制权返回该过滤器时处理响应。

  析构

  容器紧跟在垃圾收集之前调用 destroy()方法,以便能够执行任何必需的清理代码。
public class SessionUserFilter implements Filter {

public void destroy() {
// TODO Auto-generated method stub

}
//处理请求和响应的方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpSession session=req.getSession();

Tbuser user=new Tbuser();
user=(Tbuser) session.getAttribute("five");

String actionName=req.getRequestURI();
//System.out.println(actionName);
if(!actionName.endsWith("doLogin.action")){

if(user!=null){
chain.doFilter(request, response);
}else{
request.getRequestDispatcher("index.jsp").forward(request, response);
}

}else{
chain.doFilter(request, response);
}

}

public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub

}

}







分享到:
评论

相关推荐

    dofilter过滤器

    ### doFilter过滤器详解 #### 引言 在Java Web开发中,`doFilter`方法是Servlet过滤器的核心,它负责处理所有通过过滤器的请求和响应。过滤器(Filter)是Java Servlet技术中的一项重要功能,允许开发者在请求到达...

    过滤doFilter

    java过滤(Filter)--过滤乱码、登陆等。

    java filter过滤器

    Filter的生命周期包括三个主要方法:`init()`、`doFilter()` 和 `destroy()`。 1. **生命周期方法** - `init(FilterConfig filterConfig)`: 这是过滤器的初始化方法,Servlet容器在加载过滤器时会调用此方法,传递...

    跨域访问Filter实例

    JAVA配置跨越访问Filter APP要访问WEB系统,需要进行跨域设置 关键: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {}

    在Spring MVC或Spring Boot中使用Filter打印请求参数问题

    问题在于,`filterChain.doFilter()`会继续执行后续的Filter和Controller,而Controller可能已经读取并处理了请求体。当尝试在Filter中再次读取请求体时,流可能已经被关闭,导致`IOException`。 为了解决这个问题...

    java head space.txt

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core....

    java过滤器

    System.out.println(EncodingFilter.class.getSimpleName() + " FilterChain doFilter() 之前的代码.."); req.setCharacterEncoding(encoding); resp.setCharacterEncoding(encoding); chain.doFilter(req, resp...

    servlet2.4doc

    The doFilter method of the Filter is called by the container each time a request/response pair is passed through the chain due to a client request for a resource at the end of the chain. doGet...

    java中五种常用的过滤器

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse) ...

    过滤器链的一个小Demo

    3. `doFilter()`方法内部,首先调用`chain.doFilter(request, response)`将请求传递给下一个过滤器,直到链末尾。 4. 当请求到达链末尾的过滤器时,这个过滤器不再调用`chain.doFilter()`,而是直接或间接地将请求...

    Filter使用范例--登陆验证

    每个Filter的`doFilter()`方法最后都会调用`chain.doFilter()`,将请求传递给下一个Filter或目标Servlet。 5. **ServletLearningChapter2_2.zip**:这个压缩文件可能包含了示例代码,包括Filter的实现以及与登录...

    web.xml过滤器知识

    3. 调用`FilterChain.doFilter()`: 当需要继续请求流程时,通过`FilterChain`对象的`doFilter()`方法调用下一个过滤器或目标Servlet/JSP。 4. 注册过滤器:在`web.xml`部署描述符文件中,使用`<filter>`和`...

    filter 知识小结

    3. **响应过滤**:在目标Servlet或JSP处理完请求并生成响应后,过滤器还可以再次调用`doFilter()`方法,对`ServletResponse`对象进行修改,以实现如添加响应头、修改响应内容等功能。 4. **销毁**:当Servlet容器...

    apache-tomcat-7.0.69.zip

    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core....

    java filter 执行过程例子

    - **Chain.doFilter()**:当客户端发起请求时,Servlet容器首先调用第一个Filter的`doFilter()`方法。在这个方法内部,Filter可以选择处理请求(比如登录验证),或者通过`chain.doFilter(request, response)`将...

    java 过滤器(附代码)

    公有类 ForceNoCacheFilter 实现 Filter 接口,重写 doFilter 方法,设置 Cache-Control、Pragma 和 Expires 三个头信息,以禁止浏览器缓存页面。 二、检测用户是否登陆的过滤器 这个过滤器的作用是检测用户是否已...

    JAVA web过滤器Filter学习资料

    首先,需要建立一个实现 Filter 接口的类,包括三个方法:doFilter、init 和 destroy。doFilter 方法包含主要的过滤代码,init 方法建立设置操作,而 destroy 方法进行清除。其次,在 doFilter 方法中放入过滤行为,...

    JAVA过滤器及原理

    doFilter方法通常会调用Chain of Responsibility设计模式,通过调用Chain参数的doFilter方法将请求传递给下一个过滤器或目标Servlet。 二、过滤器的生命周期 1. **初始化(init)**:当过滤器被加载到Servlet容器...

    jsp中过滤器选择过滤器的写法详解.docx

    在`doFilter()`方法中,我们使用`chain.doFilter(req, resp)`来将请求传递给下一个过滤器,或者直接传递给目标资源。 5. **客户端跳转与服务器端跳转**: 在示例中提到的"LoginServlet"跳转到欢迎页面使用了`...

    filter简单应用

    2. **执行(doFilter())**:每次有符合过滤条件的请求通过时,容器都会调用`doFilter()`方法,执行具体的过滤逻辑。 3. **销毁(destroy())**:当Web应用被卸载或者服务器关闭时,容器会调用过滤器的`destroy()`方法来...

Global site tag (gtag.js) - Google Analytics