【问题标题】:Transfer of parameters between JSP and servletsJSP 和 servlet 之间的参数传输
【发布时间】:2014-07-09 09:15:54
【问题描述】:

我正在开发一个 servlet 和 jsp 应用程序,其前端大部分编码为 html/css/javascript

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

我有以下问题。

  1. 现在在dashboard.jsp 中,我通过选项卡导航到其他各种jsp。 我需要从所有 jsps 中的 servlet 传递的用户名。能 我们将某些东西定义为全局变量并在所有对象中访问它 jsp 页面?
  2. 是让前端主要使用的方法 html/css/javascript 里面的jsp 效率高吗?

请说出您的观点和专业知识并提供帮助!

【问题讨论】:

  • 使用session 属性全局传递值。查看答案中的链接

标签: jsp servlets web


【解决方案1】:

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

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

如需更多详细信息,请参阅Sharing values between Servlets and Jsp

【讨论】:

    【解决方案2】:

    数据在服务器上。您唯一需要知道的是发出当前请求的用户的标识符。这就是 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,而不是转发它:您真的不希望用户刷新仪表板并重新发布身份验证表单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2011-01-25
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多