logonfilter.java

来自「医院信息系统(Hospital Information System」· Java 代码 · 共 52 行

JAVA
52
字号
package hospital.Filter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class LogonFilter extends HttpServlet implements Filter {
    private FilterConfig filterConfig;
    //Handle the passed-in FilterConfig
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

    //Process the request/response pair
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
        try {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            HttpSession session = httpRequest.getSession();

            String requestURI = httpRequest.getRequestURI();
            //System.out.println("!!!!!!!!!!:" + requestURI);
            RequestDispatcher rd = httpRequest.getRequestDispatcher("/pages/error.html");

            //用户访问的路径为“/”表示是登陆页面,直接通过
            if (requestURI.endsWith("/") ||
            	requestURI.endsWith("index.html") ||
                requestURI.equals("/loginAction.do") ||
                requestURI.equals("/pages/error.html")) {
                filterChain.doFilter(request, response);
            }
            //否则如果用户访问的不是登陆页面
            else {
                //判断session是否为空,为空则跳转到登陆页面,不为空则通过
                if (session.getAttribute("userID") == null) {
                    rd.forward(request, response);
                } else {
                    filterChain.doFilter(request, response);
                }
            }
        } catch (ServletException sx) {
            filterConfig.getServletContext().log(sx.getMessage());
        } catch (IOException iox) {
            filterConfig.getServletContext().log(iox.getMessage());
        }
    }

    //Clean up resources
    public void destroy() {
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?