一个小玩意
项目结构

项目流程
01

一个简单的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>
页面之后的效果

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

一个简单的表单页面
<!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>

填写表单并提交,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();
}
}
提示插入成功

查看数据库

成功
补充说明
<!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的映射

浙公网安备 33010602011771号