2025.3.5
给出指令:
利用Intelij IDEA构建一个Web项目,选择Maven,服务器为Tomcat,要求完成物资类别单的增删改查。 具体要求为: 在MySQL数据库中创建物资类别表,包含物资名称、规格、材料,需要满足不同的物资名称、规格、材质的物资不能设立相同的物资编码,随后在Intelij IDEA创建Maven的Web项目,与MySQL数据库连接,利用HTML与Servlet完成物资类别单的新增、删除、修改、查询四个功能。
源程序代码:
package com.example.dao;
import com.example.entity.MaterialCategory;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class MaterialCategoryDAO {
private static final String URL = "jdbc:mysql://localhost:3306/yourdbname";
private static final String USER = "root";
private static final String PASSWORD = "password";
// 添加物资类别
public boolean addMaterialCategory(MaterialCategory category) {
String sql = "INSERT INTO material_category (code, name, specification, material) VALUES (?, ?, ?, ?)";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, category.getCode());
pstmt.setString(2, category.getName());
pstmt.setString(3, category.getSpecification());
pstmt.setString(4, category.getMaterial());
int rows = pstmt.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
// 查询所有物资类别
public List<MaterialCategory> getAllMaterialCategories() {
List<MaterialCategory> categories = new ArrayList<>();
String sql = "SELECT * FROM material_category";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
MaterialCategory category = new MaterialCategory();
category.setCode(rs.getString("code"));
category.setName(rs.getString("name"));
category.setSpecification(rs.getString("specification"));
category.setMaterial(rs.getString("material"));
categories.add(category);
}
} catch (SQLException e) {
e.printStackTrace();
}
return categories;
}
// 根据编码查询物资类别
public MaterialCategory getMaterialCategoryByCode(String code) {
String sql = "SELECT * FROM material_category WHERE code = ?";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, code);
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
MaterialCategory category = new MaterialCategory();
category.setCode(rs.getString("code"));
category.setName(rs.getString("name"));
category.setSpecification(rs.getString("specification"));
category.setMaterial(rs.getString("material"));
return category;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 更新物资类别
public boolean updateMaterialCategory(MaterialCategory category) {
String sql = "UPDATE material_category SET name = ?, specification = ?, material = ? WHERE code = ?";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, category.getName());
pstmt.setString(2, category.getSpecification());
pstmt.setString(3, category.getMaterial());
pstmt.setString(4, category.getCode());
int rows = pstmt.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
// 删除物资类别
public boolean deleteMaterialCategory(String code) {
String sql = "DELETE FROM material_category WHERE code = ?";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, code);
int rows = pstmt.executeUpdate();
return rows > 0;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
// 检查编码是否存在
public boolean checkCodeExists(String code) {
String sql = "SELECT COUNT(*) FROM material_category WHERE code = ?";
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, code);
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
int count = rs.getInt(1);
return count > 0;
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
package com.example.entity;
public class MaterialCategory {
private String code;
private String name;
private String specification;
private String material;
// Getters and Setters
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSpecification() {
return specification;
}
public void setSpecification(String specification) {
this.specification = specification;
}
public String getMaterial() {
return material;
}
public void setMaterial(String material) {
this.material = material;
}
} package com.example.servlet;
import com.example.dao.MaterialCategoryDAO;
import com.example.entity.MaterialCategory;
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("/addCategory")
public class AddMaterialCategoryServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String code = request.getParameter("code");
String name = request.getParameter("name");
String specification = request.getParameter("specification");
String material = request.getParameter("material");
MaterialCategoryDAO dao = new MaterialCategoryDAO();
// 检查编码是否存在
if (dao.checkCodeExists(code)) {
request.setAttribute("error", "物资编码已存在!");
request.getRequestDispatcher("addCategory.jsp").forward(request, response);
return;
}
MaterialCategory category = new MaterialCategory();
category.setCode(code);
category.setName(name);
category.setSpecification(specification);
category.setMaterial(material);
if (dao.addMaterialCategory(category)) {
response.sendRedirect("listCategories");
} else {
request.setAttribute("error", "添加失败!");
request.getRequestDispatcher("addCategory.jsp").forward(request, response);
}
}
}
package com.example.servlet;
import com.example.dao.MaterialCategoryDAO;
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("/deleteCategory")
public class DeleteMaterialCategoryServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String code = request.getParameter("code");
MaterialCategoryDAO dao = new MaterialCategoryDAO();
if (dao.deleteMaterialCategory(code)) {
response.sendRedirect("listCategories");
} else {
request.setAttribute("error", "删除失败!");
request.getRequestDispatcher("listCategories.jsp").forward(request, response);
}
}
}
package com.example.servlet;
import com.example.dao.MaterialCategoryDAO;
import com.example.entity.MaterialCategory;
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("/editCategory")
public class EditMaterialCategoryServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String code = request.getParameter("code");
MaterialCategoryDAO dao = new MaterialCategoryDAO();
MaterialCategory category = dao.getMaterialCategoryByCode(code);
request.setAttribute("category", category);
request.getRequestDispatcher("editCategory.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String code = request.getParameter("code");
String name = request.getParameter("name");
String specification = request.getParameter("specification");
String material = request.getParameter("material");
MaterialCategoryDAO dao = new MaterialCategoryDAO();
MaterialCategory category = new MaterialCategory();
category.setCode(code);
category.setName(name);
category.setSpecification(specification);
category.setMaterial(material);
if (dao.updateMaterialCategory(category)) {
response.sendRedirect("listCategories");
} else {
request.setAttribute("error", "修改失败!");
request.setAttribute("category", category);
request.getRequestDispatcher("editCategory.jsp").forward(request, response);
}
}
}
package com.example.servlet;
import com.example.dao.MaterialCategoryDAO;
import com.example.entity.MaterialCategory;
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.util.List;
@WebServlet("/listCategories")
public class ListMaterialCategoriesServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MaterialCategoryDAO dao = new MaterialCategoryDAO();
List
request.setAttribute("categories", categories);
request.getRequestDispatcher("listCategories.jsp").forward(request, response);
}
}

浙公网安备 33010602011771号