diff --git a/README.md b/README.md
index a32f1c55ee5c8b3a0ca9e04e902526864f0e2527..902fbc5dd0fa40202f4646ab12f6faca5c8cb661 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,9 @@
#### 完成内容列表
1. 搭建环境
-2. xxxx
-3. xxxx
+2. FORK到自己的仓库
+3. 修改README文件并提交3.12
+44444555551
#### 补充说明
diff --git a/homework2/.idea/compiler.xml b/homework2/.idea/compiler.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4e86073a329993e86957b74e5413f00c738216b5
--- /dev/null
+++ b/homework2/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/dataSources.xml b/homework2/.idea/dataSources.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3fa59cfec64b68064153e0fb4a45760dd0cfb7bd
--- /dev/null
+++ b/homework2/.idea/dataSources.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ mysql
+ true
+ com.mysql.jdbc.Driver
+ jdbc:mysql://localhost:3306/homework
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/dataSources/bd83fa1f-898b-4df5-b522-1e459a43f1fc.xml b/homework2/.idea/dataSources/bd83fa1f-898b-4df5-b522-1e459a43f1fc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b24608fa50117e2d53806985e208152f46aa48c
--- /dev/null
+++ b/homework2/.idea/dataSources/bd83fa1f-898b-4df5-b522-1e459a43f1fc.xml
@@ -0,0 +1,818 @@
+
+
+
+
+ 5.5.62
+ InnoDB
+ InnoDB
+ lower/lower
+
+
+ utf8_unicode_ci
+
+
+ 1
+ utf8_general_ci
+
+
+ utf8_general_ci
+
+
+ utf8_general_ci
+
+
+ utf8_general_ci
+
+
+ utf8_general_ci
+
+
+ armscii8
+ 0
+
+
+ armscii8
+ 1
+
+
+ ascii
+ 0
+
+
+ ascii
+ 1
+
+
+ big5
+ 0
+
+
+ big5
+ 1
+
+
+ binary
+ 1
+
+
+ cp1250
+ 0
+
+
+ cp1250
+ 0
+
+
+ cp1250
+ 0
+
+
+ cp1250
+ 1
+
+
+ cp1250
+ 0
+
+
+ cp1251
+ 0
+
+
+ cp1251
+ 0
+
+
+ cp1251
+ 1
+
+
+ cp1251
+ 0
+
+
+ cp1251
+ 0
+
+
+ cp1256
+ 0
+
+
+ cp1256
+ 1
+
+
+ cp1257
+ 0
+
+
+ cp1257
+ 1
+
+
+ cp1257
+ 0
+
+
+ cp850
+ 0
+
+
+ cp850
+ 1
+
+
+ cp852
+ 0
+
+
+ cp852
+ 1
+
+
+ cp866
+ 0
+
+
+ cp866
+ 1
+
+
+ cp932
+ 0
+
+
+ cp932
+ 1
+
+
+ dec8
+ 0
+
+
+ dec8
+ 1
+
+
+ eucjpms
+ 0
+
+
+ eucjpms
+ 1
+
+
+ euckr
+ 0
+
+
+ euckr
+ 1
+
+
+ gb2312
+ 0
+
+
+ gb2312
+ 1
+
+
+ gbk
+ 0
+
+
+ gbk
+ 1
+
+
+ geostd8
+ 0
+
+
+ geostd8
+ 1
+
+
+ greek
+ 0
+
+
+ greek
+ 1
+
+
+ hebrew
+ 0
+
+
+ hebrew
+ 1
+
+
+ hp8
+ 0
+
+
+ hp8
+ 1
+
+
+ keybcs2
+ 0
+
+
+ keybcs2
+ 1
+
+
+ koi8r
+ 0
+
+
+ koi8r
+ 1
+
+
+ koi8u
+ 0
+
+
+ koi8u
+ 1
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 0
+
+
+ latin1
+ 1
+
+
+ latin2
+ 0
+
+
+ latin2
+ 0
+
+
+ latin2
+ 0
+
+
+ latin2
+ 1
+
+
+ latin2
+ 0
+
+
+ latin5
+ 0
+
+
+ latin5
+ 1
+
+
+ latin7
+ 0
+
+
+ latin7
+ 0
+
+
+ latin7
+ 1
+
+
+ latin7
+ 0
+
+
+ macce
+ 0
+
+
+ macce
+ 1
+
+
+ macroman
+ 0
+
+
+ macroman
+ 1
+
+
+ sjis
+ 0
+
+
+ sjis
+ 1
+
+
+ swe7
+ 0
+
+
+ swe7
+ 1
+
+
+ tis620
+ 0
+
+
+ tis620
+ 1
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 1
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ucs2
+ 0
+
+
+ ujis
+ 0
+
+
+ ujis
+ 1
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 1
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf16
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 1
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf32
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 1
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 1
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+ utf8mb4
+ 0
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/encodings.xml b/homework2/.idea/encodings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e79da7eced123ad640ac28b12dd7a80ede958336
--- /dev/null
+++ b/homework2/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/inspectionProfiles/Project_Default.xml b/homework2/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6560a98983ec708cf9d8b5c5c3776d7bd39c475b
--- /dev/null
+++ b/homework2/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/inspectionProfiles/profiles_settings.xml b/homework2/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2885a19d6ce7d3aa641e5856d48b16fd9f15c249
--- /dev/null
+++ b/homework2/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/misc.xml b/homework2/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..65c89e1f637b5c9bfb90f4b3b536fbacc5d3ee6f
--- /dev/null
+++ b/homework2/.idea/misc.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Android
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/sqldialects.xml b/homework2/.idea/sqldialects.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e3fa5f3b460293421327eafa657e807b3cf2d3b
--- /dev/null
+++ b/homework2/.idea/sqldialects.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/uiDesigner.xml b/homework2/.idea/uiDesigner.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e96534fb27b68192f27f985d3879e173ec77adb8
--- /dev/null
+++ b/homework2/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/.idea/vcs.xml b/homework2/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b8635858dc7ad44b93df54b762707ce49eefc
--- /dev/null
+++ b/homework2/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/homework2/homework2.iml b/homework2/homework2.iml
new file mode 100644
index 0000000000000000000000000000000000000000..78b2cc53b203f0b97534bb1184cdc7b474339fb4
--- /dev/null
+++ b/homework2/homework2.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/homework2/pom.xml b/homework2/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd8c21f11034f573f293d905b176e52b583385b0
--- /dev/null
+++ b/homework2/pom.xml
@@ -0,0 +1,111 @@
+
+
+
+ 4.0.0
+
+ com.imu.homework2
+ homework2
+ 1.0-SNAPSHOT
+ war
+
+ homework2 Maven Webapp
+
+ http://www.example.com
+
+
+ UTF-8
+ 1.7
+ 1.7
+
+
+
+
+ junit
+ junit
+ 4.11
+ test
+
+
+ mysql
+ mysql-connector-java
+ 5.1.6
+
+
+ org.projectlombok
+ lombok
+ 1.16.16
+
+
+ javax.servlet
+ javax.servlet-api
+ 4.0.1
+
+ provided
+
+
+ org.slf4j
+ slf4j-simple
+ 1.7.25
+ compile
+
+
+ javax.servlet.jsp
+ javax.servlet.jsp-api
+ 2.3.3
+ provided
+
+
+ jstl
+ jstl
+ 1.2
+
+
+ com.google.code.gson
+ gson
+ 2.8.5
+
+
+ com.aliyun
+ aliyun-java-sdk-core
+ 4.0.3
+
+
+
+
+ homework2
+
+
+
+ maven-clean-plugin
+ 3.1.0
+
+
+
+ maven-resources-plugin
+ 3.0.2
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+
+ maven-surefire-plugin
+ 2.22.1
+
+
+ maven-war-plugin
+ 3.2.2
+
+
+ maven-install-plugin
+ 2.5.2
+
+
+ maven-deploy-plugin
+ 2.8.2
+
+
+
+
+
diff --git a/homework2/src/main/java/LayoutServlet.java b/homework2/src/main/java/LayoutServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..695805b19ff4d88317c925907233028db92d9410
--- /dev/null
+++ b/homework2/src/main/java/LayoutServlet.java
@@ -0,0 +1,41 @@
+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 javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+@WebServlet("/layout")
+public class LayoutServlet extends HttpServlet {
+
+ protected HttpServletResponse response;
+ protected HttpServletRequest request;
+ protected HttpSession session;
+
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ resp.setCharacterEncoding("utf-8");
+ req.setCharacterEncoding("utf-8");
+
+ request = req;
+ response = resp;
+ session = req.getSession();
+
+ layout();
+ }
+
+ public void layout(){
+
+ session.removeAttribute("user");
+ try {
+ response.sendRedirect(request.getContextPath()+"/Login.jsp");
+ return;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
+
diff --git a/homework2/src/main/java/LoginServlet.java b/homework2/src/main/java/LoginServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..88a4d49db274bd8dd1f027cefa795d889f38ef96
--- /dev/null
+++ b/homework2/src/main/java/LoginServlet.java
@@ -0,0 +1,101 @@
+import entity.User;
+
+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 javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+@WebServlet("/login")
+public class LoginServlet extends HttpServlet {
+
+ protected HttpServletRequest request;
+ protected HttpServletResponse response;
+ protected HttpSession session;
+
+ protected Connection con;
+ protected PreparedStatement ps;
+ protected ResultSet rs;
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ resp.setCharacterEncoding("utf-8");
+ req.setCharacterEncoding("utf-8");
+
+ request = req;
+ response = resp;
+ session = req.getSession();
+
+ login();
+
+ }
+
+ public void login(){
+ String logTel = request.getParameter("tel");
+ String logPwd = request.getParameter("password");
+
+ User user = new User();
+ try{
+ Class.forName("com.mysql.jdbc.Driver");
+ }catch (ClassNotFoundException e){
+ e.printStackTrace();
+ }
+
+ try {
+ con = DriverManager.getConnection("jdbc:mysql://localhost:3306/homework?useSSL=false&useUnicode=true&characterEncoding=utf8","root","root");
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+
+ try{
+ ps = con.prepareStatement("select id,name,gender from user where tel = ? and password =?");
+ ps.setString(1,logTel);
+ ps.setString(2,logPwd);
+ rs = ps.executeQuery();
+ if(rs.next()){
+ user.setId(rs.getString(1));
+ user.setName(rs.getString(2));
+ user.setGender(rs.getInt(3));
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ try {
+ if(rs != null){
+ rs.close();
+ }
+ if(ps != null){
+ ps.close();
+ }
+ if(con != null){
+ con.close();
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+ if(user.getId() != null){
+ try {
+ session.setAttribute("user",user);
+ response.sendRedirect(request.getContextPath()+"/LoginSuccess.jsp");
+ return;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ try {
+ response.sendRedirect(request.getContextPath()+"/Login.jsp");
+ return;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/homework2/src/main/java/entity/User.java b/homework2/src/main/java/entity/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..27f03350d0b133f34a924d91ca2558c9bc196442
--- /dev/null
+++ b/homework2/src/main/java/entity/User.java
@@ -0,0 +1,32 @@
+package entity;
+
+public class User {
+ private String id;
+ private String name;
+ private Integer gender;
+
+ public void setId(String id){
+ this.id = id;
+ }
+
+ public String getId(){
+ return this.id;
+ }
+
+ public void setName(String name){
+ this.name = name;
+ }
+
+ public String getName(){
+ return this.name;
+ }
+
+ public void setGender(Integer gender){
+ this.gender = gender;
+ }
+
+ public Integer getGender(){
+ return this.gender;
+ }
+
+}
diff --git a/homework2/src/main/java/filter/LoginFilter.java b/homework2/src/main/java/filter/LoginFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e9fe30bdfc0a0730c6cfdc80fe6e9314a8dbe08
--- /dev/null
+++ b/homework2/src/main/java/filter/LoginFilter.java
@@ -0,0 +1,44 @@
+package filter;
+
+import entity.User;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+@WebFilter(filterName = "LoginFilter",urlPatterns = "/LoginSuccess.jsp")
+public class LoginFilter implements javax.servlet.Filter {
+
+
+ @Override
+ public void destroy() {
+ }
+
+ @Override
+ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
+
+ req.setCharacterEncoding("utf-8");
+ resp.setCharacterEncoding("utf-8");
+
+ HttpServletRequest r=(HttpServletRequest) req;
+ HttpServletResponse rp=(HttpServletResponse) resp;
+ HttpSession session = r.getSession();
+
+ User user = (User) session.getAttribute("user");
+ if (user == null){
+ rp.sendRedirect(r.getContextPath()+"/Login.jsp");
+ return;
+ }
+
+ chain.doFilter(req, resp);
+ }
+
+ @Override
+ public void init(FilterConfig config) throws ServletException {
+
+ }
+
+}
diff --git a/homework2/src/main/java/listener/LoginListener.java b/homework2/src/main/java/listener/LoginListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..36ed96f7e89a82b234e57464f7633c5ffc141df0
--- /dev/null
+++ b/homework2/src/main/java/listener/LoginListener.java
@@ -0,0 +1,88 @@
+package listener;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.annotation.WebListener;
+import javax.servlet.http.*;
+
+@WebListener()
+public class LoginListener implements ServletContextListener,
+ HttpSessionListener, HttpSessionAttributeListener {
+
+ private static int loginUser=0;
+ private static int onlineUser=-1;
+ // Public constructor is required by servlet spec
+ public LoginListener() {
+ }
+
+ // -------------------------------------------------------
+ // ServletContextListener implementation
+ // -------------------------------------------------------
+ @Override
+ public void contextInitialized(ServletContextEvent sce) {
+ /* This method is called when the servlet context is
+ initialized(when the Web application is deployed).
+ You can initialize servlet context related data here.
+ */
+ }
+
+ @Override
+ public void contextDestroyed(ServletContextEvent sce) {
+ /* This method is invoked when the Servlet Context
+ (the Web application) is undeployed or
+ Application Server shuts down.
+ */
+ }
+
+ // -------------------------------------------------------
+ // HttpSessionListener implementation
+ // -------------------------------------------------------
+ @Override
+ public void sessionCreated(HttpSessionEvent se) {
+ /* Session is created. */
+ HttpSession session = se.getSession();
+ onlineUser++;
+ session.getServletContext().setAttribute("OnlineUser",onlineUser);
+ }
+
+ @Override
+ public void sessionDestroyed(HttpSessionEvent se) {
+ /* Session is destroyed. */
+ HttpSession session = se.getSession();
+ onlineUser--;
+ session.getServletContext().setAttribute("OnlineUser",onlineUser);
+ loginUser--;
+ session.getServletContext().setAttribute("LoginUser",loginUser);
+ }
+
+ // -------------------------------------------------------
+ // HttpSessionAttributeListener implementation
+ // -------------------------------------------------------
+
+ @Override
+ public void attributeAdded(HttpSessionBindingEvent sbe) {
+ /* This method is called when an attribute
+ is added to a session.
+ */
+ HttpSession session = sbe.getSession();
+ loginUser++;
+ session.getServletContext().setAttribute("LoginUser",loginUser);
+ }
+
+ @Override
+ public void attributeRemoved(HttpSessionBindingEvent sbe) {
+ /* This method is called when an attribute
+ is removed from a session.
+ */
+ HttpSession session = sbe.getSession();
+ loginUser--;
+ session.getServletContext().setAttribute("LoginUser",loginUser);
+ }
+
+ @Override
+ public void attributeReplaced(HttpSessionBindingEvent sbe) {
+ /* This method is invoked when an attibute
+ is replaced in a session.
+ */
+ }
+}
diff --git a/homework2/src/main/webapp/Login.jsp b/homework2/src/main/webapp/Login.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..fbefb16d966f38b984fef678036dd6de24ab25e2
--- /dev/null
+++ b/homework2/src/main/webapp/Login.jsp
@@ -0,0 +1,25 @@
+<%--
+ Created by IntelliJ IDEA.
+ entity.User: 13742
+ Date: 2021/3/16
+ Time: 16:49
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ 登录页面
+
+
+
+
+
+
+
diff --git a/homework2/src/main/webapp/LoginSuccess.jsp b/homework2/src/main/webapp/LoginSuccess.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..bfe854e634d6a8f543fdd90773f776b7deb703fa
--- /dev/null
+++ b/homework2/src/main/webapp/LoginSuccess.jsp
@@ -0,0 +1,38 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@page import="entity.User" %>
+<%
+ String path = request.getContextPath();
+ String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
+%>
+
+
+
+
+ 登录成功页面
+
+
+
+登录成功
+<%
+ User user = new User();
+ user = (User) session.getAttribute("user");
+ if(user!=null){
+ %>
+ <%=user.getName()%>
+
+<%
+ }
+%>
+<%
+ int userNumber = (int) session.getServletContext().getAttribute("LoginUser");
+ int onlineNumber = (int) session.getServletContext().getAttribute("OnlineUser");
+%>
+当前已登录用户为:<%=userNumber%>
+
+当前在线用户为:<%=onlineNumber%>
+
+退出
+
+
+
diff --git a/homework2/src/main/webapp/WEB-INF/web.xml b/homework2/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000000000000000000000000000000000..850eb857efa1c57aa0239c34293c4a179104d31e
--- /dev/null
+++ b/homework2/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,14 @@
+
+
+
+ Archetype Created Web Application
+
+
+ Login.jsp
+
+