访问这个用户的全部菜单都可以访问到 跨越了多个请求
request.setCharacterEncoding("utf-8"); // 数据库中接收到中文 这里处理乱码
// 1.创建会话 HttpSession session = request.getSession(); //2.将用户信息放到会话中 session.setAttribute("username", inputUsername);
会话的保存机制
上一个环节完成后,要交互到下一个环节。
//配置路径 @WebFilter("/*") public class SecurityFilter implements Filter{ @Override public void doFilter(ServletRequest servletRequest ,ServletRespons servletRepone,FilterChain filterChain){ HttpServletRequest request = (HttpServletRequest)ServletRequest; HttpServletResponse response = (HttpServletResponse)ServletResponse if(isLoginRequest(request) || LoginAlready(request) || isHomeRequest(request)){ //放行 filterChain.doFilter(ServletRequest,ServletResponse) }else{ //重定向登录页 response.sendRedirect(request.getContextPath()) //request.getContextPath() 拿到登录页 } } //判断当前的请求是否是登录请求,登录请求的Servlet地址:/login,判断当前的请求uri是否是/login,如果是login就放行。 private boolean isLoginRequest(HttpServletRequest reqeust){ System.out.println(reqeust.getContextPath()); String uri = request.getRuquestURI(); //uri虚拟地址 if(uri.equals(request.getContextPath) + "/login"){ return turn; } return false; } //判读用户是否登录 private boolean LoginAlready(HttpServletRequest reqeust){ //得到session 因为登录成功后 我们在session里放了一个值 HttpSession session = request.getSession(); Object username = session.getAttribute("username"); } if(username != null{ return ture; } return flase; } // 判断当前请求是否是请求的项目首页,如果是项目首页,就放行 private boolean isHomeRequest(HttpServletRequest request){ String contextPath = request.getContextPath(); String uri = request.getRequestURI(); contextPath = contextPath.replaceAll)("/",""); uri = uri.replaceAll("/",""); if(contextPath.equals(uri)){ return true; } return flase; }