综合实践与项目拓展04

  1. 学习使用 Log4j 记录系统运行日志
    1.1 引入 Log4j 依赖
    如果你使用的是 Maven 项目,在 pom.xml 文件中添加以下依赖:
    <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.17.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.17.2</version> </dependency>
    1.2 配置 Log4j
    在项目的 src/main/resources 目录下创建 log4j2.xml 文件
    <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/> </Console> <!-- 文件输出 --> <File name="File" fileName="logs/elderly_assessment.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/> </File> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="File"/> </Root> </Loggers> </Configuration>
    1.3 在 Java 代码中使用 Log4j
    在需要记录日志的类中,添加 Log4j 的日志记录器:
    `import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;

public class ExampleClass {
private static final Logger logger = LogManager.getLogger(ExampleClass.class);

public void doSomething() {
    logger.info("开始执行 doSomething 方法");
    // 业务逻辑代码
    logger.info("doSomething 方法执行结束");
}

}2. 在老年人评估系统中添加日志记录功能 在 Servlet 中添加日志记录 在 AssessmentMetricServlet 类中添加日志记录:import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

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 org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@WebServlet("/AssessmentMetricServlet")
public class AssessmentMetricServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String DB_URL = "jdbc:mysql://localhost:3306/elderly_assessment";
private static final String DB_USER = "your_username";
private static final String DB_PASSWORD = "your_password";
private static final Logger logger = LogManager.getLogger(AssessmentMetricServlet.class);

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    logger.info("接收到 GET 请求,请求路径:" + request.getRequestURI());
    List<AssessmentMetric> metrics = new ArrayList<>();
    try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery("SELECT * FROM assessment_metrics")) {
        logger.info("成功连接到数据库,开始查询评估指标列表");
        while (rs.next()) {
            int metricId = rs.getInt("metric_id");
            String metricName = rs.getString("metric_name");
            String metricDescription = rs.getString("metric_description");
            String scoringRules = rs.getString("scoring_rules");
            double weight = rs.getDouble("weight");
            metrics.add(new AssessmentMetric(metricId, metricName, metricDescription, scoringRules, weight));
        }
        logger.info("查询评估指标列表成功,共查询到 " + metrics.size() + " 条记录");
    } catch (SQLException e) {
        logger.error("查询评估指标列表时发生数据库错误", e);
    }
    request.setAttribute("metrics", metrics);
    request.getRequestDispatcher("assessmentMetrics.jsp").forward(request, response);
    logger.info("请求处理完成,转发到 assessmentMetrics.jsp 页面");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    logger.info("接收到 POST 请求,请求路径:" + request.getRequestURI());
    String metricName = request.getParameter("metricName");
    String metricDescription = request.getParameter("metricDescription");
    String scoringRules = request.getParameter("scoringRules");
    double weight;
    try {
        weight = Double.parseDouble(request.getParameter("weight"));
    } catch (NumberFormatException e) {
        logger.error("权重输入格式错误", e);
        request.setAttribute("errorMessage", "权重输入格式错误,请输入有效的数字。");
        request.getRequestDispatcher("assessmentMetrics.jsp").forward(request, response);
        return;
    }

    if (metricName == null || metricName.isEmpty()) {
        logger.error("指标名称为空,添加指标失败");
        request.setAttribute("errorMessage", "指标名称为必填项,请输入指标名称。");
        request.getRequestDispatcher("assessmentMetrics.jsp").forward(request, response);
        return;
    }

    try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
         PreparedStatement pstmt = conn.prepareStatement(
                 "INSERT INTO assessment_metrics (metric_name, metric_description, scoring_rules, weight) VALUES (?,?,?,?)")) {
        logger.info("成功连接到数据库,开始插入新的评估指标");
        pstmt.setString(1, metricName);
        pstmt.setString(2, metricDescription);
        pstmt.setString(3, scoringRules);
        pstmt.setDouble(4, weight);
        pstmt.executeUpdate();
        logger.info("插入新的评估指标成功,指标名称:" + metricName);
    } catch (SQLException e) {
        logger.error("插入新的评估指标时发生数据库错误", e);
        request.setAttribute("errorMessage", "数据库插入失败,请稍后重试。");
        request.getRequestDispatcher("assessmentMetrics.jsp").forward(request, response);
        return;
    }
    response.sendRedirect("AssessmentMetricServlet");
    logger.info("添加指标成功,重定向到指标列表页面");
}

}`

posted @ 2025-02-19 17:08  七分之一月  阅读(34)  评论(0)    收藏  举报
//雪花飘落效果