1. 程式人生 > 其它 >通過過濾器Filter設定登入訪問

通過過濾器Filter設定登入訪問

通過過濾器Filter設定登入訪問

當登入過則可以持續訪問登入頁,否則需要進行登入

package com.msb;
//過濾器編寫
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.FileFilter;
import java.io.IOException;
/*任何.do資源都要過濾*/
@WebFilter(urlPatterns = "/*")
public class Filter implements javax.servlet.Filter {
    //初始化
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    //過濾
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req =(HttpServletRequest) servletRequest;
        HttpServletResponse resp =(HttpServletResponse) servletResponse;

        String requestURI = req.getRequestURI();
        System.out.println(requestURI);
        //如果訪問登入頁面直接放行
        //requestURI獲取請求資源如果包含logon.jsp字元,放行
        if (requestURI.contains("logon.jsp")||requestURI.contains("servletDemo.do")){//免登入訪問資源
            filterChain.doFilter(req,resp);
            return;
        }else {
            //登入過的話從Session中獲取資源
            HttpSession session = req.getSession();
            Object user = session.getAttribute("user");
            //如果不為空的話放行
            if(null!= user){
                filterChain.doFilter(req,resp);
            }else {
                //沒有登陸過需要進行登入
                resp.sendRedirect("logon.jsp");
            }
        }
    }
    //銷燬
    @Override
    public void destroy() {

    }
}

servlet提交資訊設定

package com.msb;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(urlPatterns = "/servletDemo.do")
public class servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("使用者名稱:"+username);
        System.out.println("密碼"+password);
        User user = new User(username,password);
        HttpSession session = req.getSession();
        session.setAttribute("user",user);
        resp.sendRedirect("index.jsp");
    }
}

<%--
  Created by IntelliJ IDEA.
  User: tomel
  Date: 2022/5/29
  Time: 7:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="servletDemo.do" >
    使用者名稱:<input type="text" name="username" >
    密碼:<input type="password" name="password">
    提交<input type="submit">
</form>
</body>
</html>

<%--
    內容頁
  Created by IntelliJ IDEA.
  User: tomel
  Date: 2022/5/29
  Time: 7:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  welcome to my new page
  </body>
</html>