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 + +