• servlet实现登录功能【当用户当前未登陆,跳转登录页面才能访问,若已经登录了,才可以直接访问】


    1. 前端

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
    head>
    <body>
        <form action="login" method="POST">
            <input type="text" name="username">
            <input type="password" name="password">
            <input type="submit" value="提交">
        form>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2. 后端登录

    package EnableUserLogin;
    
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpSession;
    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 java.io.IOException;
    @WebServlet("/login")
    public class LoginServlet extends HttpServlet {
         @Override
         protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
               resp.setContentType("text/html; charset=utf-8");
               // 1. 获取到用户提交的用户名和密码
               String username = req.getParameter("username");
               String password = req.getParameter("password");
               // 2. 判定用户名密码是否正确
               if (!username.equals("admin") || !password.equals("123")) {
                     // 登陆失败
                     resp.getWriter().write("登陆失败");
                     return;
             }
               // 登陆成功
               System.out.println("登陆成功");
               // 设置 Session
               HttpSession session = req.getSession(true);
               session.setAttribute("username", "admin");
               session.setAttribute("loginCount", "0");
               resp.sendRedirect("index");
       }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    3. 后端检验页面

    package EnableUserLogin;
    
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpSession;
    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 java.io.IOException;
    
    
    @WebServlet("/index")
    public class IndexServlet extends HttpServlet {
         @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         resp.setContentType("text/html; charset=utf-8");
         // 1. 判定当前用户是否已经登陆
         HttpSession session = req.getSession(false);
         if (session == null) {
             // 用户没有登陆, 重定向到 login.html
             resp.sendRedirect("login.html");
             return;
          }
         // 2. 如果已经登陆, 则从 Session 中取出访问次数数据
         String userName = (String)session.getAttribute("username");
         String countString = (String)session.getAttribute("loginCount");
         int loginCount = Integer.parseInt(countString);
         loginCount += 1;
         session.setAttribute("loginCount", loginCount + "");
         // 3. 展示到页面上.
         StringBuilder html = new StringBuilder();
         html.append(String.format("
    用户名: %s
    "
    , userName)); html.append(String.format("
    loginCount: %d
    "
    , loginCount)); resp.getWriter().write(html.toString()); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    Python3中使用argparse模块解析命令行参数
    docker logs 命令
    Oracle自治事务示例演示
    红帽Linux的安装和部署
    统计学习方法 隐马尔可夫模型
    Spring Boot 中的异步调用
    解决合宙Esp32c3简约版不能Arduino ide开发的问题
    [深度学习论文笔记]医学图像分割U型网络大合集
    uni-app 背景音频 熄屏或者退回桌面之后不在播放
    【Linux】之Centos7卸载KVM虚拟化服务
  • 原文地址:https://blog.csdn.net/m0_63571404/article/details/132919392