Filter应用之-验证用户是否已经登录

过滤器:

public class LoginFilter implements Filter{

  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
  }

  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
    //转换成http...
    HttpServletRequest req = (HttpServletRequest) request;
    //获取session
    HttpSession session = req.getSession();
    //从Session中获取User
    if(session.getAttribute("user")==null){
      System.err.println("这货还没有登录。。。");
      req.getSession().setAttribute("msg", "请先登录");
      //重定向到登录
      HttpServletResponse resp = (HttpServletResponse)response;
      resp.sendRedirect(req.getContextPath()+"/index.jsp");
    }else{
      //放行
      chain.doFilter(request, response);
    }
    
  }

  @Override
  public void destroy() {
  }

}

web.xml:

<filter>
      <filter-name>login</filter-name>
      <filter-class>com.lhy.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>login</filter-name>
      <url-pattern>/jsps/*</url-pattern>
      <url-pattern>/view/*</url-pattern>
  </filter-mapping>

jsp:

 <body>
   <c:choose>
        <c:when test="${empty sessionScope.name}">
            <form name="x" method="post" action="<c:url value='/LoginServlet'/>">
                Name:<input type="text" name="name"/><br/>
                auto:
                <input type="radio" name="auto" value="-1">不自动登录
                <br/>
                <input type="radio" name="auto" value="1">1天<br/>
                <input type="radio" name="auto" value="7">1周<br/>
                <input type="submit"/>
            </form>
        </c:when>
        <c:otherwise>
            你已经登录了:${name}<br/>
            <a href="<c:url value='/LogoutServlet'/>">退出</a>
        </c:otherwise>
    </c:choose>

  </body>
原文地址:https://www.cnblogs.com/lihaoyang/p/7381539.html