首先尝试:
我在servlet中生成数据,然后在请求中将其设置为属性,并通过调用requestDispatcher将该请求发送到jsp,如下所示:
request.setAttribute("data",data);
request.getRequestDispatcher("/page.jsp").forward(request, response);
现在在jsp中访问它并显示数据。
这样可以正常工作,但每次用户刷新页面时都会收到提示,说明您要重新提交表单并要求确认。这很烦人。
第二次尝试:
将数据放入会话并在jsp页面中访问。这样,会话变得非常繁重,因为数据量很大。
所以我的问题是将数据从servlet传递到jsp的最佳方法是什么? 这里的数据是对象列表。
答案 0 :(得分:2)
你的第一个解决方案是好的解决方案。使用会话来保存特定于单个请求的数据不是一个好习惯。用户获得确认消息的事实与数据从servlet传递到JSP的方式无关。这与他们正在查看和刷新的页面是POST请求的结果有关。
使用Redirect after Post (or Post-Redirect-Get) pattern来避免此问题。
例如,假设您要保存新产品,并在保存产品后(使用POST请求),您希望显示产品的类别页面。它会这样: