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

JSP阿木 发布于 2025-07-03 18 次阅读


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) 安装在您的计算机上。

2. 一个支持 JSP 和 Servlet 的 Web 服务器,如 Apache Tomcat。

3. 一个数据库服务器,如 MySQL 或 PostgreSQL。

示例需求

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

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

- `name`:员工姓名

- `department`:部门名称

- `salary`:员工薪水

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

步骤 1:创建 Web 应用程序

创建一个名为 `EmployeeStats` 的 Web 应用程序。

1. 在 Web 服务器的 `webapps` 目录下创建一个名为 `EmployeeStats` 的文件夹。

2. 在 `EmployeeStats` 文件夹中创建一个名为 `WEB-INF` 的子文件夹。

3. 在 `WEB-INF` 文件夹中创建一个名为 `web.xml` 的文件,并添加以下内容:

xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee


http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"


version="3.1">

<servlet>


<servlet-name>EmployeeStatsServlet</servlet-name>


<servlet-class>EmployeeStatsServlet</servlet-class>


</servlet>


<servlet-mapping>


<servlet-name>EmployeeStatsServlet</servlet-name>


<url-pattern>/stats</url-pattern>


</servlet-mapping>

</web-app>


步骤 2:创建 Servlet

在 `EmployeeStats` 文件夹中创建一个名为 `EmployeeStatsServlet.java` 的文件,并添加以下内容:

java

import javax.servlet.;


import javax.servlet.http.;


import java.io.IOException;


import java.sql.;


import java.util.ArrayList;


import java.util.List;

public class EmployeeStatsServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


List<DepartmentStats> stats = new ArrayList<>();


try {


Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdatabase", "username", "password");


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


Statement stmt = conn.createStatement();


ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {


DepartmentStats deptStats = new DepartmentStats();


deptStats.setDepartment(rs.getString("department"));


deptStats.setAvgSalary(rs.getDouble("avg_salary"));


stats.add(deptStats);


}


rs.close();


stmt.close();


conn.close();


} catch (SQLException e) {


e.printStackTrace();


}

request.setAttribute("stats", stats);


RequestDispatcher dispatcher = request.getRequestDispatcher("/stats.jsp");


dispatcher.forward(request, response);


}


}

class DepartmentStats {


private String department;


private double avgSalary;

// Getters and setters


public String getDepartment() {


return department;


}

public void setDepartment(String department) {


this.department = department;


}

public double getAvgSalary() {


return avgSalary;


}

public void setAvgSalary(double avgSalary) {


this.avgSalary = avgSalary;


}


}


确保将 `yourdatabase`、`username` 和 `password` 替换为您的数据库连接信息。

步骤 3:创建 JSP 页面

在 `EmployeeStats` 文件夹中创建一个名为 `stats.jsp` 的文件,并添加以下内容:

jsp

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


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


<html>


<head>


<title>Employee Statistics</title>


</head>


<body>


<h1>Employee Statistics</h1>


<c:forEach var="stat" items="${stats}">


<div>


<h2>${stat.department}</h2>


<p>Average Salary: ${stat.avgSalary}</p>


</div>


</c:forEach>


</body>


</html>


步骤 4:部署和运行

1. 将 `EmployeeStats` 文件夹部署到您的 Web 服务器。

2. 启动 Web 服务器。

3. 在浏览器中访问 `http://localhost:8080/EmployeeStats/stats`。

您应该会看到一个页面,显示了每个部门的平均薪水。

总结

在这个示例中,我们使用 JSP 和 JSTL 标签创建了一个简单的 Web 应用程序,该程序从数据库中检索数据,并使用 JSTL 标签对数据进行分组和统计。这个示例展示了如何使用 JSTL 标签简化数据操作和显示,使 JSP 开发更加高效和易于维护。