`
包涵
  • 浏览: 36022 次
  • 性别: 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

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

    dofilter过滤器

    是一个关于doFilter过滤器的执行过程的,详细介绍

    跨域访问Filter实例

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

    java filter过滤器

    过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR...

    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....

    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...

    对接openai接口,采用现有的开源前端实现ai对话(Java)

    //开始进入 SecurityContextPersistenceFilter->doFilter方法 FilterSecurityInterceptor 中的doFilter->invoke方法 //看有没有权限 获取遍历 antMatchers中的url有的话标记为不用授权 AbstractSecurityInterceptor...

    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....

    filter-源代码.rar

    doFilter(ServletRequest,ServletResponse,FilterCha):代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法 destory():代表是filter销毁...

    购物车源码

    public void doFilter ServletRequest sRequest ServletResponse sResponse FilterChain chain throws IOException ServletException { HttpServletRequest request HttpServletRequest sRequest; String ...

    解决中文乱码的Filter类ChineseFilter.java

    解决中文乱码的Filter类,解决中文乱码的Filter类,解决中文乱码的Filter类

    聊天室程序下载

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (encoding != null) { request.setCharacterEncoding(encoding); ...

    JSE基础与设计模式

    public void doFilter(Request request, Response response, FilterChain chain) { if (index == filters.size()) return; Filter filter = filters.get(index); index++; filter.doFilter(request, response...

    JSE基础与设计模式实例

    public void doFilter(Request request, Response response, FilterChain chain) { if (index == filters.size()) return; Filter filter = filters.get(index); index++; filter.doFilter(request, response...

    Servlet过滤器使用

    这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器。 c、destroy(): Servlet容器在销毁过滤器实例前调用该方法,...

    利用java filter 实现业务异常拦截源码

    利用java filter 实现业务异常拦截 跳转到错误信息提示页面 我们在做项目中肯定都会遇到自定义业务异常 ,然后将业务异常信息跳转的统一的信息提示页面的情况,比如我们在struts的时候我们会用到struts的异常处理...

    登录过滤器

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; ...

    网上购物系统设计与实现

    1、过滤器代码:[只要doFilter()方法] (1)adminfilter.java: HttpServletRequest requ=(HttpServletRequest)req; res.setCharacterEncoding("gb18030"); requ.setCharacterEncoding("gb18030"); HttpSession ...

    Filter_Listener相信代码使用

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest reque=(HttpServletRequest) request; System.out...

    完美解决跨域问题和静态资源冲突的demo(png图片)

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader...

Global site tag (gtag.js) - Google Analytics