Filter案例登录验证分析和登录验证实现
Fitter-案例-登录验证-分析
需求:
1. 访问day17_case案例的资源。验证其是否登录
2. 如果登录了,则直接放行。
3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"
Fitter-登录验证-代码实现
package com.example.day17_case.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; //完成登录验证的过滤器 @WebFilter("/*") public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //强制转换 HttpServletRequest request = (HttpServletRequest) servletRequest; //获取资源请求路径 String url = request.getRequestURI(); //判断是否包含登录相关资源路径 要注意排除css,js,图片,验证码等资源 if(url.contains("/long.jsp") || url.contains("/loginServlet") || url.contains("/css/") || url.contains("/js/") || url.contains("/fonts/") || url.contains("/checkCodeServlet")){ //包含,用户就是想登录,放行 filterChain.doFilter(servletRequest,servletResponse); }else { //不包含,需要验证用户是否登录 //从获取session中获取user Object user = request.getSession().getAttribute("user"); if (url!=null){ //登录,放行 filterChain.doFilter(servletRequest,servletResponse); }else{ //没有登录,返回登录页面 request.setAttribute("login_msg","您尚未登录,请登录"); request.getRequestDispatcher("/login.jsp").forward(request,servletResponse); } } } @Override public void destroy() { Filter.super.destroy(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)