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 getAllMaterialCategories() {
List 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 categories = dao.getAllMaterialCategories();
request.setAttribute("categories", categories);
request.getRequestDispatcher("listCategories.jsp").forward(request, response);
}
}

posted @ 2025-03-03 22:54  被迫敲代码  阅读(17)  评论(0)    收藏  举报