过滤器应用
需求:访问服务器资源时,需要先进行登录验证,如果没有登录,则自动跳转到登录页面
核心代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | package com.itheima.web.filter; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException; /** * 登录验证的过滤器 */ @WebFilter ( "/*" ) public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { HttpServletRequest req = (HttpServletRequest) request; //判断访问资源路径是否和登录注册相关 String[] urls = { "/login.jsp" , "/imgs/" , "/css/" , "/loginServlet" , "/register.jsp" , "/registerServlet" , "/checkCodeServlet" }; // 获取当前访问的资源路径 String url = req.getRequestURL().toString(); //循环判断 for (String u : urls) { if (url.contains(u)){ //找到了 //放行 chain.doFilter(request, response); //break; return ; } } //1. 判断session中是否有user HttpSession session = req.getSession(); Object user = session.getAttribute( "user" ); //2. 判断user是否为null if (user != null ){ // 登录过了 //放行 chain.doFilter(request, response); } else { // 没有登陆,存储提示信息,跳转到登录页面 req.setAttribute( "login_msg" , "您尚未登陆!" ); req.getRequestDispatcher( "/login.jsp" ).forward(req,response); } } public void init(FilterConfig config) throws ServletException { } public void destroy() { } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY