Filter登录验证案例
登录验证案例
需求:
1. 访问day4_case案例的资源。验证其是否登录
3. 如果登录了,则直接放行。
4. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"。

代码实现:
LoginFilter:
package com.example.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 doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { //0.强制转换 HttpServletRequest request = (HttpServletRequest) req; //1.获取资源请求路径 String uri = request.getRequestURI(); //2.判断是否包含登录相关资源路径,要注意排除掉 css/js/图片/验证码等 if (uri.contains("/login.jsp") || uri.contains("/loginServlet") || uri.contains("/css/") || uri.contains("/js/") || uri.contains("/fonts/") || uri.contains("/checkCodeServlet")){ //包含,用户就是想登录,放行 chain.doFilter(req, resp); }else { //不包含。需要验证用户是否登录 //3.从获取session中获取user1 Object user1 = request.getSession().getAttribute("user1"); if (user1 != null){ // 登录了,放行 chain.doFilter(req, resp); }else { // 没有登录,跳转页面 request.setAttribute("login_msg", "您尚未登录,请登录"); request.getRequestDispatcher("/login.jsp").forward(request, resp); } } } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } }

浙公网安备 33010602011771号