Abu*_*kar 6 html java jsp servlets post-redirect-get
我有一个index.jsp页面,我有一个表单,用户输入一些数据,使用Controller servlet存储在数据库中.
我想index.jsp在数据库中输入数据后显示与该表单相同的页面().此外,我想显示用户在数据库中输入的所有条目.
我试过用的forward()方法RequestDispatcher.它工作正常(意味着我能够再次显示相同的表单,并使用JSTL显示该用户在表单下输入的所有数据).
但问题是每当用户按下Refresh or F5按钮时,所有先前的数据也会输入到数据库中,并且当我显示所有数据时,也会出现重复的条目.
我想过使用POST-REDIRECT-GET模式,但问题是当我重定向时我没有使用JSTL显示这些数据.
我该怎么做?
我想过使用POST-REDIRECT-GET模式,但问题是当我重定向时,我没有使用JSTL显示这些数据.
只需发送一个请求参数,即可识别您要在新GET请求中显示的信息.
// ...
Long id = dataService.save(data);
// ...
response.sendRedirect(request.getContextPath() + "/index?editId=" + id);
Run Code Online (Sandbox Code Playgroud)
然后在映射到URL模式的servlet中/index
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long editId = Long.valueOf(request.getParameter("editId")); // Handle nullcheck yourself.
Data editData = dataService.find(editId);
request.setAttribute("editData", editData); // For the edit form.
List<Data> allData = dataService.list();
request.setAttribute("allData", allData); // For the table/list of all data.
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
Run Code Online (Sandbox Code Playgroud)
我会在页面中添加一个不可见的ID.如果数据是数据库的新数据(ID =未知),请插入并创建ID并使用ID更新页面.这样你知道它是否是一个ID!=未知,你不必进行插入.如果数据没有改变,你甚至不需要做更新......
| 归档时间: |
|
| 查看次数: |
7932 次 |
| 最近记录: |