如何在多个 HTML 页面中使用来自 servlet 的属性

How to use attributes from servlet in several HTML pages

我正在自学网络开发并建立一个网站,使用 YelpAPI 搜索您所在地区的餐馆。我的搜索工作正常,但我希望用户能够单击其中一个结果并打开一个 expanded.jsp 页面,其中显示有关该餐厅的其他详细信息。问题是我不知道如何在多个页面上的 servlet 中继续使用从 Yelp 检索到的数据。下面是我的代码的概要:

我有一个使用 YelpAPI 获取 10 家餐厅列表的 servlet。然后它将此列表设置为属性并转发到结果页面。

List<Restaurant> restaurants = getRestaurants(name, location);      
request.setAttribute("data", restaurants);
request.getRequestDispatcher("/results.jsp").forward(request, response);

然后我(在 results.jsp 内)使用一些 JSTL 来创建结果页面。这一切都很好!

<c:forEach var="restaurant" items="${data}">
    <a href="expanded.jsp"><img src="${restaurant.image_url}"></a>
    <p>${restaurant.name}</p>
    <p>${restaurant.location}</p>
    <a href="${restaurant.url}">Reviews</a>
</c:forEach>

当用户单击其中一个图像(嵌套在锚标记中)时,它显然会重定向到 expanded.jsp 但所有属性都已被清除为 null 并且似乎无法访问任何特定餐厅的此数据。我不是在寻找任何人为我编写代码,但我希望深入了解我应该采取什么方法才能让用户单击餐厅图片并继续访问包含该餐厅更多详细信息的页面。

该方法是为餐厅详细信息创建一个单独的 Servlet。此 Servlet 将根据唯一 ID 获取餐厅详细信息。

<c:forEach var="restaurant" items="${data}">
    <a href="expanded?id=${restaurant.id}"><img src="${restaurant.image_url}"></a>
    (...)
</c:forEach>

在 servlet 中,您将根据 id 获取餐厅详细信息。

String id = request.getParameter("id");
Restaurant restaurant = getRestaurant(id);
request.setAttribute("restaurant", restaurant);