jsp 语言 JSP 通过 JSTL 标签进行数据分组统计示例

JSP阿木 发布于 2025-06-26 12 次阅读


JSP 通过 JSTL 标签进行数据分组统计示例

JavaServer Pages (JSP) 是一种动态网页技术,它允许开发人员使用 Java 代码来创建动态网页。JSP 与 Java Servlet 和 JavaBeans 一起工作,可以创建交互式、高性能的 Web 应用程序。JavaServer Pages Standard Tag Library (JSTL) 是一组 JSP 标签,它提供了一种标准化的方式来执行常见任务,如数据格式化、数据库访问和流程控制。

我们将通过一个示例来展示如何使用 JSP 和 JSTL 标签进行数据分组统计。我们将创建一个简单的 Web 应用程序,该程序从数据库中检索数据,并使用 JSTL 标签对数据进行分组和统计。

环境准备

在开始之前,请确保您有以下环境:

1. Java Development Kit (JDK) 1.8 或更高版本。

2. Apache Tomcat 9 或更高版本。

3. 数据库(例如 MySQL)和相应的 JDBC 驱动程序。

示例需求

假设我们有一个名为 `employees` 的数据库表,其中包含以下列:

- `id`:员工 ID(主键)

- `name`:员工姓名

- `department`:部门名称

- `salary`:薪资

我们的目标是统计每个部门的平均薪资。

步骤 1:创建 JSP 页面

创建一个名为 `groupedStatistics.jsp` 的 JSP 页面。

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


<html>


<head>


<title>Grouped Statistics Example</title>


</head>


<body>


<h1>Employee Salary Statistics by Department</h1>


<%


// 假设这里有一个数据库连接对象 dbConnection


// dbConnection = getDatabaseConnection();


%>


<c:choose>


<c:when test="${not empty dbConnection}">


<%


// 创建 SQL 查询语句


String sql = "SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department";


// 执行查询并获取结果集


ResultSet rs = executeQuery(dbConnection, sql);


%>


<table border="1">


<tr>


<th>Department</th>


<th>Average Salary</th>


</tr>


<c:forEach var="row" items="${rs}">


<tr>


<td><c:out value="${row.department}"/></td>


<td><fmt:formatNumber value="${row.average_salary}" pattern=",.00" /></td>


</tr>


</c:forEach>


</table>


<%


// 关闭结果集和数据库连接


rs.close();


// dbConnection.close();


%>


</c:when>


<c:otherwise>


<p>Database connection failed.</p>


</c:otherwise>


</c:choose>


</body>


</html>


步骤 2:实现数据库连接和查询

在上面的代码中,我们使用了 `dbConnection` 对象来表示数据库连接。在实际应用中,您需要实现数据库连接的逻辑。以下是一个简单的示例,展示了如何使用 JDBC 连接到数据库并执行查询。

java

import java.sql.;

public class DatabaseUtil {


private static final String URL = "jdbc:mysql://localhost:3306/your_database";


private static final String USER = "your_username";


private static final String PASSWORD = "your_password";

public static Connection getDatabaseConnection() {


try {


Class.forName("com.mysql.cj.jdbc.Driver");


return DriverManager.getConnection(URL, USER, PASSWORD);


} catch (ClassNotFoundException | SQLException e) {


e.printStackTrace();


return null;


}


}

public static ResultSet executeQuery(Connection conn, String sql) throws SQLException {


Statement stmt = conn.createStatement();


return stmt.executeQuery(sql);


}


}


步骤 3:部署和测试

将 `groupedStatistics.jsp` 文件和 `DatabaseUtil` 类部署到您的 Tomcat 服务器上。在浏览器中访问 `http://localhost:8080/your-app-context/groupedStatistics.jsp`,您应该能看到每个部门的平均薪资统计。

总结

通过使用 JSP 和 JSTL 标签,我们可以轻松地实现数据分组统计。JSTL 提供了丰富的标签库,可以帮助我们简化 JSP 页面的开发过程。在实际应用中,您可以根据需要扩展这个示例,添加更多的统计功能和错误处理逻辑。

请注意,本文中的代码示例仅供参考,实际应用中可能需要根据具体情况进行调整。