如何在几个HTML页面中使用servlet中的属性



我正在自学网络开发,并使用YelpAPI构建一个网站来搜索您所在地区的餐厅。我已经完成了搜索,但我希望用户能够点击其中一个结果,并打开一个扩展的.jsp页面,在那里显示有关该餐厅的其他详细信息。问题是,我不知道如何在多个页面上继续使用我从servlet中的Yelp检索到的数据。以下是我的代码摘要:

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

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);

最新更新