diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..16ee1c6509b59916e368ec1ed73b203e413c1f9b
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,91 @@
+
+ 4.0.0
+
+ com.dhy
+ rjkf
+ 1.0-SNAPSHOT
+
+ war
+
+
+
+
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ 5.0.0
+ provided
+
+
+
+
+ com.alibaba
+ druid
+ 1.2.21
+
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+
+
+
+ commons-dbutils
+ commons-dbutils
+ 1.7
+
+
+
+ com.mchange
+ mchange-commons-java
+ 0.3.0
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ 2.8.2
+
+
+
+
+
+
+
+
+ nexus-releases
+ nexus-releases
+ http://10.33.102.238:8080/nexus/content/repositories/releases/
+
+
+
+ nexus-snapshots
+ nexus-snapshots
+ >http://10.33.102.238:8080/nexus/content/repositories/snapshots/
+
+
+
+
+
+
+
+
+
diff --git a/rebase.md b/rebase.md
new file mode 100644
index 0000000000000000000000000000000000000000..3066c78559b570c95d1fdf63f31bc0c0df9248a0
--- /dev/null
+++ b/rebase.md
@@ -0,0 +1 @@
+初始数据(master分支和dev分支都有)(master分支添加的内容)
\ No newline at end of file
diff --git a/src/database.properties b/src/database.properties
new file mode 100644
index 0000000000000000000000000000000000000000..86d1fd5b2c66d4a22c36815dcdeaade20272f99a
--- /dev/null
+++ b/src/database.properties
@@ -0,0 +1,8 @@
+driver=com.mysql.jdbc.Driver
+url=jdbc:mysql://127.0.0.1:3306/rjkf?useUnicode=true&characterEncoding=UTF-8
+username=root
+password=1010
+initialSize=10
+maxActive=20
+minIdle=5
+maxWait=3000
diff --git a/src/main/java/Demo.java b/src/main/java/Demo.java
new file mode 100644
index 0000000000000000000000000000000000000000..165b7597e1b7893ea16fb480a1bddc5108360f83
--- /dev/null
+++ b/src/main/java/Demo.java
@@ -0,0 +1,6 @@
+public class Demo {
+ public void hello(){
+ System.out.println("hello");
+ }
+
+}
diff --git a/src/main/java/Implement_IOC/Guard.java b/src/main/java/Implement_IOC/Guard.java
new file mode 100644
index 0000000000000000000000000000000000000000..86e6fe71115e6f5c42a3644ef9f9061af25211f3
--- /dev/null
+++ b/src/main/java/Implement_IOC/Guard.java
@@ -0,0 +1,29 @@
+package Implement_IOC;
+
+public class Guard {
+ private Person person;
+// 构造函数注入
+// public Guard(Person person) {
+// this.person = person;
+// }
+
+// 属性注入
+// public void setPerson(Person person) {
+// this.person = person;
+// }
+// public void ask() {
+// System.out.println("来者何人?");
+// System.out.println(person.getName());
+// }
+// 接口注入
+ private IAnswer answer;
+
+ public void setAnswer(IAnswer answer) {
+ this.answer = answer;
+ }
+
+ public void ask() {
+ System.out.println("来者何人?");
+ System.out.println(answer.answer());
+ }
+}
diff --git a/src/main/java/Implement_IOC/IAnswer.java b/src/main/java/Implement_IOC/IAnswer.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e60ece0c01ebc599c6fd959c55f2f805ebc5b69
--- /dev/null
+++ b/src/main/java/Implement_IOC/IAnswer.java
@@ -0,0 +1,5 @@
+package Implement_IOC;
+
+public interface IAnswer {
+ String answer();
+}
diff --git a/src/main/java/Implement_IOC/Person.java b/src/main/java/Implement_IOC/Person.java
new file mode 100644
index 0000000000000000000000000000000000000000..37573026c11985c3fe6abc05cbad9edeaa028f12
--- /dev/null
+++ b/src/main/java/Implement_IOC/Person.java
@@ -0,0 +1,14 @@
+package Implement_IOC;
+
+public class Person {
+ private String name;
+
+ public Person(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
+
diff --git a/src/main/java/Implement_IOC/PersonImpl.java b/src/main/java/Implement_IOC/PersonImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e24ba2a724c8f98e32330a3fb77e7dfff48c9726
--- /dev/null
+++ b/src/main/java/Implement_IOC/PersonImpl.java
@@ -0,0 +1,14 @@
+package Implement_IOC;
+
+public class PersonImpl implements IAnswer{
+ private String name;
+
+ public PersonImpl(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String answer() {
+ return "墨者" + name;
+ }
+}
diff --git a/src/main/java/Listener/SessionListener.java b/src/main/java/Listener/SessionListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..73afec2f3311aed1097564f3c239813272c8049e
--- /dev/null
+++ b/src/main/java/Listener/SessionListener.java
@@ -0,0 +1,35 @@
+package Listener;
+
+import jakarta.servlet.annotation.WebListener;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
+@WebListener
+public class SessionListener implements HttpSessionListener {
+ private static int activeSessions = 0;
+ private static int loggedInUsers = 0;
+ @Override
+ public void sessionCreated(HttpSessionEvent event) {
+ // 会话创建时,增加在线人数
+ activeSessions++;
+ }
+ @Override
+ public void sessionDestroyed(HttpSessionEvent event) {
+ // 会话销毁时,减少在线人数,并判断是否为登录用户
+ if (event.getSession().getAttribute("user") != null) {
+ loggedInUsers--;
+ }
+ activeSessions--;
+ }
+ public static void userLoggedIn() {
+ loggedInUsers++;
+ }
+ public static void userLoggedOut() {
+ loggedInUsers--;
+ }
+ public static int getActiveSessions() {
+ return activeSessions;
+ }
+ public static int getLoggedInUsers() {
+ return loggedInUsers;
+ }
+}
diff --git a/src/main/java/controller/ManagerLoginController.java b/src/main/java/controller/ManagerLoginController.java
new file mode 100644
index 0000000000000000000000000000000000000000..a51b7fbfd02beb4d2dfb181ff42a14b8a96f5b3e
--- /dev/null
+++ b/src/main/java/controller/ManagerLoginController.java
@@ -0,0 +1,39 @@
+package controller;
+
+import entity.Manager;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import service.ManagerService;
+import service.impl.ManagerServiceImpl;
+
+import java.io.IOException;
+
+@WebServlet("/manager/ManagerLoginController")
+public class ManagerLoginController extends HttpServlet {
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+// req.setCharacterEncoding("UTF-8");
+// resp.setContentType("text/html;charset=UTF-8");
+ String username = req.getParameter("username");
+ String password = req.getParameter("password");
+ ManagerService managerService = new ManagerServiceImpl();
+ Manager manager = managerService.login(username,password);
+ System.out.println(username);
+ if (manager!=null){
+ HttpSession session = req.getSession();
+ session.setAttribute("manager",manager);
+ resp.sendRedirect(req.getContextPath()+"/manager/safe/ShowAllUserController");
+ }else {
+ resp.sendRedirect(req.getContextPath()+"/ManagerLogin.html");
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ doPost(req, resp);
+ }
+}
diff --git a/src/main/java/controller/ShowAllUserController.java b/src/main/java/controller/ShowAllUserController.java
new file mode 100644
index 0000000000000000000000000000000000000000..32ea8e5f32f8112006b4bcc98dd3c47cb588519e
--- /dev/null
+++ b/src/main/java/controller/ShowAllUserController.java
@@ -0,0 +1,30 @@
+package controller;
+
+import entity.User;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import service.UserService;
+import service.impl.UserServiceImpl;
+
+import java.io.IOException;
+import java.util.List;
+
+@WebServlet("/manager/safe/ShowAllUserController")
+public class ShowAllUserController 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 {
+
+ UserService userService = new UserServiceImpl();
+ List users = userService.showAllUser();
+ req.setAttribute("users",users);
+ req.getRequestDispatcher("/manager/safe/showAllUserServlet").forward(req,resp);
+ }
+}
+
diff --git a/src/main/java/dao/ManagerDao.java b/src/main/java/dao/ManagerDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..07b290526d3deade0b5a28540a77b457bc69211d
--- /dev/null
+++ b/src/main/java/dao/ManagerDao.java
@@ -0,0 +1,7 @@
+package dao;
+
+import entity.Manager;
+
+public interface ManagerDao {
+ public Manager select(String username);
+}
diff --git a/src/main/java/dao/UserDao.java b/src/main/java/dao/UserDao.java
new file mode 100644
index 0000000000000000000000000000000000000000..4936a42883e9de34a1b4489f73fc58d0bb311f50
--- /dev/null
+++ b/src/main/java/dao/UserDao.java
@@ -0,0 +1,10 @@
+package dao;
+
+import entity.User;
+
+import java.util.List;
+
+public interface UserDao {
+ public User select(String username);
+ public List selectAll();
+}
diff --git a/src/main/java/dao/impl/ManagerDaoImpl.java b/src/main/java/dao/impl/ManagerDaoImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..73d1be8e66e60761175bb2b75f3c85efd392e4c1
--- /dev/null
+++ b/src/main/java/dao/impl/ManagerDaoImpl.java
@@ -0,0 +1,24 @@
+package dao.impl;
+
+import dao.ManagerDao;
+import entity.Manager;
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.handlers.BeanHandler;
+import utils.DbUtils;
+
+import java.sql.SQLException;
+
+public class ManagerDaoImpl implements ManagerDao {
+ private QueryRunner queryRunner = new QueryRunner();
+ @Override
+ public Manager select(String username) {
+ try {
+ Manager manager=queryRunner.query(DbUtils.getConnection(),"select * from manager where username = ?;",new BeanHandler(Manager.class),username);
+ return manager;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
+
diff --git a/src/main/java/dao/impl/UserDaoImpl.java b/src/main/java/dao/impl/UserDaoImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a3a147ef6232c1bc8c4419e9d61bd8568143c98
--- /dev/null
+++ b/src/main/java/dao/impl/UserDaoImpl.java
@@ -0,0 +1,36 @@
+package dao.impl;
+
+import dao.UserDao;
+import entity.User;
+import org.apache.commons.dbutils.QueryRunner;
+import org.apache.commons.dbutils.handlers.BeanHandler;
+import org.apache.commons.dbutils.handlers.BeanListHandler;
+import utils.DbUtils;
+
+import java.sql.SQLException;
+import java.util.List;
+
+public class UserDaoImpl implements UserDao {
+ private QueryRunner queryRunner = new QueryRunner();
+ @Override
+ public User select(String username) {
+ try {
+ User user=queryRunner.query(DbUtils.getConnection(),"select * from user where username = ?;",new BeanHandler(User.class),username);
+ return user;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public List selectAll() {
+ try {
+ List users=queryRunner.query(DbUtils.getConnection(),"select * from user;",new BeanListHandler(User.class));
+ return users;
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/entity/Manager.java b/src/main/java/entity/Manager.java
new file mode 100644
index 0000000000000000000000000000000000000000..6303a3d9612a46b9eab619df156e965312f0791a
--- /dev/null
+++ b/src/main/java/entity/Manager.java
@@ -0,0 +1,30 @@
+package entity;
+
+public class Manager {
+ private String username;
+ private String password;
+
+ public Manager(String username, String password) {
+ this.username = username;
+ this.password = password;
+ }
+
+ public Manager() {
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
diff --git a/src/main/java/entity/User.java b/src/main/java/entity/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..36ede7f640efc5a12172ca9f503aece55f32f687
--- /dev/null
+++ b/src/main/java/entity/User.java
@@ -0,0 +1,81 @@
+package entity;
+public class User {
+
+ private int id;
+ private String username;
+ private String password;
+ private String name;
+ private String sex;
+ private String hometown;
+ public User() {
+ }
+
+ public User(int id, String username, String password, String name, String sex, String hometown) {
+ this.id = id;
+ this.username = username;
+ this.password = password;
+ this.name = name;
+ this.sex = sex;
+ this.hometown = hometown;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "id=" + id +
+ ", username='" + username + '\'' +
+ ", password='" + password + '\'' +
+ ", name='" + name + '\'' +
+ ", sex='" + sex + '\'' +
+ ", hometown='" + hometown + '\'' +
+ '}';
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+
+ public String getHometown() {
+ return hometown;
+ }
+
+ public void setHometown(String hometown) {
+ this.hometown = hometown;
+ }
+}
diff --git a/src/main/java/filter/CheckFilter.java b/src/main/java/filter/CheckFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f916df5e6a137ff41fae470c6f44b40dbd84cb3
--- /dev/null
+++ b/src/main/java/filter/CheckFilter.java
@@ -0,0 +1,34 @@
+package filter;
+
+import entity.Manager;
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebFilter;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+
+import java.io.IOException;
+@WebFilter("/manager/safe/*")
+public class CheckFilter implements Filter {
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ Filter.super.init(filterConfig);
+ }
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
+ HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
+ HttpSession session = httpServletRequest.getSession();
+ Manager manager = (Manager)session.getAttribute("manager");
+ if (manager!=null){
+ filterChain.doFilter(httpServletRequest,httpServletResponse);
+ }else {
+ httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/ManagerLogin.html");
+ }
+ }
+
+ @Override
+ public void destroy() {
+ Filter.super.destroy();
+ }
+}
diff --git a/src/main/java/filter/EncodingFilter.java b/src/main/java/filter/EncodingFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..13059736167259ef08aeab10280253c325aef774
--- /dev/null
+++ b/src/main/java/filter/EncodingFilter.java
@@ -0,0 +1,25 @@
+package filter;
+
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebFilter;
+
+import java.io.IOException;
+@WebFilter("/*")
+public class EncodingFilter implements Filter {
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ Filter.super.init(filterConfig);
+ }
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ servletRequest.setCharacterEncoding("UTF-8");
+ servletResponse.setContentType("text/html;charset=UTF-8");
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+
+ @Override
+ public void destroy() {
+ Filter.super.destroy();
+ }
+}
diff --git a/src/main/java/filter/LoginFilter.java b/src/main/java/filter/LoginFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a5eee28de91545602fe3fda270ad494b280330b
--- /dev/null
+++ b/src/main/java/filter/LoginFilter.java
@@ -0,0 +1,37 @@
+package filter;
+
+import entity.User;
+import jakarta.servlet.*;
+import jakarta.servlet.annotation.WebFilter;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+
+import java.io.IOException;
+
+@WebFilter("/main.jsp")
+public class LoginFilter implements Filter {
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ Filter.super.init(filterConfig);
+ }
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
+ HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
+ HttpSession session = httpServletRequest.getSession();
+ User user = (User)session.getAttribute("user");
+ if (user!=null){
+ filterChain.doFilter(httpServletRequest,httpServletResponse);
+ }else {
+ httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/login.jsp");
+ }
+ }
+
+ @Override
+ public void destroy() {
+ Filter.super.destroy();
+ }
+}
+
diff --git a/src/main/java/service/ManagerService.java b/src/main/java/service/ManagerService.java
new file mode 100644
index 0000000000000000000000000000000000000000..625a98db8dd7ff6165665b2e086b557bc6dd3779
--- /dev/null
+++ b/src/main/java/service/ManagerService.java
@@ -0,0 +1,7 @@
+package service;
+
+import entity.Manager;
+
+public interface ManagerService {
+ public Manager login(String username,String password);
+}
diff --git a/src/main/java/service/UserService.java b/src/main/java/service/UserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..75f5518ae6662198f166be0b3f676f7740b31a4f
--- /dev/null
+++ b/src/main/java/service/UserService.java
@@ -0,0 +1,10 @@
+package service;
+
+import entity.User;
+
+import java.util.List;
+
+public interface UserService {
+ public User login(String username, String password);
+ public List showAllUser();
+}
diff --git a/src/main/java/service/impl/ManagerServiceImpl.java b/src/main/java/service/impl/ManagerServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..24f1dafdd84d5a89ca41fc1c847f081f5273ccbe
--- /dev/null
+++ b/src/main/java/service/impl/ManagerServiceImpl.java
@@ -0,0 +1,29 @@
+package service.impl;
+
+import dao.ManagerDao;
+import dao.impl.ManagerDaoImpl;
+import entity.Manager;
+import service.ManagerService;
+import utils.DbUtils;
+
+public class ManagerServiceImpl implements ManagerService {
+ private ManagerDao managerDao = new ManagerDaoImpl();
+ @Override
+ public Manager login(String username, String password) {
+ Manager manager = null;
+ try {
+ DbUtils.begin();
+ Manager temp = managerDao.select((username));
+ if (temp!=null){
+ if (temp.getPassword().equals(password)){
+ manager = temp;
+ }
+ DbUtils.commit();
+ }
+ } catch (Exception e) {
+ DbUtils.rollback();
+ throw new RuntimeException(e);
+ }
+ return manager;
+ }
+}
diff --git a/src/main/java/service/impl/UserServiceImpl.java b/src/main/java/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..98c6dce730f0294d7c17beb96d994f0e849def92
--- /dev/null
+++ b/src/main/java/service/impl/UserServiceImpl.java
@@ -0,0 +1,49 @@
+package service.impl;
+
+import dao.UserDao;
+import dao.impl.UserDaoImpl;
+import entity.User;
+import service.UserService;
+import utils.DbUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UserServiceImpl implements UserService {
+ private UserDao userDao = new UserDaoImpl();
+ @Override
+ public User login(String username, String password) {
+ User user = null;
+ try {
+ DbUtils.begin();
+ User temp = userDao.select((username));
+ if (temp!=null){
+ if (temp.getPassword().equals(password)){
+ user = temp;
+ }
+ DbUtils.commit();
+ }
+ } catch (Exception e) {
+ DbUtils.rollback();
+ throw new RuntimeException(e);
+ }
+ return user;
+ }
+
+ @Override
+ public List showAllUser() {
+ List users = new ArrayList<>();
+ try {
+ DbUtils.begin();
+ List temps = userDao.selectAll();
+ if (temps!=null){
+ users = temps;
+ }
+ DbUtils.commit();
+ } catch (Exception e) {
+ DbUtils.rollback();
+ throw new RuntimeException(e);
+ }
+ return users;
+ }
+}
diff --git a/src/main/java/servlet/LoginServlet.java b/src/main/java/servlet/LoginServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..44f383d5b904c8a6b09c7b5c312f8453ccd90de1
--- /dev/null
+++ b/src/main/java/servlet/LoginServlet.java
@@ -0,0 +1,44 @@
+package servlet;
+
+import Listener.SessionListener;
+import entity.User;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import service.UserService;
+import service.impl.UserServiceImpl;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+@WebServlet("/login")
+public class LoginServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+/* req.setCharacterEncoding("UTF-8");
+ resp.setContentType("text/html;charset=UTF-8");*/
+ String username = req.getParameter("username");
+ String password = req.getParameter("password");
+ UserService userService = new UserServiceImpl();
+ User user = userService.login(username,password);
+ PrintWriter printWriter = resp.getWriter();
+ if (user!=null){
+ HttpSession session = req.getSession();
+// session.setMaxInactiveInterval(10);
+ session.setAttribute("user",user);
+ SessionListener.userLoggedIn();
+ resp.sendRedirect(req.getContextPath() + "/main.jsp");
+
+ }else {
+ printWriter.println("用户名和密码不匹配");
+ }
+
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ doGet(req, resp);
+ }
+}
diff --git a/src/main/java/servlet/LogoutServlet.java b/src/main/java/servlet/LogoutServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..3ce7a5246252575c0b7fe0e8a27d7433e20b2e66
--- /dev/null
+++ b/src/main/java/servlet/LogoutServlet.java
@@ -0,0 +1,28 @@
+package servlet;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+
+import java.io.IOException;
+@WebServlet("/LogoutServlet")
+public class LogoutServlet extends HttpServlet {
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ HttpSession session = request.getSession();
+ if (session != null && session.getAttribute("user") != null) {
+// SessionListener.userLoggedOut();
+ session.invalidate(); // 清除会话
+ }
+ response.sendRedirect("login.jsp"); // 重定向到登录页面
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ doGet(req, resp);
+ }
+
+}
diff --git a/src/main/java/servlet/ShowAllUserServlet.java b/src/main/java/servlet/ShowAllUserServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..37ed20936a3e5dcda0d1c312999f0da44fac88b8
--- /dev/null
+++ b/src/main/java/servlet/ShowAllUserServlet.java
@@ -0,0 +1,35 @@
+package servlet;
+
+import entity.User;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+@WebServlet("/manager/safe/showAllUserServlet")
+public class ShowAllUserServlet extends HttpServlet {
+ @Override
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+/* req.setCharacterEncoding("UTF-8");
+ resp.setContentType("text/html;charset=UTF-8");*/
+ List users = (List) req.getAttribute("users");
+ PrintWriter pr = resp.getWriter();
+
+ pr.println("id   姓名        家乡          username      password");
+ pr.write("
");
+ for (User user:users){
+ pr.println(user.getId()+"   "+user.getName()+"   "+user.getHometown()+"          "+user.getUsername()+"            "+user.getPassword());
+ pr.write("
");
+ }
+
+ }
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ doPost(req, resp);
+ }
+}
diff --git a/src/main/java/servlet/TServlet.java b/src/main/java/servlet/TServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..96c9e26bd53d8b00b86fd8ef557a820bc1194ac6
--- /dev/null
+++ b/src/main/java/servlet/TServlet.java
@@ -0,0 +1,16 @@
+package servlet;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+@WebServlet(value = "/test")
+public class TServlet extends HttpServlet {
+ @Override
+ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ System.out.println("123");
+ }
+}
diff --git a/src/main/java/utils/DbUtils.java b/src/main/java/utils/DbUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..f78a157d63119982a7f2a495755a388c5767172b
--- /dev/null
+++ b/src/main/java/utils/DbUtils.java
@@ -0,0 +1,91 @@
+package utils;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidDataSourceFactory;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+public class DbUtils {
+ private static DruidDataSource ds;
+ private static final ThreadLocal THREAD_LOCAL = new ThreadLocal<>();
+ static {
+ Properties properties = new Properties();
+ InputStream is = DbUtils.class.getResourceAsStream("/database.properties");
+// InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("/database.properties");
+ try {
+ properties.load(is);
+ ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ public static Connection getConnection(){
+ Connection connection = THREAD_LOCAL.get();
+ try {
+ if (connection==null){
+ connection = ds.getConnection();
+ THREAD_LOCAL.set(connection);
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ return connection;
+ }
+
+ public static void begin() {
+ Connection connection = null;
+ try {
+ connection = getConnection();
+ connection.setAutoCommit(false);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void commit() {
+ Connection connection = null;
+ try {
+ connection = getConnection();
+ connection.commit();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ } finally {
+ closeAll(connection,null,null);
+ }
+ }
+
+ public static void rollback(){
+ Connection connection = null;
+ try {
+ connection = getConnection();
+ connection.commit();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ } finally {
+ closeAll(connection,null,null);
+ }
+ }
+ public static void closeAll(Connection connection, Statement statement, ResultSet resultSet){
+ try {
+ if (resultSet!=null){
+ resultSet.close();
+ }
+ if (statement!=null){
+ statement.close();
+ }
+ if (connection!=null){
+ connection.close();
+ THREAD_LOCAL.remove();
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+}
diff --git a/src/main/webapp/ManagerLogin.html b/src/main/webapp/ManagerLogin.html
new file mode 100644
index 0000000000000000000000000000000000000000..17c521d44e90a14f92f491ad1b79d0915e232636
--- /dev/null
+++ b/src/main/webapp/ManagerLogin.html
@@ -0,0 +1,35 @@
+
+
+
+
+ 登录
+
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d80081d1318531b6c30eaf0d748bf80a0b2e042a
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/src/main/webapp/background.jpg b/src/main/webapp/background.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..898a9b4a497891037c371f443f58c75aa2ec4632
Binary files /dev/null and b/src/main/webapp/background.jpg differ
diff --git a/src/main/webapp/display.jsp b/src/main/webapp/display.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..f1ddf308541d6c6b696f64fb9e495755253e89a1
--- /dev/null
+++ b/src/main/webapp/display.jsp
@@ -0,0 +1,17 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: DD
+ Date: 2024/4/19
+ Time: 21:47
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="true"%>
+
+
+ 在线人数和登录用户统计
+
+
+当前在线人数:<%= Listener.SessionListener.getActiveSessions() %>
+当前登录用户数:<%= Listener.SessionListener.getLoggedInUsers() %>
+
+
diff --git a/src/main/webapp/login.jsp b/src/main/webapp/login.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..f9f433b320d0e1e55121d9bdf54e7fe7612ea59d
--- /dev/null
+++ b/src/main/webapp/login.jsp
@@ -0,0 +1,43 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: DD
+ Date: 2024/4/4
+ Time: 19:54
+ To change this template use File | Settings | File Templates.
+--%>
+
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="true"%>
+
+
+
+ 登录
+
+
+
+
+
+
diff --git a/src/main/webapp/main.jsp b/src/main/webapp/main.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..4a19b75a2c73dc75212fe725ff73ef64f4286b4f
--- /dev/null
+++ b/src/main/webapp/main.jsp
@@ -0,0 +1,19 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: DD
+ Date: 2024/4/4
+ Time: 22:55
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" session="true"%>
+
+
+ Title
+
+
+欢迎你!${sessionScope.user.getName()}!
+
+
+
diff --git a/src/main/webapp/password_icon.png b/src/main/webapp/password_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..c5216b0816909bb2814f776e532b054ca73ebdfb
Binary files /dev/null and b/src/main/webapp/password_icon.png differ
diff --git a/src/main/webapp/style.css b/src/main/webapp/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..13c9df16cc423e1806b3e91b306a76a6a7faa395
--- /dev/null
+++ b/src/main/webapp/style.css
@@ -0,0 +1,49 @@
+body{
+ margin: 0;
+ padding: 0;
+ font-family: "sans-serif";
+ background-image: url(background.jpg);
+ background-size: cover;
+ background-position: center;
+ overflow: hidden;
+}
+.clearfix:after {
+ content: "";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+.loginBox{
+ width:350px;
+ height: 370px;
+ box-shadow: 0 0 3px 0 rgba(0,0,0,0.3);
+ background: rgba(247, 243, 243,0.4);
+ padding: 20px;
+ margin: 8% auto 0;
+ text-align: center;
+ border-radius: 20px;
+}
+.text1{
+ color: #D19275;
+}
+input{
+ background-color: transparent;
+ height: 40px;
+ width: 150px;
+ border-radius: 5px;
+ border: 1px solid black;
+ padding: 0;
+}
+.submit {
+ width: 150px;
+ height: 30px;
+ margin-bottom: 10px;
+ border: none;
+ border-radius: 15px;
+ background: linear-gradient(to right,#FFA07A,#800000);
+ cursor:pointer;
+}
+.xz{
+ text-decoration: none;
+}
diff --git a/src/main/webapp/user_icon.png b/src/main/webapp/user_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b819e861dea11f14fcd45352f385c60a3fae827
Binary files /dev/null and b/src/main/webapp/user_icon.png differ
diff --git a/src/test/java/TestHello.java b/src/test/java/TestHello.java
new file mode 100644
index 0000000000000000000000000000000000000000..c887696e18ccc7a154d8a71d66ffd9548a2a4088
--- /dev/null
+++ b/src/test/java/TestHello.java
@@ -0,0 +1,9 @@
+import org.junit.Test;
+
+public class TestHello {
+ @Test
+ public void test(){
+ Demo a = new Demo();
+ a.hello();
+ }
+}
diff --git a/src/test/java/TestIOC.java b/src/test/java/TestIOC.java
new file mode 100644
index 0000000000000000000000000000000000000000..02a76daf71accfd2e655beb8ca010fd59f7e7057
--- /dev/null
+++ b/src/test/java/TestIOC.java
@@ -0,0 +1,22 @@
+import Implement_IOC.Guard;
+import Implement_IOC.PersonImpl;
+import org.junit.Test;
+
+public class TestIOC {
+ @Test
+ public void test(){
+// 构造函数注入
+// Guard guard1 = new Guard(new Person("革离"));
+// guard1.ask();
+
+// 属性注入
+// Guard guard2 = new Guard();
+// guard2.setPerson(new Person("革离"));
+// guard2.ask();
+
+ // 接口注入
+ Guard guard3 = new Guard();
+ guard3.setAnswer(new PersonImpl("革离"));
+ guard3.ask();
+ }
+}
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_6.\345\256\236\347\216\260IOC.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_6.\345\256\236\347\216\260IOC.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..3df1728f6547fd6f56e285c70f34490023220530
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_6.\345\256\236\347\216\260IOC.pdf" differ
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Filter.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Filter.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..9b39a44d67863ac5f902fc9e5053289b14245f79
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Filter.pdf" differ
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Listener.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Listener.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..da798fde97f494e3910b9cd22b33e68c69e4ef93
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_Listener.pdf" differ
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..75e988f07c61384d68e4ae05474793034045157a
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.pdf" differ
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..f72ae8fe40e49a553de13f046e9485f29ad8020f
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.pdf" differ
diff --git "a/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.pdf" "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..419a5ed3d647a1369cb4e7b31485cf27f6b78ea4
Binary files /dev/null and "b/\344\275\234\344\270\232\346\226\207\346\241\243/32309249_\344\273\243\346\265\251\351\230\263_\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.pdf" differ