diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..73f69e0958611ac6e00bde95641f6699030ad235 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/artifacts/homework_war.xml b/.idea/artifacts/homework_war.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e455cc9725ac782d8e6d2c7ad17e9e9bd8dfc04 --- /dev/null +++ b/.idea/artifacts/homework_war.xml @@ -0,0 +1,14 @@ + + + $PROJECT_DIR$/target + + + homework + war + + + + + + + \ No newline at end of file diff --git a/.idea/artifacts/homework_war_exploded.xml b/.idea/artifacts/homework_war_exploded.xml new file mode 100644 index 0000000000000000000000000000000000000000..16c2ad39b7fb4d4c8e526e4c0e38b26854383593 --- /dev/null +++ b/.idea/artifacts/homework_war_exploded.xml @@ -0,0 +1,30 @@ + + + $PROJECT_DIR$/target/homework + + + true + homework + war + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000000000000000000000000000000000000..7b9d91b09e53f5e86286c3d0dfa58b146792978d --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f86397bd831957b518c1cc34263cc294da123438 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000000000000000000000000000000000000..712ab9d985c20018a0c97b93d2148ac1ffe588a5 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml new file mode 100644 index 0000000000000000000000000000000000000000..925cf775e7627962f099e92352647f55e3545b2d --- /dev/null +++ b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_11.xml b/.idea/libraries/Maven__junit_junit_4_11.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0ef22c4de228fe594539dd9decf724de45bf4e2 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml new file mode 100644 index 0000000000000000000000000000000000000000..287f3d065c0fb7b289f835795edca97fefc78232 --- /dev/null +++ b/.idea/libraries/Maven__mysql_mysql_connector_java_5_1_38.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000000000000000000000000000000000000..7957e463f3fbfcaf7a1d4b7eda9d12ea5781e3c5 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..48d56488f4bfc4923c916b55731f6aec0deb297a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5cd19b6dd322ed2ede8c657589a3294f0e27de2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/homework.iml b/homework.iml new file mode 100644 index 0000000000000000000000000000000000000000..4bef5f98a26a91c14ab7fda5e4e488d68b2e7ac1 --- /dev/null +++ b/homework.iml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..48a9ef09a4cd70835de710039de68b386f464087 --- /dev/null +++ b/pom.xml @@ -0,0 +1,70 @@ + + + + 4.0.0 + + org.example + homework + 1.0-SNAPSHOT + war + + homework Maven Webapp + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + mysql + mysql-connector-java + 5.1.38 + + + + + javax.servlet.jsp + jsp-api + 2.1 + + + + javax.servlet.jsp.jstl + jstl-api + 1.2 + + + + taglibs + standard + 1.1.2 + + + + + + + homework + + diff --git a/src/main/java/entity/User.java b/src/main/java/entity/User.java new file mode 100644 index 0000000000000000000000000000000000000000..a709a13813eda3dd7e0312cde1a6a7593f1ea44d --- /dev/null +++ b/src/main/java/entity/User.java @@ -0,0 +1,31 @@ +package entity; + +public class User { + int id; + String username; + String password; + + public int getId() { + return id; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public void setId(int id) { + this.id = id; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/servlet/LoginServlet.java b/src/main/java/servlet/LoginServlet.java new file mode 100644 index 0000000000000000000000000000000000000000..b1249a4850e110a18f08c7a0f6522b0f086d41c0 --- /dev/null +++ b/src/main/java/servlet/LoginServlet.java @@ -0,0 +1,96 @@ +package servlet; + +import javax.servlet.ServletContext; +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; +import java.io.PrintWriter; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.HashSet; +import java.util.Set; + +@WebServlet("/login") +public class LoginServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + response.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + + + String username = request.getParameter("username"); + String password = request.getParameter("password"); + + // 数据库连接参数 + String jdbcUrl = "jdbc:mysql://localhost:3306/myhomework?useSSL=false&useUnicode=true&characterEncoding=UTF-8"; + String dbUser = "root"; + String dbPassword = "root"; + + System.out.println("你好,这里是rebase分支测试"); + System.out.println("你好,这里是cherry-pick测试"); + System.out.println("cherry-pick测试"); + + try { + // 加载数据库驱动程序 + Class.forName("com.mysql.jdbc.Driver"); + + // 建立数据库连接 + Connection con = DriverManager.getConnection(jdbcUrl, dbUser, dbPassword); + + // 准备 SQL 查询 + String query = "SELECT * FROM user WHERE username=? AND password=?"; + PreparedStatement ps = con.prepareStatement(query); + ps.setString(1, username); + ps.setString(2, password); + + // 执行查询 + ResultSet rs = ps.executeQuery(); + + if (rs.next()) { + // 用户名和密码匹配 +// out.println("

Login successful!

"); + + // 将用户名添加到在线用户集合中 + ServletContext servletContext = request.getServletContext(); + Object onlineUsersObj = servletContext.getAttribute("onlineUsers"); + + // 检查在线用户对象是否为空以及类型是否正确 + if (onlineUsersObj != null && onlineUsersObj instanceof Set) { + Set onlineUsers = (Set) onlineUsersObj; + // 将用户名添加到在线用户集合中 + onlineUsers.add(username); + } else { + // 如果在线用户对象为空或类型不正确,则创建一个新的 HashSet,并将其存储在 ServletContext 中 + Set onlineUsers = new HashSet<>(); + onlineUsers.add(username); + servletContext.setAttribute("onlineUsers", onlineUsers); + } + + + // 使用重定向跳转到登录成功页面 + response.sendRedirect("loginSuccess.jsp?username=" + username); + } else { + // 用户名或密码错误 +// out.println("

Invalid username or password!

"); + // 使用请求转发重新加载 index.jsp 页面,并显示错误消息 + request.setAttribute("error", "true"); + request.getRequestDispatcher("index.jsp").forward(request, response); + } + + // 关闭连接 + con.close(); + } catch (Exception e) { + out.println("

Error: " + e.getMessage() + "

"); + } + } + + +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000000000000000000000000000000000..7dd1ef794cac2743b94e91c472a03133189db34f --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + + + Archetype Created Web Application + + + + listener.SessionListener + + + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 0000000000000000000000000000000000000000..910aff31d33dc5ee973961d5d6efa84991f3f2cc --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,89 @@ + + + + + + Login + + + + + + diff --git a/src/main/webapp/loginSuccess.jsp b/src/main/webapp/loginSuccess.jsp new file mode 100644 index 0000000000000000000000000000000000000000..bf83b188f4ba15aae81e34968b5f5fd9641718b0 --- /dev/null +++ b/src/main/webapp/loginSuccess.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="java.util.Set" %> + + + + + 在线用户列表 + + +<% + Set onlineUsers = (Set) application.getAttribute("onlineUsers"); + int totalUsers = onlineUsers.size(); +%> +

当前在线用户总数: <%= totalUsers %>

+

当前在线用户:

+
    + <% + for (String user : onlineUsers) { + %> +
  • <%= user %>
  • + <% } %> +
+ +
+ +
+ + diff --git a/target/homework/META-INF/MANIFEST.MF b/target/homework/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..26075f990698e0fd19aeef9373e312559c5cd330 --- /dev/null +++ b/target/homework/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Created-By: IntelliJ IDEA +Built-By: 16599 +Build-Jdk: version 17.0.10 + diff --git a/target/homework/WEB-INF/web.xml b/target/homework/WEB-INF/web.xml new file mode 100644 index 0000000000000000000000000000000000000000..7dd1ef794cac2743b94e91c472a03133189db34f --- /dev/null +++ b/target/homework/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + + + Archetype Created Web Application + + + + listener.SessionListener + + + diff --git a/target/homework/index.jsp b/target/homework/index.jsp new file mode 100644 index 0000000000000000000000000000000000000000..910aff31d33dc5ee973961d5d6efa84991f3f2cc --- /dev/null +++ b/target/homework/index.jsp @@ -0,0 +1,89 @@ + + + + + + Login + + + + + + diff --git a/target/homework/loginSuccess.jsp b/target/homework/loginSuccess.jsp new file mode 100644 index 0000000000000000000000000000000000000000..bf83b188f4ba15aae81e34968b5f5fd9641718b0 --- /dev/null +++ b/target/homework/loginSuccess.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="java.util.Set" %> + + + + + 在线用户列表 + + +<% + Set onlineUsers = (Set) application.getAttribute("onlineUsers"); + int totalUsers = onlineUsers.size(); +%> +

当前在线用户总数: <%= totalUsers %>

+

当前在线用户:

+
    + <% + for (String user : onlineUsers) { + %> +
  • <%= user %>
  • + <% } %> +
+ +
+ +
+ +