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