Java中的过滤器doFilter里的chain.doFilter()函数理解
关于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()函数理解相关推荐
- java面包屑实现_在Java中实现过滤器和面包店锁
java面包屑实现 为了了解锁的工作原理,实现自定义锁是一种好方法. 这篇文章将展示如何在Java上实现Filter和Bakery锁(自旋锁),并将它们的性能与Java的ReentrantLock进行 ...
- 在Java中实现过滤器和面包店锁
为了了解锁的工作方式,实现自定义锁是一个好方法. 这篇文章将展示如何在Java上实现Filter和Bakery锁(自旋锁),并将它们的性能与Java的ReentrantLock进行比较. 过滤器锁和面 ...
- dofilter在java中_java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序
过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt.紧接着执行chain.doFilter()之后的代码 ...
- java中的过滤器与监听器
过滤器: Filter本身并不生成请求和响应对象,只是提供过滤功能. Filter能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容:在Ser ...
- Java中的过滤器和拦截器
一.简介 1.什么是拦截器? (1)在AOP中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. (2)拦截器是动态拦截Action调用的对象.它提供了 ...
- java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...
String sql="select * from reg where username='"+user+"' and pass='"+pwd+"'& ...
- Java中的过滤器Filter
本文用于学习所用,有不足及错误之处欢迎指出和补充. 目录 一:Filter简介 二:关于Filter (一)如何使用Filter进行过滤 (二)过滤器链 (FilterChain) (三)Filter ...
- java filter 失效_为何java中的过滤器filter不起作用
web.xml文件配置CharsetEncodingFiltercom.hbyhhh.drp.Filter.CharsetEncodingFilter web.xml文件配置 CharsetEncod ...
- java filter 跳过_如何在java中的过滤器链中跳过一个过滤器
您可以在请求中设置属性,并在第二个过滤器中进行检查. public class FirstFilter implements Filter { //... public void doFilter(S ...
最新文章
- SolrJ查询索引库
- 如何将一个文件分割成多个小文件
- 对话Linus:Linux 25岁啦
- leetcode383. 赎金信(两种做法)
- C++vector基础容器3.0
- 移动边缘计算——计算卸载
- RGB VGA显示时序
- Unity3D启动报错的解决方案
- 圆梦腾讯之后,我收集整理了这份“2022Java 常见面试真题汇总
- vue按钮字体大小设置_vue添加文字怎么设置时长
- smbus电池信息读取
- 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]
- TD-SCDMA网络测试仪中Uu接口的信令分析
- 关于Python的面向对象
- 华虹半导体发力国际MCU市场
- Java实现是否为节假日、工作日判断(调用“http://api.goseek.cn/Tools/holiday”接口)
- Linux之离线安装Ganglia
- 链接器lds文件简介
- VAE中重参数化技巧
- Android加载长图,仿微博长图滚动查看
热门文章
- UNITY小白3D坦克大战制作学习笔记1
- 【信息安全】RSA非对称加密算法原理(详解和C++代码实现)
- #智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网
- 387. 字符串中的第一个唯一字符(javascript)387. First Unique Character in a String
- python之break语句练习
- Vue+element-ui实现表格数据渲染+分页
- 「TShark学习」TShark抓包笔记
- (二)UPF之电压域、低功耗模式编码(Primary Supply Set、Power State)
- 【124】JavaScript获取下一个、上一个兄弟节点
- MATLAB之最优路径的查找