将HTTPRequest参数传递给另一个请求

时间:2019-05-11 20:32:36

标签: java jsp servlets url-parameters

在我的CRUD MVC Web应用程序中,有一个users.jsp servlet调用的/users页面,该页面显示了用户分页表,每个用户都有执行操作的按钮(例如,授予管理员权限)但不要重定向到单独的jsp页面。通过单击按钮时调用一个单独的servlet来执行该操作:

<button formaction="changeUserRights">Grant admin rights</button>

changeUserRights servlet执行相应的数据库操作并调用

resp.sendRedirect("/users")

呈现分页并重定向到users.jsp

但是,当我在页面2+上单击Grant admin rights按钮时(例如users?page=3),应用程序会将我重定向到默认页面/users

如何使应用程序停留在同一页面上,即保存page参数?我知道如何将参数另存为请求属性,并将其传递给同一请求中的其他servlet,但据我所知,我在单击按钮时创建了一个新请求。我想我可以将参数保存在sessionScope中,但是我相信有更好的方法。那么,如何通过jsp发出的新请求将此参数传递给/changeUserRights servlet?

我在SO上阅读了几篇有关如何保持在同一页面上的帖子,例如this one,但不知道如何将其应用于我的问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

好,那很容易。

  1. 将jsp调用更新为:
<button formaction="changeUserRights?page=${currentPage}">Grant admin rights</button>

其中currentPage是由在Web应用程序中执行页面分页的服务设置的请求属性。

  1. changeUserRights servlet中读取参数:
String pageNumber = "1";
if (req.getParameter("page") != null) {
    pageNumber = req.getParameter("page")
}
  1. 重定向回/users时传递参数:
resp.sendRedirect("/users?page=" + pageNumber);