- 制作“添加图书”界面,在界面上有一个表单,输入书本号、书本名称和价格,提交,能够用INSERT语句向T_BOOK表中插入记录,但是页面不刷新
代码
Book.java
package chapter12.beans;
public class Book {
private String id;
private String name;
private double price;
public Book(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
BookDao.java
package chapter12.dao;
import chapter12.beans.Book;
import java.sql.*;
import java.util.ArrayList;
public class BookDao {
public ArrayList<Book> findAllBooks() throws ClassNotFoundException, SQLException {
// 1、导入驱动jar包
// 2、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 3、获取数据库的连接对象
Connection conn = DriverManager.getConnection("你的数据库", "用户名", "密码");
// 4、定义sql语句
String sql = "select * from book";
// 5、获取执行sql语句的对象
PreparedStatement ps = conn.prepareStatement(sql);
// 6、执行sql并接收返回结果
ResultSet rs = ps.executeQuery();
// 7、处理结果
ArrayList<Book> books = new ArrayList<>(); // 初始化VO
while (rs.next()) {
books.add(new Book(rs.getString(1), rs.getString(2), rs.getDouble(3)));
}
// 8、释放资源
ps.close();
conn.close();
return books;
}
public void insertBook(String id, String name, double price) throws ClassNotFoundException, SQLException {
// 1、导入驱动jar包
// 2、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 3、获取数据库的连接对象
Connection conn = DriverManager.getConnection("你的数据库", "用户名", "密码");
// 4、定义sql语句
String sql = "insert into book values (?, ?, ?)";
// 5、获取执行sql语句的对象
PreparedStatement ps = conn.prepareStatement(sql);
// 6、执行sql并接收返回结果
ps.setString(1, id);
ps.setString(2, name);
ps.setDouble(3, price);
ps.execute();
// 7、释放资源
ps.close();
conn.close();
}
}
InsertServlet.java
package chapter12.servlet;
import chapter12.dao.BookDao;
import javax.servlet.ServletContext;
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.sql.SQLException;
@WebServlet(name = "InsertServlet", urlPatterns = {"/insertServlet"})
public class InsertServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String name = request.getParameter("name");
double price = Double.parseDouble(request.getParameter("price"));
BookDao bookDao = new BookDao();
try {
bookDao.insertBook(id, name, price);
ServletContext application = this.getServletContext();
application.getRequestDispatcher("/chapter12/12_1/list.jsp").forward(request, response);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
insert.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>插入数据</title>
<script src="ajax.js" lang="javascript"></script>
</head>
<body>
<form name="insertForm">
图书ID:<input name="id" type="text"><br>
图书名称:<input name="name" type="text"><br>
图书价格:<input name="price" type="number"><br>
<input type="button" value="插入" onclick="insert()">
</form>
<div id="resultDiv"></div>
</body>
</html>
ajax.js
function insert() {
let id = document.insertForm.id.value
let name = document.insertForm.name.value
let price = document.insertForm.price.value
let xmlHttp = new XMLHttpRequest() // 建议不要使用ActiveXObject("Msxml2.XMLHTTP")
let url = `/JavaWebCDUT/insertServlet?id=${id}&name=${name}&price=${price}`
xmlHttp.open("POST", url, true)
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
resultDiv.innerHTML = xmlHttp.responseText
} else {
resultDiv.innerHTML += "正在插入,请稍候……"
}
}
xmlHttp.send()
}
list.jsp
<%@ page import="chapter12.dao.BookDao" %>
<%@ page import="chapter12.beans.Book" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
BookDao bookDao = new BookDao();
ArrayList<Book> books = bookDao.findAllBooks();
%>
<table>
<tr>
<th>图书ID</th>
<th>图书名称</th>
<th>图书价格</th>
</tr>
<%
if (books != null) {
for (Book book : books) {
out.println(String.format("<tr><td>%s</td><td>%s</td><td>%.2f</td></tr>", book.getId(), book.getName(), book.getPrice()));
}
}
%>
</table>
</body>
</html>