在JSP和servlet之间传递参数

时间:2014-07-09 09:15:54

标签: jsp servlets web

我正在开发一个servlet和jsp应用程序,其前端主要用html/css/javascript编码。

现在我已经从login jsp调用了一个servlet,以验证用户名和密码并重定向到dashboard.jsp。这成功地发生了。我意识到,要在发布过程中轻松传递用户名的参数,我们需要使用getRequestDispatcher而不是sendRedirect

我有以下问题。

  1. 现在在dashboard.jsp中,通过标签我会导航到其他各种jsps。 我需要在所有jsps中从servlet传递的用户名。能够 我们将某些东西定义为全局变量并在所有变量中访问它 jsp页面?
  2. 前端主要是接近的方法 jsp里面的html / css / javascript是一个有效的吗?
  3. 请倾注您的意见和专业知识并承担责任!!

2 个答案:

答案 0 :(得分:1)

您可以在将请求转发到jsp之前将所有值设置到响应对象中。或者您可以将值放入会话bean并在jsp中访问它。

您可以使用servletsjsp信息在sessionsservlet context之间来回传递信息。

有关详细信息,请参阅 Sharing values between Servlets and Jsp

答案 1 :(得分:0)

数据在服务器上。您唯一需要知道的是发出当前请求的用户的标识符。这就是HTTP会话的用途。用户成功进行身份验证后,将其唯一ID添加到会话中:

request.getSession().setAttribute("authenticatedUserId", user.getId());

然后在所有后续请求中,您可以从会话中获取经过身份验证的用户的ID,并从数据库中获取有关此用户的信息:

Long authenticatedUserId = request.getSession().getAttribute(("authenticatedUserId");
User user = userService.findById(authenticatedUserId);
// store the user in the request to make it available to the view
request.setAttribute("user, user);

请注意,登录后,您绝对应该重定向到仪表板servlet,而不是转发给它:您真的不希望用户刷新仪表板并重新发布身份验证表单。