关于chain.doFilter()函数在最近的使用中不是很理解,但是考虑到他是过滤器。过滤器顾名思义就是在执行某件事情的时候开始之前。开始进行处理的叫做过滤处理。一个方法,一个类就是充当过滤器的角色。它是在一个容器(类似于Tomcat)启动之后,打开一网站,他就会根据配置就行过滤处理。doFilter()方法就是过滤器的主要方法,init()方法就是在容器启动的时候执行的。doFilter()方法中的chain.doFilter(request,response)方法刚开始还有些不怎么理解。现在有一点明白了。
doFilter(request,response)的方法就是在你打开一个页面当满足过滤器的条件的时候,他就会继续执行你打开页面时候的操作。同时如果你使用了httpservletrequest和httpservletResponse的话,获取servletPath的值就是你要打开的文件的地址。例子如下:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest)request;HttpServletResponse resp=(HttpServletResponse)response;String servletPath= req.getServletPath();HttpSession session=req.getSession();String flag=(String)session.getAttribute("flag");if(servletPath!=null&&(servletPath.equals("/03/index.jsp")||servletPath.equals("/03/login.jsp")||servletPath.equals("/loginServlet17"))){chain.doFilter(request, response);}else{if(flag!=null&&flag.equals("login_success")){chain.doFilter(request, response);  }else if(flag!=null&&flag.equals("login_error")){req.setAttribute("msg", "登录失败,请重新登录");req.setAttribute("return_uri", servletPath);RequestDispatcher rd=req.getRequestDispatcher("/03/login.jsp");rd.forward(req, resp);}else{req.setAttribute("msg","你尚未登录");req.setAttribute("return_uri", servletPath);RequestDispatcher rd=request.getRequestDispatcher("/03/login.jsp");rd.forward(req, resp);}}System.out.println(servletPath);}

Java中的过滤器doFilter里的chain.doFilter()函数理解相关推荐

  1. java面包屑实现_在Java中实现过滤器和面包店锁

    java面包屑实现 为了了解锁的工作原理,实现自定义锁是一种好方法. 这篇文章将展示如何在Java上实现Filter和Bakery锁(自旋锁),并将它们的性能与Java的ReentrantLock进行 ...

  2. 在Java中实现过滤器和面包店锁

    为了了解锁的工作方式,实现自定义锁是一个好方法. 这篇文章将展示如何在Java上实现Filter和Bakery锁(自旋锁),并将它们的性能与Java的ReentrantLock进行比较. 过滤器锁和面 ...

  3. dofilter在java中_java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序

    过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt.紧接着执行chain.doFilter()之后的代码 ...

  4. java中的过滤器与监听器

    过滤器: Filter本身并不生成请求和响应对象,只是提供过滤功能. Filter能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容:在Ser ...

  5. Java中的过滤器和拦截器

    一.简介 1.什么是拦截器? (1)在AOP中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. (2)拦截器是动态拦截Action调用的对象.它提供了 ...

  6. java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...

    String sql="select * from reg where username='"+user+"' and pass='"+pwd+"'& ...

  7. Java中的过滤器Filter

    本文用于学习所用,有不足及错误之处欢迎指出和补充. 目录 一:Filter简介 二:关于Filter (一)如何使用Filter进行过滤 (二)过滤器链 (FilterChain) (三)Filter ...

  8. java filter 失效_为何java中的过滤器filter不起作用

    web.xml文件配置CharsetEncodingFiltercom.hbyhhh.drp.Filter.CharsetEncodingFilter web.xml文件配置 CharsetEncod ...

  9. java filter 跳过_如何在java中的过滤器链中跳过一个过滤器

    您可以在请求中设置属性,并在第二个过滤器中进行检查. public class FirstFilter implements Filter { //... public void doFilter(S ...

最新文章

  1. SolrJ查询索引库
  2. 如何将一个文件分割成多个小文件
  3. 对话Linus:Linux 25岁啦
  4. leetcode383. 赎金信(两种做法)
  5. C++vector基础容器3.0
  6. 移动边缘计算——计算卸载
  7. RGB VGA显示时序
  8. Unity3D启动报错的解决方案
  9. 圆梦腾讯之后,我收集整理了这份“2022Java 常见面试真题汇总
  10. vue按钮字体大小设置_vue添加文字怎么设置时长
  11. smbus电池信息读取
  12. 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]
  13. TD-SCDMA网络测试仪中Uu接口的信令分析
  14. 关于Python的面向对象
  15. 华虹半导体发力国际MCU市场
  16. Java实现是否为节假日、工作日判断(调用“http://api.goseek.cn/Tools/holiday”接口)
  17. Linux之离线安装Ganglia
  18. 链接器lds文件简介
  19. VAE中重参数化技巧
  20. Android加载长图,仿微博长图滚动查看

热门文章

  1. UNITY小白3D坦克大战制作学习笔记1
  2. 【信息安全】RSA非对称加密算法原理(详解和C++代码实现)
  3. #智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网
  4. 387. 字符串中的第一个唯一字符(javascript)387. First Unique Character in a String
  5. python之break语句练习
  6. Vue+element-ui实现表格数据渲染+分页
  7. 「TShark学习」TShark抓包笔记
  8. (二)UPF之电压域、低功耗模式编码(Primary Supply Set、Power State)
  9. 【124】JavaScript获取下一个、上一个兄弟节点
  10. MATLAB之最优路径的查找