Use the filter filter to check the user's login, if not logged in, jump to the login page

        For a simple student management system I wrote a few days ago, if I wanted to realize the function of checking user login, I learned filter knowledge on the Internet.

        The first step is to create a package filter in the project directory, and create a filter named LoginFilter under this package. The code is as follows

package com.student.filter;

import com.student.entity.Users;
import com.sun.deploy.net.HttpRequest;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @Description
 * @Author single continuation
 * @Date 2016/10/24 10:19
 */
@WebFilter(filterName = "LoginFilter")
public class LoginFilter implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //chain.doFilter(req, resp);
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)resp;
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        HttpSession session = request.getSession();
        PrintWriter out = response.getWriter();
        Users user = (Users)session.getAttribute("user");
        if(user != null){
            chain.doFilter(request,response);
        } else{
            out.println("You are not logged in yet, jump to the login page in three seconds");
            //out.println("<script language='javascript'>alert('You are not logged in');");
            response.setHeader("refresh","3;/pages/users/login.jsp");
            //response.sendRedirect("/pages/users/login.jsp");
            //request.getRequestDispatcher("/pages/users/login.jsp").forward(request,response);
        }
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

        Problem to be solved: The alert method of JS cannot be implemented, and the reason is unknown.

        If you are not logged in, use response.setHeader to implement the timing page jump function.

         The second step is to configure the corresponding files in the web.xml file, some of the code is as follows

<filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.student.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/pages/student/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/pages/users/update.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/index.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/servlet/StudentServlet</url-pattern>
    </filter-mapping>

         Then check whether there is information stored after login in the session on all pages in the above configuration, if not, jump to the login page

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326606994&siteId=291194637