Use jsp+Filter to achieve secure login (learning to use)

1. What is secure login?

      Secure login means that only when you log in to this page, you have the qualification and ability to enter other pages of the web application, otherwise you will be sent back to the login page.

2. Front-end jsp code

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2021/11/18
  Time: 10:33
  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 action="usertttttt">
  <table  style="background-color: lavender;border-radius: 10px">
    <caption>
      <h2 style="color: cornflowerblue">用户登录</h2>
    </caption>
    <tr>
      <td>用户名:</td>
      <td>
        <input type="text" name="username" />
      </td>
    </tr>
    <tr>
      <td>密&nbsp;&nbsp;&nbsp;码:</td>
      <td>
        <input type="text" name="usercode"/>
      </td>
    </tr>
    <tr>
      <td>
        <input type="reset" value="重置">
      </td>
      <td>
        <input type="submit" value="提交">
      </td>
    </tr>
  </table>
</form>

</body>
</html>

2. servlet code

package com.example.demo_shagnke;

import javax.servlet.ServletException;
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.util.ArrayList;

public class usertttttt extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //在session中加入东西
   HttpSession session =  req.getSession();
   session.setAttribute("list","90");
   resp.sendRedirect("login111.jsp");
    }
}

3. Filter code

package com.example.demo_shagnke;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;

public class sessionFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
     //首先我们得明白一件事,那就是只有http中才有session这个对象
        HttpServletRequest request = (HttpServletRequest) servletRequest;//强转
        HttpServletResponse response =(HttpServletResponse) servletResponse;//强转

        HttpSession session = request.getSession();//获取sessio对象用于后面判断该用户是否已登录

        String list = (String) session.getAttribute("list");//获取session对象中的list数组变量

        //如果session对象中的list数组变量为空则,将用户踢到用户登录页面
        if(list==null){
           response.sendRedirect("login.jsp");
        }else{
            filterChain.doFilter(servletRequest,servletResponse);
        }

    }
}

** When I have time, I will sort out the following code.

Guess you like

Origin blog.csdn.net/qq_46586512/article/details/121400018