gpt4 book ai didi

java - 如何从 HttpServlet 的 doPost() 方法返回一些数据?

转载 作者:行者123 更新时间:2023-12-02 04:53:38 26 4
gpt4 key购买 nike

我正在编写一个扩展 HttpServlet 的 java 类,从而覆盖 doPost() 方法。在 doPost() 方法内部,组装了一些数据对象,但我不确定返回数据的更好方法是什么。例如,

public class FormSubmission extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// http request is parsed to assemble an object, e.g., a List
List L = parseRequest(request);

// Question: how to return List L for use by Server?
}
}

我能想到的一种方法是将静态变量声明为

Public static List L;

并调用FormSubmission.L,这基本上使List L成为一个全局变量。

另一种方法是将数据字节写入文件,以便稍后可以将其读回到列表中。

但是有更好的方法来处理这种情况吗?

基于评论的用例:

在主页“index.html”中创建了两个带有HTTP/POST的表单,表单A和B。要求用户先提交表单A,然后提交表单B。提交表单A会触发上述doPost()方法,这样就构造了List L。该场景是如何使该列表可用于处理表单 B 提交。具体来说,如何让表单 B 的 doPost() 方法能够访问在 A 期间创建的 List L前一阶段。

最佳答案

在您的 FormASubmission servlet 中,将 List 保存到用户的 session 对象。

List L = parseRequest(request);

HttpSession session = request.getSession();
session.setAttribute("FormADataList", L);

然后在您的 FormBSumission servlet 中,您可以将此 List 检索为

HttpSession session = request.getSession();
List L = (List) session.getAttribute("FormADataList");
<小时/>

HttpSession 是一个接口(interface),其底层实现由容器提供。每个用户/浏览器与应用程序交互时,此作用域对象仅创建一次。此处存储的任何用户数据在同一用户的多个 HTTP 请求的 session 期间仍然可用。

HttpSession的 javadoc 这么说

Provides a way to identify a user across more than one page request or visit to a Web site and to store information about that user.

关于java - 如何从 HttpServlet 的 doPost() 方法返回一些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28990511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com