fanjialong 2 сар өмнө
parent
commit
c3bc79b4f6
34 өөрчлөгдсөн 1018 нэмэгдсэн , 0 устгасан
  1. 29 0
      web-review-demo/.gitignore
  2. 8 0
      web-review-demo/.idea/.gitignore
  3. 13 0
      web-review-demo/.idea/artifacts/web_review_demo_war_exploded.xml
  4. 8 0
      web-review-demo/.idea/compiler.xml
  5. 10 0
      web-review-demo/.idea/libraries/lib.xml
  6. 6 0
      web-review-demo/.idea/misc.xml
  7. 8 0
      web-review-demo/.idea/modules.xml
  8. 6 0
      web-review-demo/.idea/vcs.xml
  9. 20 0
      web-review-demo/src/com/sf/dao/IUserDAO.java
  10. 167 0
      web-review-demo/src/com/sf/dao/impl/UserDAOImpl.java
  11. 16 0
      web-review-demo/src/com/sf/dao/impl/UserDAOImplTest.java
  12. 68 0
      web-review-demo/src/com/sf/domain/User.java
  13. 14 0
      web-review-demo/src/com/sf/service/IUserService.java
  14. 53 0
      web-review-demo/src/com/sf/service/impl/UserServiceImpl.java
  15. 56 0
      web-review-demo/src/com/sf/servlet/LoginServlet.java
  16. 20 0
      web-review-demo/src/com/sf/servlet/MyJspServlet.java
  17. 37 0
      web-review-demo/src/com/sf/servlet/OneServlet.java
  18. 40 0
      web-review-demo/src/com/sf/servlet/RegisterServlet.java
  19. 50 0
      web-review-demo/src/com/sf/util/JsonResult.java
  20. 25 0
      web-review-demo/web-review-demo.iml
  21. 16 0
      web-review-demo/web/WEB-INF/hello.jsp
  22. 16 0
      web-review-demo/web/WEB-INF/jsp/jsp_demo.jsp
  23. BIN
      web-review-demo/web/WEB-INF/lib/druid-1.0.9.jar
  24. BIN
      web-review-demo/web/WEB-INF/lib/fastjson-1.2.58.jar
  25. BIN
      web-review-demo/web/WEB-INF/lib/hamcrest-core-1.3.jar
  26. BIN
      web-review-demo/web/WEB-INF/lib/junit-4.13.jar
  27. BIN
      web-review-demo/web/WEB-INF/lib/lombok-1.18.30.jar
  28. BIN
      web-review-demo/web/WEB-INF/lib/mysql-connector-java-5.1.48.jar
  29. 6 0
      web-review-demo/web/WEB-INF/web.xml
  30. 12 0
      web-review-demo/web/index1.jsp
  31. 1 0
      web-review-demo/web/js/jquery-2.1.4.min.js
  32. 135 0
      web-review-demo/web/login.html
  33. 24 0
      web-review-demo/web/login.jsp
  34. 154 0
      web-review-demo/web/register.html

+ 29 - 0
web-review-demo/.gitignore

@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 8 - 0
web-review-demo/.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 13 - 0
web-review-demo/.idea/artifacts/web_review_demo_war_exploded.xml

@@ -0,0 +1,13 @@
+<component name="ArtifactManager">
+  <artifact type="exploded-war" name="web-review-demo:war exploded">
+    <output-path>$PROJECT_DIR$/out/artifacts/web_review_demo_war_exploded</output-path>
+    <root id="root">
+      <element id="javaee-facet-resources" facet="web-review-demo/web/Web" />
+      <element id="directory" name="WEB-INF">
+        <element id="directory" name="classes">
+          <element id="module-output" name="web-review-demo" />
+        </element>
+      </element>
+    </root>
+  </artifact>
+</component>

+ 8 - 0
web-review-demo/.idea/compiler.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+    </annotationProcessing>
+  </component>
+</project>

+ 10 - 0
web-review-demo/.idea/libraries/lib.xml

@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="lib">
+    <CLASSES>
+      <root url="file://$PROJECT_DIR$/web/WEB-INF/lib" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+    <jarDirectory url="file://$PROJECT_DIR$/web/WEB-INF/lib" recursive="false" />
+  </library>
+</component>

+ 6 - 0
web-review-demo/.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 8 - 0
web-review-demo/.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/web-review-demo.iml" filepath="$PROJECT_DIR$/web-review-demo.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
web-review-demo/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>

+ 20 - 0
web-review-demo/src/com/sf/dao/IUserDAO.java

@@ -0,0 +1,20 @@
+package com.sf.dao;
+
+import com.sf.domain.User;
+
+public interface IUserDAO {
+    /**
+     * 根据账号和密码查询数据信息
+     */
+    public User queryUserByUsernameAndPassword(String username, String password);
+
+    /**
+     * 根据用户名查询用户信息方法
+     */
+    public User queryUserByUsername(String username);
+    /**
+     * 添加用户信息方法
+     */
+    public void addUser(User user);
+
+}

+ 167 - 0
web-review-demo/src/com/sf/dao/impl/UserDAOImpl.java

@@ -0,0 +1,167 @@
+package com.sf.dao.impl;
+
+import com.sf.dao.IUserDAO;
+import com.sf.domain.User;
+
+import java.sql.*;
+
+public class UserDAOImpl implements IUserDAO {
+    @Override
+    public User queryUserByUsernameAndPassword(String username, String password) {
+        // 1 加载驱动
+        Connection connection = null;
+        PreparedStatement preparedStatement= null;
+        ResultSet resultSet = null;
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            // 2 获取连接对象
+            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/login_demo", "root", "admin");
+            // 3 创建语句对象
+            String sql = "select * from user where username = ? and password = ?";
+            preparedStatement = connection.prepareStatement(sql);
+            preparedStatement.setString(1, username);
+            preparedStatement.setString(2, password);
+            // 4 执行sql 语句
+            // resultSet 是一个结果集
+            resultSet = preparedStatement.executeQuery();
+            // 我们需要把结果集当中数据封装到User 当中
+            if(resultSet.next()){
+                User user = new User();
+                user.setId(resultSet.getLong("id"));
+                user.setUsername(resultSet.getString("username"));
+                user.setPassword(resultSet.getString("password"));
+                return user;
+            }
+            return null;
+            // 5 释放资源
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }finally {
+            // 把上面三个关闭资源
+            if(resultSet!=null){
+                try {
+                    resultSet.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(preparedStatement!=null){
+                try {
+                    preparedStatement.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(connection!=null){
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public User queryUserByUsername(String username) {
+        // 1 加载驱动
+        Connection connection = null;
+        PreparedStatement preparedStatement= null;
+        ResultSet resultSet = null;
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            // 2 获取连接对象
+            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/login_demo", "root", "admin");
+            // 3 创建语句对象
+            String sql = "select * from user where username = ?";
+            preparedStatement = connection.prepareStatement(sql);
+            preparedStatement.setString(1, username);
+            // 4 执行sql 语句
+            // resultSet 是一个结果集
+            resultSet = preparedStatement.executeQuery();
+            // 我们需要把结果集当中数据封装到User 当中
+            if(resultSet.next()){
+                User user = new User();
+                user.setId(resultSet.getLong("id"));
+                user.setUsername(resultSet.getString("username"));
+                user.setPassword(resultSet.getString("password"));
+                return user;
+            }
+            return null;
+            // 5 释放资源
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }finally {
+            // 把上面三个关闭资源
+            if(resultSet!=null){
+                try {
+                    resultSet.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(preparedStatement!=null){
+                try {
+                    preparedStatement.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(connection!=null){
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+
+    @Override
+    public void addUser(User user) {
+        // 1 加载驱动
+        Connection connection = null;
+        PreparedStatement preparedStatement= null;
+        ResultSet resultSet = null;
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            // 2 获取连接对象
+            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/login_demo", "root", "admin");
+            // 3 创建语句对象
+            String sql = "insert into user (username,password) values(?,?)";
+            preparedStatement = connection.prepareStatement(sql);
+            preparedStatement.setString(1, user.getUsername());
+            preparedStatement.setString(2, user.getPassword());
+            // 4 执行sql 语句
+            // resultSet 是一个结果集
+            preparedStatement.executeUpdate();
+            // 5 释放资源
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }finally {
+            // 把上面三个关闭资源
+            if(resultSet!=null){
+                try {
+                    resultSet.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(preparedStatement!=null){
+                try {
+                    preparedStatement.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+            if(connection!=null){
+                try {
+                    connection.close();
+                } catch (SQLException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+}

+ 16 - 0
web-review-demo/src/com/sf/dao/impl/UserDAOImplTest.java

@@ -0,0 +1,16 @@
+package com.sf.dao.impl;
+
+import com.sf.domain.User;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class UserDAOImplTest {
+
+    @Test
+    public void queryUserByUsernameAndPassword() {
+        UserDAOImpl userDAO = new UserDAOImpl();
+        User user = userDAO.queryUserByUsernameAndPassword("zhangsan","123");
+        System.out.println(user);
+    }
+}

+ 68 - 0
web-review-demo/src/com/sf/domain/User.java

@@ -0,0 +1,68 @@
+package com.sf.domain;
+
+public class User {
+    private Long id;
+    private String username;
+    private String password;
+
+    public User() {
+    }
+
+    public User(Long id, String username, String password) {
+        this.id = id;
+        this.username = username;
+        this.password = password;
+    }
+
+    /**
+     * 获取
+     * @return id
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * 设置
+     * @param id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取
+     * @return username
+     */
+    public String getUsername() {
+        return username;
+    }
+
+    /**
+     * 设置
+     * @param username
+     */
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    /**
+     * 获取
+     * @return password
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * 设置
+     * @param password
+     */
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String toString() {
+        return "User{id = " + id + ", username = " + username + ", password = " + password + "}";
+    }
+}

+ 14 - 0
web-review-demo/src/com/sf/service/IUserService.java

@@ -0,0 +1,14 @@
+package com.sf.service;
+
+import com.sf.domain.User;
+
+public interface IUserService {
+    /**
+     * 登录方法
+     */
+    User login(String username,String password);
+    /**
+     * 注册方法
+     */
+    void register(User user);
+}

+ 53 - 0
web-review-demo/src/com/sf/service/impl/UserServiceImpl.java

@@ -0,0 +1,53 @@
+package com.sf.service.impl;
+
+import com.sf.dao.IUserDAO;
+import com.sf.dao.impl.UserDAOImpl;
+import com.sf.domain.User;
+import com.sf.service.IUserService;
+
+public class UserServiceImpl implements IUserService {
+    @Override
+    public User login(String username, String password) {
+        IUserDAO userDAO = new UserDAOImpl();
+        // 1 判断账号和密码是否为空, 如果为空抛出异常
+        if(username == null || "".equals(username) || password == null || "".equals(password)){
+            throw new RuntimeException("用户名或密码不能为空");
+        }
+        // 2 调用dao层方法查询用户信息
+        User user = userDAO.queryUserByUsernameAndPassword(username, password);
+        // 3 判断用户信息是否为空如果为空抛出异常
+        if(user == null){
+            throw new RuntimeException("用户名或密码错误");
+        }
+        // 4 如果不为空返回user
+        return user;
+    }
+
+    @Override
+    public void register(User user) {
+        //1 判断用户是否为空如果为空抛出异常提醒注册失败
+        if(user == null){
+            throw new RuntimeException("注册失败");
+        }
+        //2 判断用户ing和密码是否为空如果为空提醒账号和密码不能为空
+        if(user.getUsername() == null || "".equals(user.getUsername()) || user.getPassword() == null || "".equals(user.getPassword())){
+            throw new RuntimeException("账号和密码不能为空");
+        }
+        // 3 判断用户名长度是否大于3 小于5
+        if(user.getUsername().length() < 3 || user.getUsername().length() > 5){
+            throw new RuntimeException("用户名长度必须大于3小于5");
+        }
+        // 4 根据用户名上数据库当中查询信息如果不为空提醒用户已经存在
+        IUserDAO userDAO = new UserDAOImpl();
+        User user1 = userDAO.queryUserByUsername(user.getUsername());
+        if(user1 != null){
+            throw new RuntimeException("用户已经存在");
+        }
+        // 5 判断密码长度是否大于6
+        if(user.getPassword().length() < 6){
+            throw new RuntimeException("密码长度必须大于6");
+        }
+        // 6 把数据插入到数据库中
+        userDAO.addUser(user);
+    }
+}

+ 56 - 0
web-review-demo/src/com/sf/servlet/LoginServlet.java

@@ -0,0 +1,56 @@
+package com.sf.servlet;
+
+import com.alibaba.fastjson.JSON;
+import com.sf.dao.IUserDAO;
+import com.sf.dao.impl.UserDAOImpl;
+import com.sf.domain.User;
+import com.sf.service.IUserService;
+import com.sf.service.impl.UserServiceImpl;
+import com.sf.util.JsonResult;
+
+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;
+
+// 接受前端传递过来/login 请求
+@WebServlet("/login")
+public class LoginServlet extends HttpServlet {
+
+    // 浏览器在访问login  会进入service 方法进处理
+
+    /**
+     *
+     * @param req   请求对象
+     * @param resp  响应对象
+     */
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        // 处理一下post 请求参数乱码问题
+        req.setCharacterEncoding("utf-8");
+        // 设置后端给前端数据响应格式为json 格式, 编码为utf-8  编码
+        resp.setContentType("application/json;charset=utf-8");
+        // 接受请求参数
+        String username = req.getParameter("username");
+        String password = req.getParameter("password");
+        System.out.println("username:" + username);
+        System.out.println("password:" + password);
+        // 判断账号如果是admin 密码如果是123 表示登录成功否则就是登录失败
+        PrintWriter writer = resp.getWriter();
+        // java - > json    json->java
+        // 设计出来一个java 的类  把创建出来一个java对象把对象转成json 字符串
+        // 上书库当中查询用户信息 如果用户不为空表示登录成功, 如果为空表示登录失败
+        IUserService userService = new UserServiceImpl();
+        try{
+            // 如果login 方法不出现异常说明登录成功
+            userService.login(username,password);
+            writer.write(JSON.toJSONString(new JsonResult(true,"登录成功")));
+        }catch (Exception e){
+            // 如果出现会立马呗catch 捕捉到, 登录失败了
+            writer.write(JSON.toJSONString(new JsonResult(false,e.getMessage())));
+        }
+    }
+}

+ 20 - 0
web-review-demo/src/com/sf/servlet/MyJspServlet.java

@@ -0,0 +1,20 @@
+package com.sf.servlet;
+
+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;
+
+@WebServlet("/myjsp")
+public class MyJspServlet extends HttpServlet {
+
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        // 往请求作用于中存储key = msg , value 值为你好啊
+        req.setAttribute("msg","你好啊");
+        // 做界面跳转
+        req.getRequestDispatcher("/WEB-INF/jsp/jsp_demo.jsp").forward(req,resp);
+    }
+}

+ 37 - 0
web-review-demo/src/com/sf/servlet/OneServlet.java

@@ -0,0 +1,37 @@
+package com.sf.servlet;
+
+
+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;
+
+@WebServlet("/one")
+public class OneServlet extends HttpServlet {
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        // 如果你返回是一个视图就不需要设置响应数据格式 , 其他情况都需要设置数据响应格式
+        String username = req.getParameter("username");
+        String password = req.getParameter("password");
+        if("admin".equals(username)&& "123".equals(password)){
+            // 往作用域中存储success_msg 登录成功
+            req.setAttribute("success_msg","登录成功");
+        }else{
+            req.setAttribute("error_msg","登录失败");
+        }
+        // 视图跳转 , 跳转WEB-INF/hello.jsp
+        // 一种请求转发  一种是重定向
+        /**
+         * req.getRequestDispatcher("/WEB-INF/hello.jsp").forward(req,resp);
+         * resp.sendRedirect("/hello.jsp");
+         *
+         * 这个场景只能够使用请求转发, 因为我们要访问WEB-INF 下的资源
+         */
+        req.getRequestDispatcher("/login.jsp").forward(req,resp);
+        // 重定向就相当于浏览器在发一次请求, 浏览器是无法直接访问WEB-INF 下的资源
+        // 所以重定向也是无法访问web-inf 下的资源
+//        resp.sendRedirect("/hello.jsp");
+    }
+}

+ 40 - 0
web-review-demo/src/com/sf/servlet/RegisterServlet.java

@@ -0,0 +1,40 @@
+package com.sf.servlet;
+
+import com.alibaba.fastjson.JSON;
+import com.sf.domain.User;
+import com.sf.service.IUserService;
+import com.sf.service.impl.UserServiceImpl;
+import com.sf.util.JsonResult;
+
+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;
+
+@WebServlet("/register")
+public class RegisterServlet extends HttpServlet {
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        req.setCharacterEncoding("utf-8");
+        resp.setContentType("application/json;charset=utf-8");
+        // 接受前台传递过来username 和password 封装到User 当中
+        String username = req.getParameter("username");
+        String password = req.getParameter("password");
+        System.out.println("username:" + username);
+        System.out.println("password:" + password);
+        User user = new User(null,username,password);
+        // 调用业务层实现注册逻辑
+        IUserService userService = new UserServiceImpl();
+        try{
+            userService.register(user);
+            // 如果register 没有出现异常说明注册成功
+            // 返回{success: true,msg: 注册成功}
+            resp.getWriter().write(JSON.toJSONString(new JsonResult(true,"注册成功")));
+        }catch (Exception e){
+            e.printStackTrace();
+            resp.getWriter().write(JSON.toJSONString(new JsonResult(false,e.getMessage())));
+        }
+    }
+}

+ 50 - 0
web-review-demo/src/com/sf/util/JsonResult.java

@@ -0,0 +1,50 @@
+package com.sf.util;
+
+public class JsonResult {
+    private boolean success;
+    private String msg;
+
+    public JsonResult() {
+    }
+
+    public JsonResult(boolean success, String msg) {
+        this.success = success;
+        this.msg = msg;
+    }
+
+    /**
+     * 获取
+     * @return success
+     */
+    public boolean isSuccess() {
+        return success;
+    }
+
+    /**
+     * 设置
+     * @param success
+     */
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    /**
+     * 获取
+     * @return msg
+     */
+    public String getMsg() {
+        return msg;
+    }
+
+    /**
+     * 设置
+     * @param msg
+     */
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String toString() {
+        return "JsonResult{success = " + success + ", msg = " + msg + "}";
+    }
+}

+ 25 - 0
web-review-demo/web-review-demo.iml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <descriptors>
+          <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/web/WEB-INF/web.xml" />
+        </descriptors>
+        <webroots>
+          <root url="file://$MODULE_DIR$/web" relative="/" />
+        </webroots>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" scope="PROVIDED" name="Tomcat 8.5.511" level="application_server_libraries" />
+    <orderEntry type="library" name="lib" level="project" />
+  </component>
+</module>

+ 16 - 0
web-review-demo/web/WEB-INF/hello.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 33109
+  Date: 2026/3/14
+  Time: 16:44
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+登录信息为:${success_msg}
+</body>
+</html>

+ 16 - 0
web-review-demo/web/WEB-INF/jsp/jsp_demo.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 33109
+  Date: 2026/3/14
+  Time: 15:57
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+${msg}
+</body>
+</html>

BIN
web-review-demo/web/WEB-INF/lib/druid-1.0.9.jar


BIN
web-review-demo/web/WEB-INF/lib/fastjson-1.2.58.jar


BIN
web-review-demo/web/WEB-INF/lib/hamcrest-core-1.3.jar


BIN
web-review-demo/web/WEB-INF/lib/junit-4.13.jar


BIN
web-review-demo/web/WEB-INF/lib/lombok-1.18.30.jar


BIN
web-review-demo/web/WEB-INF/lib/mysql-connector-java-5.1.48.jar


+ 6 - 0
web-review-demo/web/WEB-INF/web.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
+         version="4.0">
+</web-app>

+ 12 - 0
web-review-demo/web/index1.jsp

@@ -0,0 +1,12 @@
+<%--导入包--%>
+<%@ page import="java.util.Date" %>
+<%--jsp的page指令:  指定页面内容的类型,编码。页面使用编程语言:Java  --%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+  <title>显示时间</title>
+</head>
+<body>
+<%=new Date()%>
+</body>
+</html>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 1 - 0
web-review-demo/web/js/jquery-2.1.4.min.js


+ 135 - 0
web-review-demo/web/login.html

@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>登录页面</title>
+    <script src="js/jquery-2.1.4.min.js"></script>
+    <style>
+        /* 全局样式重置 */
+        * {
+            margin: 0;
+            padding: 0;
+            box-sizing: border-box;
+            font-family: "Microsoft YaHei", sans-serif;
+        }
+
+        /* 页面背景 */
+        body {
+            background-color: #f5f5f5;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            min-height: 100vh;
+        }
+
+        /* 登录表单容器 */
+        .login-container {
+            background-color: #ffffff;
+            padding: 30px 40px;
+            border-radius: 8px;
+            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+            width: 100%;
+            max-width: 400px;
+        }
+
+        /* 表单标题 */
+        .login-title {
+            text-align: center;
+            font-size: 24px;
+            color: #333;
+            margin-bottom: 25px;
+            font-weight: 600;
+        }
+
+        /* 输入项样式 */
+        .form-item {
+            margin-bottom: 20px;
+        }
+
+        /* 标签样式 */
+        .form-item label {
+            display: block;
+            margin-bottom: 8px;
+            color: #666;
+            font-size: 14px;
+        }
+
+        /* 输入框样式 */
+        .form-item input {
+            width: 100%;
+            height: 40px;
+            padding: 0 10px;
+            border: 1px solid #ddd;
+            border-radius: 4px;
+            font-size: 14px;
+            transition: border-color 0.3s;
+        }
+
+        /* 输入框聚焦样式 */
+        .form-item input:focus {
+            outline: none;
+            border-color: #409eff;
+            box-shadow: 0 0 5px rgba(64, 158, 255, 0.2);
+        }
+
+        /* 登录按钮样式 */
+        .login-btn {
+            width: 100%;
+            height: 40px;
+            background-color: #409eff;
+            color: #ffffff;
+            border: none;
+            border-radius: 4px;
+            font-size: 16px;
+            cursor: pointer;
+            transition: background-color 0.3s;
+        }
+
+        /* 按钮hover样式 */
+        .login-btn:hover {
+            background-color: #3399ff;
+        }
+
+        /* 密码输入框特殊样式(可选) */
+        #password {
+            letter-spacing: 2px;
+        }
+    </style>
+</head>
+<body>
+<!--<h1>这是登录界面</h1>-->
+<div class="login-container">
+    <h2 class="login-title">用户登录</h2>
+    <form action="#" method="post">
+        <div class="form-item">
+            <label for="username">账号</label>
+            <input type="text" id="username" name="username">
+        </div>
+        <div class="form-item">
+            <label for="password">密码</label>
+            <input type="password" id="password" name="password">
+        </div>
+        <input type="button" class="login-btn" value="登录" onclick="login()">
+    </form>
+</div>
+</body>
+<script>
+    // 点击登录按钮的时候去发送异步请求
+    function login() {
+        // 获取输入框当中账号和密码
+        var username = document.getElementById("username").value
+        var password = document.getElementById("password").value
+        console.log(username,password)
+        // $: jquery 对象  $.post  jquery post 函数
+        // post 函数第一参数请求路径, 第二个参数: 请求参数  , 第三个参数: 回调函数
+        $.post("/login",{"username": username,"password": password},function (result){
+            // 回调函数当中result 就是后端给前端返回数据
+            if(result.success){
+                alert("登录成功")
+            }else{
+                alert(result.msg)
+            }
+        })
+    }
+</script>
+</html>

+ 24 - 0
web-review-demo/web/login.jsp

@@ -0,0 +1,24 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 33109
+  Date: 2026/3/14
+  Time: 16:49
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>登录页面</h1>
+${success_msg}
+<span style="color: green">${success_msg}</span>
+<span style="color: red">${error_msg}</span>
+<form action="/one" method="post">
+    账号:<input type="text" name="username"><br>
+    密码:<input type="password" name="password"><br>
+    <input type="submit" value="登录">
+</form>
+</body>
+</html>

+ 154 - 0
web-review-demo/web/register.html

@@ -0,0 +1,154 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>用户注册</title>
+  <script src="js/jquery-2.1.4.min.js"></script>
+  <style>
+    /* 全局样式重置 */
+    * {
+      margin: 0;
+      padding: 0;
+      box-sizing: border-box;
+      font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
+    }
+
+    /* 页面背景与居中布局 */
+    body {
+      background-color: #f8f9fa;
+      min-height: 100vh;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      padding: 20px;
+    }
+
+    /* 注册卡片容器 */
+    .register-card {
+      background: #ffffff;
+      border-radius: 10px;
+      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+      width: 100%;
+      max-width: 400px;
+      padding: 40px 30px;
+    }
+
+    /* 标题样式 */
+    .register-title {
+      text-align: center;
+      color: #333;
+      font-size: 24px;
+      margin-bottom: 30px;
+      font-weight: 600;
+    }
+
+    /* 表单项样式 */
+    .form-item {
+      margin-bottom: 20px;
+    }
+
+    /* 标签样式 */
+    .form-item label {
+      display: block;
+      margin-bottom: 8px;
+      color: #555;
+      font-size: 14px;
+    }
+
+    /* 输入框样式 */
+    .form-item input {
+      width: 100%;
+      height: 45px;
+      padding: 0 15px;
+      border: 1px solid #e0e0e0;
+      border-radius: 6px;
+      font-size: 15px;
+      outline: none;
+      transition: all 0.3s ease;
+    }
+
+    /* 输入框聚焦效果 */
+    .form-item input:focus {
+      border-color: #409eff;
+      box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.1);
+    }
+
+    /* 输入框占位符样式 */
+    .form-item input::placeholder {
+      color: #999;
+      font-size: 14px;
+    }
+
+    /* 注册按钮样式 */
+    .register-btn {
+      width: 100%;
+      height: 48px;
+      background-color: #409eff;
+      color: #ffffff;
+      border: none;
+      border-radius: 6px;
+      font-size: 16px;
+      font-weight: 500;
+      cursor: pointer;
+      transition: background-color 0.3s ease;
+      margin-top: 10px;
+    }
+
+    /* 按钮hover效果 */
+    .register-btn:hover {
+      background-color: #3399ff;
+    }
+
+    /* 按钮禁用状态(可选) */
+    .register-btn:disabled {
+      background-color: #a0cfff;
+      cursor: not-allowed;
+    }
+  </style>
+</head>
+<body>
+<div class="register-card">
+  <h1 class="register-title">用户注册</h1>
+  <form action="">
+    <div class="form-item">
+      <label for="username">账号</label>
+      <input type="text" placeholder="注册用户名" name="username" id="username">
+    </div>
+    <div class="form-item">
+      <label for="password">密码</label>
+      <input type="password" placeholder="注册密码" name="password" id="password">
+    </div>
+    <input type="button" onclick="register()" value="注册" class="register-btn">
+  </form>
+</div>
+
+<script>
+  function register(){
+    var username = $("input[name='username']").val().trim();
+    var password = $("input[name='password']").val().trim();
+
+    // 简单的非空验证(新增)
+    if(!username) {
+      alert("请输入用户名!");
+      return;
+    }
+    if(!password) {
+      alert("请输入密码!");
+      return;
+    }
+
+    $.post("/register",{username:username,password:password},function (result) {
+      if(result.success){
+        alert("注册成功");
+      }else{
+        alert(result.msg || "注册失败,请重试");
+      }
+    }).fail(function() {
+      // 新增网络异常提示
+      alert("网络异常,注册请求发送失败!");
+    });
+  }
+</script>
+</body>
+</html>

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно