通过过滤器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>

posted @ 2022-05-29 18:35  爱豆技术部  阅读(53)  评论(0)    收藏  举报