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

1. 前端

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="login" method="POST">
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit" value="提交">
    </form>
</body>
</html>

2. 后端登录

java 复制代码
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");
   }
}

3. 后端检验页面

java 复制代码
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("<div>用户名: %s</div>", userName));
     html.append(String.format("<div>loginCount: %d</div>", loginCount));
     resp.getWriter().write(html.toString());
     }
}
相关推荐
上海安当技术3 天前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
Mr. zhihao3 天前
Jenkins 从节点连不上主节点?一次网络排查全记录 + 机器间通信“拦截层“全景讲解
网络·servlet·jenkins
米码收割机5 天前
【javaEE】Java Servlet JSP 影院票务管理系统(源码+文档)【独一无二】
java·servlet·java-ee
Hacker_xingchen7 天前
手把手教你配置Jenkins自动化邮件通知
自动化测试·软件测试·servlet·自动化·jenkins
fīɡЙtīиɡ ℡8 天前
内存泄漏产生的原因
java·spring·servlet
码上有光10 天前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
圣光SG11 天前
Servlet学习笔记
笔记·学习·servlet
智码看视界15 天前
Tomcat架构深度拆解:Connector和Container到底怎么配合的?
java·servlet·架构·tomcat·web服务器
qq_4523962319 天前
第三篇:《Jenkins Pipeline as Code:Declarative Pipeline 深度实战》
java·servlet·jenkins
AIOps打工人1 个月前
`create_agent` 没报错,但 Agent 就是不调工具
java·开发语言·servlet