一个小玩意

项目结构

image

项目流程

01

image

一个简单的html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加与显示数据库内容</title>
</head>
<body style="width: 50%;height: 50%;text-align:center;position: fixed;top: 50%;left: 20%">
<input onclick="window.location.href='/Html_Servlet_MySql_Jsp/addindex.html'" type="button" value="增加记录到数据库">
<input onclick="window.location.href='/Html_Servlet_MySql_Jsp/ShowServlet'" type="button" value="读取数据库记录">
</body>
</html>

增加数据到数据库或显示数据库内容

02

点击“读取数据库记录”按钮,即请求“/Html_Servlet_MySql_Jsp/ShowServlet”

package ll;

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.*;
import java.util.ArrayList;

@WebServlet("/ll.ShowServlet")
public class ShowServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        Connection conn = null;//声明一个Connection对象,用来连接数据库
        PreparedStatement pstmt = null;//声明PreparedStatement对象
        ResultSet rs = null;//声明一个结果集

        ArrayList<Part> list = new ArrayList<Part>(); //声明一个part类集合

        try {
            System.out.println("到达ShowServlet");
            //连接到MySQL数据库中的bank模式
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("创建驱动成功");
            //连接数据库
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Html_Servlet_MySql_Jsp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC", "root", "1234");
            System.out.println("连接数据库成功");
            String sql = "select * from part";//查询的SQL语句
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
        } catch (Exception e) {
        }
        try {
            while (rs.next()) {//在页面中打印出查询消息
                Part part = new Part();
                part.setId(rs.getString("id"));
                part.setName(rs.getString("name"));
                part.setAddress(rs.getString("address"));
                part.setNum(rs.getInt("num"));
                list.add(part);
            }
            request.setAttribute("list", list);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        request.getRequestDispatcher("/ll.ShowServlet.jsp").forward(request, response);
    }
}

Servlet会连接数据库,然后读取数据库,并保存为Part对象。再将对象添加至list集合中,通过setAttribute保存list数据,之后转发至页面“/ll.ShowServlet.jsp“

package ll;

public class Part {
    private String id;
    private String name;
    private String address;
    private int num;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return "ll.Part{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                ", num=" + num +
                '}';
    }
}

一个简单的bean

03

一个页面显示ll.ShowServlet.jsp文件

<%@ page import="java.util.ArrayList" %>
<%@ page import="ll.Part" %><%--
  Created by IntelliJ IDEA.
  User: LILI
  Date: 2022/9/13
  Time: 19:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 用jsp语句,将servlet传过来的list数据拿到,并放到一个list中 -->
<%
    ArrayList list = (ArrayList) request.getAttribute("list");
%>
<html>
<head>
    <title>展示数据库内容</title>
</head>
<body>
<table border="1" align="center">
    <caption>部门信息</caption>
    <tr>
        <th>部门号</th>
        <th>部门名</th>
        <th>地址</th>
        <th>部门人数</th>
    </tr>
        <% for(int i = 0;i<list.size();i++){
                Part part =(Part) list.get(i);%>
    <tr>
        <th><%=part.getId() %>
        </th>
        <th><%=part.getName()%>
        </th>
        <th><%=part.getAddress()%>
        </th>
        <th><%=part.getNum()%>
        </th>
            <% }
  		 %>


</body>
</html>

页面之后的效果

image

04

回原页面点击”增加记录到数据库“按钮,跳转至”/Html_Servlet_MySql_Jsp/addindex.html“页面

image

一个简单的表单页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="AddServlet" align="center" method="post">
    <lable>请输入部门信息:</lable>
    <br><br>
    部门号:
    <input id="id" name="id" type="text"/><br>
    部门名:
    <input name="name" type="text"><br>
    地址:
    <input name="address" type="text"><br>
    部门人数:
    <input name="number" type="text"><br><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

image

填写表单并提交,post方式发送给AddServlet

05

package ll;

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;

@WebServlet("/ll.AddServlet")
public class AddServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("到了Servlet!!!");
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        String address = request.getParameter("address");
        int num = Integer.parseInt(request.getParameter("number"));
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            System.out.println("到达AddServlet");
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("创建驱动成功!");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Html_Servlet_MySql_Jsp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC", "root", "1234");
            System.out.println("创建数据库成功!");
            String sql = "INSERT INTO part(id,name,address,num)VALUES(?,?,?,?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, id);
            pstmt.setString(2, name);
            pstmt.setString(3, address);
            pstmt.setInt(4, num);
            int result = pstmt.executeUpdate();
            if (result == 1) {
                response.getWriter().print("<script>alert('插入数据成功!');window.location.href='/Html_Servlet_MySql_Jsp/index.html'</script>");
            } else {
                out.print("插入数据失败!请重新插入");
            }

        } catch (Exception e) {
            out.println("无法连接数据库!请检查数据库连接是否正确!");
        }
        out.flush();
        out.close();
    }
}

提示插入成功

image

查看数据库

image

成功

补充说明

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>AddServlet</servlet-name>
        <servlet-class>ll.AddServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ShowServlet</servlet-name>
        <servlet-class>ll.ShowServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/AddServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ShowServlet</servlet-name>
        <url-pattern>/ShowServlet</url-pattern>
    </servlet-mapping>
</web-app>

web.xml中需要添加Servlet与url的映射

posted @ 2022-09-14 23:07  ll2001gjh  阅读(31)  评论(0)    收藏  举报