JavaWeb学习总结:Filter
Filter过滤器1概念web中的过滤器当访问服务器的资源时过滤器可以将请求拦截下来完成一些特殊的功能过滤器的作用一般用于完成通用的操作。如登录验证、统一编码处理、敏感字符过滤。。快速入门注意一点Filter这里的包是javax.servlet下的。步骤1定义一个类实现接口Filter2复写方法3配置拦截路径web.xml注解通过注解配置WebFilter(/*)//访问所有资源之前都会执行该过滤器publicclassFilterDemo1implementsFilter{Overridepublicvoidinit(FilterConfig filterConfig)throwsServletException{}OverridepublicvoiddoFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain)throwsIOException,ServletException{System.out.println(filterDemo1.....);//放行 filterChain.doFilter(servletRequest,servletResponse);}Overridepublicvoiddestroy(){}}通过web.xml配置?xml version1.0 encodingUTF-8?web-appxmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1filterfilter-namedemo1/filter-namefilter-classcn.jsp.web.filter.FilterDemo1/filter-class/filterfilter-mappingfilter-namedemo1/filter-name!--拦截路径--url-pattern/*/url-pattern/filter-mapping/web-app过滤器的细节1web.xml配置2过滤器执行流程执行过滤器执行放行后的资源回来执行过滤器放行代码下边的代码3过滤器生命周期方法4过滤器配置详解5过滤器链配置多个过滤器过滤器执行流程publicvoiddoFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throwsServletException,IOException{//对request对象请求消息增强System.out.println(filterDemo2执行了。。。。);//放行chain.doFilter(req,resp);//对response对象的响应消息增强System.out.println(filterDemo2回来了。。。。);}过滤器生命周期方法WebFilter(/*)publicclassFilterDemo3implementsFilter{/** * 在服务器关闭后Filter对象被销毁如果服务器正常关闭则会执行destroy方法 * 只执行一次 */publicvoiddestroy(){System.out.println(destroy。。。。);}/** * 每一次请求被拦截资源时会执行执行多次 * param req * param resp * param chain * throws ServletException * throws IOException */publicvoiddoFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throwsServletException,IOException{System.out.println(doFilter。。。。);chain.doFilter(req,resp);}/** * 在服务器启动后会创建Filter对象然后调用init方法只执行一次 * param config * throws ServletException */publicvoidinit(FilterConfig config)throwsServletException{System.out.println(init。。。。);}}过滤器配置详解1拦截路径配置具体路径资源/index.jsp 只有访问index.jsp资源时过滤器才会被执行拦截目录/user/* 访问/user下所有资源时过滤器都会被执行后缀名拦截*.jsp 访问所有后缀名为jsp资源时过滤器都会被执行拦截所有资源/* 访问所有资源时过滤器都会被执行2拦截方式配置资源被访问的方式注解配置设置dispatcherTypes属性1REQUEST默认值。浏览器直接请求资源2FORWARD转发访问资源3INCLUDE包含访问资源4ERROR错误跳转资源5ASYNC异步访问资源web.xml配置设置dispatcher/dispatcher标签即可过滤器链配置多个过滤器执行顺序如果有两个过滤器(过滤器1和过滤器2)1过滤器12过滤器23资源执行4过滤器25过滤器1过滤器先后顺序问题1注解配置按照类名的字符串比较规则比较值小的先执行如AFilter 和 BFilterAFilter就先执行了。2web.xml配置filter-mapping谁定义在上边谁先执行案例1 登录验证 需求访问案例的资源。验证其是否登录如果登录了则直接放行。如果没有登录则跳转到登录页面提示您尚未登录请先登录/** * 登录验证的过滤器 */WebFilter(/*)publicclassLoginFilterimplementsFilter{publicvoiddestroy(){}publicvoiddoFilter(ServletRequest req,ServletResponse resp,FilterChain chain)throwsServletException,IOException{//强制转换HttpServletRequest request(HttpServletRequest)req;//1获取资源请求路径 String urirequest.getRequestURI();//2判断是否包含登录相关资源路径,要注意排除掉css/js/图片/验证码等资源if(uri.contains(/login.jsp)||uri.contains(/loginServlet)||uri.contains(/js/)||uri.contains(/css/)||uri.contains(/fonts/)||uri.contains(/checkCodeServlet)){//包含用户想登录放行 chain.doFilter(req,resp);}else{//不包含需要验证用户是否登录//3从获取session中获取user Object userrequest.getSession().getAttribute(user);if(user!null){//登录放行 chain.doFilter(req,resp);}else{//没有登录跳转登录页面 request.setAttribute(login_msg,您尚未登录请登录);request.getRequestDispatcher(login.jsp).forward(request,resp);}}}publicvoidinit(FilterConfig config)throwsServletException{}}

相关新闻

STL学习笔记-函数模板与类模板

STL学习笔记-函数模板与类模板

函数模板 例如编写一个比较大小的函数时,如果参数不确定,则需要编写一组重载函数,以满足不同类型的需求,但是带来的后果是,如果后期需要修改函数逻辑,意味着所有的重载函数都要修改。如果使用函数模板则只需…

2026/7/28 15:29:24阅读更多 →
HoRNDIS企业级USB网络共享解决方案:macOS与Android设备深度集成实战指南

HoRNDIS企业级USB网络共享解决方案:macOS与Android设备深度集成实战指南

HoRNDIS企业级USB网络共享解决方案:macOS与Android设备深度集成实战指南 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS HoRNDIS是一个专业级的macOS内核扩展驱动,为…

2026/7/28 15:29:24阅读更多 →
PTA_数据结构与算法题目集(中文)_7-9 Huffman Codes (30 分)_简洁版解法

PTA_数据结构与算法题目集(中文)_7-9 Huffman Codes (30 分)_简洁版解法

题目地址题目分析: 我们在分析哈夫曼树建立规则后可知,在所有(n个)数据作为子叶节点时,需且仅需(n-1个)连接点来构成完整的哈夫曼树。故,我们设置一个大小为2*n的结构体数组并使用其…

2026/7/28 15:29:24阅读更多 →
故障根因1分钟定位?具备AI根因自动定位故障的智能运维平台厂商这样解题

故障根因1分钟定位?具备AI根因自动定位故障的智能运维平台厂商这样解题

深夜两点,运维值班手机再次响起。系统告警如潮水般涌来,数百条告警在屏幕上持续滚动,有效信息却淹没其中。排障团队被紧急召回,在日志、监控、链路数据之间反复切换,依靠经验和猜测逐层排查。待根因锁定、业务恢复&…

2026/7/28 16:33:50阅读更多 →
【转载】如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?

【转载】如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?

阶段性反馈机制(如何持之以恒、让自己发疯) 反馈机制是王者荣耀的核心武器,击杀野怪获得金币,不断地努力,获得奖励是我们不断的玩这个游戏的主要原因,也是人的本能,我什么都得不到凭什么这么做&…

2026/7/28 16:33:50阅读更多 →
破局的第一性原理

破局的第一性原理

破局的第一步是先翻旧桌子,不是在旧规则里当第一。先翻旧桌子的第一步是切断退路,不是给自己留备选。切断退路的第一步是承认现状已经烂透,不是自我催眠一切都好。承认现状已经烂透的第一步是剥离虚荣的伪装,不是维护可怜的面子。…

2026/7/28 16:33:50阅读更多 →
别再只会调 Prompt:Java 程序员如何给 AI 应用加一套可复现评测体系

别再只会调 Prompt:Java 程序员如何给 AI 应用加一套可复现评测体系

摘要:很多 AI 应用刚开始效果不错,真正接入业务后却反复出现“昨天能答,今天答错”“换个模型全线漂移”“Prompt 改了一行没人知道影响多大”。本文从 Java 后端视角,讲一套最小可用的 AI 评测体系:样本怎么建、指标怎…

2026/7/28 16:33:50阅读更多 →
蓝牙音箱和车载免提有了新选择,WT2605C的AEC降噪和EQ我们实打实试了

蓝牙音箱和车载免提有了新选择,WT2605C的AEC降噪和EQ我们实打实试了

做车载免提和蓝牙音箱的工程师,应该都栽过通话这个坑。车开到八十码,风声胎噪灌进麦克风,对方听到的声音断断续续。音箱更麻烦,喇叭在放歌,麦克风又把这段声音收回来,对方耳朵里全是回音。这两件事不解决&a…

2026/7/28 16:33:50阅读更多 →
JAVA毕设项目:基于 SpringBoot 的大学生互助交流社区论坛平台设计 校园动态分享与交互式论坛管理系统 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于 SpringBoot 的大学生互助交流社区论坛平台设计 校园动态分享与交互式论坛管理系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 16:31:50阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →