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

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