【问题标题】:Java Web App: Passing form parameters across multiple pagesJava Web App:跨多个页面传递表单参数
【发布时间】:2010-04-05 23:46:20
【问题描述】:

在流程中从一个页面到另一个页面传递表单参数的最佳实践或最佳方式是什么?如果我有一个流程,其中用户在表单中输入数据并点击下一步并重复此过程,直到他们到达批准页面,我可以通过哪些方式解决此问题以使数据保留在流程中尽可能简单?

我想您可以在会话中输入所有信息,但如果很多人同时使用您的应用程序并浏览流程,您是否会遇到记忆问题?

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    您可以将数据存储到Cookies 或将它们存储到Session 并在不同的网页之间访问它们。

    【讨论】:

      【解决方案2】:

      如果您想跟踪“向导”样式的数据条目,HttpSession 是您的最佳选择。 只是附议@Rachel 的意见。

      处理您的页面提交的服务器端组件(例如 Servlet)将包含如下代码:

      public void doPost (HttpServletRequest req, HttpServletResponse res)
          throws ServletException, IOException    
      {
          HttpSession session = req.getSession();
          session.setAttribute("Variable1", request.getParameter("input1"));
          //and so on..
      

      HttpSession 提供了一种在多个页面请求或访问网站时识别用户并存储有关该用户的信息的方法。

      【讨论】:

      • 确实如此。 Http 是无状态的,所以会话是要走的路。至于内存问题,这取决于服务器和JVM的配置方式。
      • HttpSession#putValue() 自 Servlet 2.2(>10 年前)以来已弃用。请改用HttpSession#setAttribute()。此外,您可以只使用 request.getSession() 而不使用布尔值来获取它,无论它是否已经创建。
      • 是的 @BalusC +1 .. 很久很久以前,当我编写一个原始 servlet 时
      • 既然你没有,我很乐意相应地编辑答案。
      【解决方案3】:

      您也可以将属性放在请求范围内。从 JSP 中的 EL 以相同的方式访问它们,但不需要会话。根据您的情况,您可能不希望为每个用户启动会话。

      【讨论】:

        猜你喜欢
        • 2014-10-30
        • 1970-01-01
        • 2020-03-04
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 2020-04-21
        相关资源
        最近更新 更多