Java向JSP传递列表的实现

在Java Web开发中,JSP(JavaServer Pages)技术广泛用于动态网页的生成。传递Java集合(如列表)到JSP页面是一个常见需求。本文将介绍如何在Java Servlet中创建一个列表并将其传递到JSP页面。我们将通过代码示例来具体演示整个过程,并使用Mermaid语法展示类图和序列图来帮助理解。

1. 项目结构

我们的项目将包含以下类和文件:

  • User类:表示用户对象。
  • UserServlet类:处理请求并将数据传送到JSP。
  • users.jsp:展示用户列表。

1.1 类图

classDiagram
    class User {
        +String name
        +int age
        +User(String name, int age)
    }
    class UserServlet {
        +doGet(HttpServletRequest request, HttpServletResponse response)
    }

2. Demo代码

2.1 创建用户类

首先,创建一个表示用户的简单Java类User

public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

2.2 创建Servlet

接下来,创建一个Servlet,负责生成用户列表,并将其传递给JSP页面:

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.ArrayList;
import java.util.List;

@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<User> userList = new ArrayList<>();
        
        userList.add(new User("Alice", 25));
        userList.add(new User("Bob", 30));
        userList.add(new User("Charlie", 22));
        
        request.setAttribute("users", userList);
        request.getRequestDispatcher("users.jsp").forward(request, response);
    }
}

2.3 创建JSP页面

最后,创建users.jsp文件,展示用户列表:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>User List</title>
</head>
<body>
<h2>User List</h2>
<ul>
<%
    List<User> users = (List<User>) request.getAttribute("users");
    for (User user : users) {
%>
    <li><strong>Name:</strong> <%= user.getName() %>, <strong>Age:</strong> <%= user.getAge() %></li>
<%
    }
%>
</ul>
</body>
</html>

3. 序列图

下面的序列图展示了用户请求从Servlet到JSP的过程:

sequenceDiagram
    participant User as User
    participant Servlet as UserServlet
    participant JSP as users.jsp

    User->>Servlet: 发起请求
    Servlet->>Servlet: 创建用户列表
    Servlet->>JSP: 设置请求属性并转发
    JSP->>User: 展示用户列表

4. 结尾

通过以上示例,我们成功地将一个用户列表从Java Servlet传递到JSP页面。这样的结构不仅提高了代码的可读性和可维护性,而且使得开发者能够灵活地处理数据和展示层的分离。希望通过本文章,您对Java与JSP的数据交互有了更深入的理解。在实际开发中,您可以继续尝试和扩展这一基本例子,以满足更复杂的需求。