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 开发更加高效和易于维护。
Comments NOTHING