Эх сурвалжийг харах

1117 整合数据库和前端页面

Demi 6 сар өмнө
parent
commit
9e4887c06c

+ 10 - 0
tomcat-demo/pom.xml

@@ -8,6 +8,8 @@
     <artifactId>tomcat-demo</artifactId>
     <version>1.0-SNAPSHOT</version>
     <name>tomcat-demo</name>
+
+    <!--  这里是打包成war 其他项目类型中还有jar  -->
     <packaging>war</packaging>
 
     <properties>
@@ -24,6 +26,14 @@
             <version>5.0.0</version>
             <scope>provided</scope>
         </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <!-- 如果mysql5.0版本 使用5.1.49  -->
+            <version>8.0.33</version>
+        </dependency>
+
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter-api</artifactId>

+ 72 - 0
tomcat-demo/src/main/java/com/sf/tomcatdemo/LoginServlet.java

@@ -0,0 +1,72 @@
+package com.sf.tomcatdemo;
+
+import com.sf.tomcatdemo.entity.User;
+import com.sf.tomcatdemo.utils.DBUtil;
+import jakarta.servlet.GenericServlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+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;
+
+// 这里GenericServlet 通用Servlet 是HttpServlet的抽象父类
+// http://localhost:8080/tomcat_demo/login
+public class LoginServlet extends HttpServlet {
+
+    // 需要实现的service是ServletRequest  不是HttpServletRequest
+//    @Override
+//    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
+//
+//    }
+
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+//        super.doGet(req, resp);
+        // 正常的登录逻辑是不允许get请求的
+        // 设置响应的编码格式
+        resp.setContentType("text/html;charset=utf-8");
+        PrintWriter writer = resp.getWriter();
+        writer.print("<script>alert('请通过post登录');location.href='/login.html'</script>");
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        // 接收前端请求的 用户名 和 密码
+        // 设置请求的编码格式
+        req.setCharacterEncoding("utf-8");
+        String username = req.getParameter("username");
+        String password = req.getParameter("password");
+
+        PrintWriter writer = resp.getWriter();
+        // 验证在数据库中是否存在且匹配
+        List<User> allUsers = DBUtil.getAllUsers();
+        for (User user : allUsers) {
+            if (username.equals(user.getUsername()) && password.equals(user.getPassword())) {
+//                writer.write("Login Success");
+                // 跳转到success.html页面 同时携带请求和响应
+                req.getRequestDispatcher("/success.html").forward(req, resp);
+                return;
+            }
+        }
+
+//        writer.write("Login Failed");
+        // 跳转到error.html
+        req.getRequestDispatcher("/error.html").forward(req, resp);
+    }
+
+    @Override
+    public void init() throws ServletException {
+        System.out.println("LoginServlet init");
+    }
+
+    @Override
+    public void destroy() {
+        System.out.println("LoginServlet destroy");
+    }
+}

+ 24 - 0
tomcat-demo/src/main/java/com/sf/tomcatdemo/UserServlet.java

@@ -0,0 +1,24 @@
+package com.sf.tomcatdemo;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+// 协议名 + ip地址 + 端口号 + 项目名(上下文) + 路径
+// http://localhost:8080/tomcat_demo/user
+public class UserServlet extends HttpServlet {
+
+    // 通过右键 - 重写方法
+    // 或者通过 alt + insert - 重写方法
+    @Override
+    protected void service(HttpServletRequest req, HttpServletResponse resp)
+            throws ServletException, IOException {
+        // 处理请求和响应
+        PrintWriter writer = resp.getWriter();
+        writer.write("hello UserServlet");
+    }
+}

+ 39 - 0
tomcat-demo/src/main/java/com/sf/tomcatdemo/entity/User.java

@@ -0,0 +1,39 @@
+package com.sf.tomcatdemo.entity;
+
+// 存放数据库中对应的表
+public class User {
+    private String username;
+    private String password;
+
+    public User() {
+    }
+
+    public User(String username, String password) {
+        this.username = username;
+        this.password = password;
+    }
+
+    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;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "username='" + username + '\'' +
+                ", password='" + password + '\'' +
+                '}';
+    }
+}

+ 49 - 0
tomcat-demo/src/main/java/com/sf/tomcatdemo/utils/DBUtil.java

@@ -0,0 +1,49 @@
+package com.sf.tomcatdemo.utils;
+
+import com.sf.tomcatdemo.entity.User;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class DBUtil {
+
+    // 查询数据的逻辑
+    public static List<User> getAllUsers() {
+
+        Connection connection = null;
+        Statement statement = null;
+        ResultSet resultSet = null;
+        try {
+            // 这里mysql8 是com.mysql.cj.jdbc.Driver
+            // mysql5 是com.mysql.jdbc.Driver
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            connection = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/test?useUnicode=true", "root", "123456");
+            statement = connection.createStatement();
+            resultSet = statement.executeQuery("select * from my_user");
+
+            List<User> userList = new ArrayList<User>();
+            while (resultSet.next()) {
+                String username = resultSet.getString("username");
+                String password = resultSet.getString("password");
+                User user = new User(username, password);
+                userList.add(user);
+            }
+            System.out.println(userList);
+            return userList;
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }finally {
+            try {
+                resultSet.close();
+                statement.close();
+                connection.close();
+            } catch (SQLException e) {
+                throw new RuntimeException(e);
+            }
+
+        }
+    }
+}

+ 26 - 0
tomcat-demo/src/main/webapp/WEB-INF/web.xml

@@ -3,4 +3,30 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
          version="5.0">
+
+    <!--  有这样一个Servlet 声明名字和对应的类路径  -->
+    <!--  可以通过反射 使用类路径来创建对象 然后调用对象的service方法  -->
+    <servlet>
+        <servlet-name>UserServlet</servlet-name>
+        <servlet-class>com.sf.tomcatdemo.UserServlet</servlet-class>
+    </servlet>
+    <!--  声明这个Servlet 对应的路径  就可以根据路径找到Servlet  -->
+    <servlet-mapping>
+        <servlet-name>UserServlet</servlet-name>
+        <url-pattern>/user</url-pattern>
+    </servlet-mapping>
+    
+    <servlet>
+        <servlet-name>LoginServlet</servlet-name>
+        <servlet-class>com.sf.tomcatdemo.LoginServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>LoginServlet</servlet-name>
+        <url-pattern>/login</url-pattern>
+        <!--    url-pattern   是url路径匹配的表达式  -->
+        <!--    /login/reset  /login/register 都被LoginServlet处理  -->
+        <!--    /login/*  指的是所有以login作为前缀的映射路径 -->
+        <!--    *.action  指的是所有以action作为后缀的映射路径 -->
+        <!--    /  指的是通配所有资源的映射路径 -->
+    </servlet-mapping>
 </web-app>

+ 10 - 0
tomcat-demo/src/main/webapp/error.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+ERROR
+</body>
+</html>

+ 17 - 0
tomcat-demo/src/main/webapp/login.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+<!--<form action="/login" method="get">-->
+<form action="/login" method="post">
+    用户名:<input type="text" name="username"/> <br>
+    密码:<input type="password" name="password"/> <br>
+    <input type="submit" value="登录">
+</form>
+
+</body>
+</html>

+ 10 - 0
tomcat-demo/src/main/webapp/success.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+Success
+</body>
+</html>