Java 如何将变量中的数据从servlet发布到servlet?

Java 如何将变量中的数据从servlet发布到servlet?,java,servlets,Java,Servlets,我已经将一个文件上传到servlet。现在我想执行一些操作,将我转移到另一个servlet。我已经从上传的数据中生成了一些字符串,现在我需要将其发布到另一个servlet,该servlet将从变量中捕获该字符串。如何执行?您可以将请求转发(服务器端)到下一个servlet: RequestDispatcher dispatcher = request.getRequestDispatcher("/nexturl"); dispatcher.forward(aRequest, aResponse)

我已经将一个文件上传到servlet。现在我想执行一些操作,将我转移到另一个servlet。我已经从上传的数据中生成了一些字符串,现在我需要将其发布到另一个servlet,该servlet将从变量中捕获该字符串。如何执行?

您可以将请求转发(服务器端)到下一个servlet:

RequestDispatcher dispatcher = request.getRequestDispatcher("/nexturl");
dispatcher.forward(aRequest, aResponse);
HttpSession session = request.getSession();
String value session.getAttribute("name");
session.removeAttribute("name");
您可以将解码后的变量附加到会话对象,并从转发到的servlet中检索它。(或者,如果servlet也可以使用参数调用,请检查会话中的变量(使用时将其删除),如果不存在,请尝试解析适当的参数。)

更新

要使用HTTP会话作为传递变量的方式,请添加它:

HttpSession session = request.getSession();
session.setAttribute("name", "value");
并在下一个servlet中检索它:

RequestDispatcher dispatcher = request.getRequestDispatcher("/nexturl");
dispatcher.forward(aRequest, aResponse);
HttpSession session = request.getSession();
String value session.getAttribute("name");
session.removeAttribute("name");
如果使用会话cookie将会话状态映射到来自同一浏览器会话的一系列HTTP请求,则会话将由servlet容器自动创建。

您可以将请求转发(服务器端)到下一个servlet:

RequestDispatcher dispatcher = request.getRequestDispatcher("/nexturl");
dispatcher.forward(aRequest, aResponse);
HttpSession session = request.getSession();
String value session.getAttribute("name");
session.removeAttribute("name");
您可以将解码后的变量附加到会话对象,并从转发到的servlet中检索它。(或者,如果servlet也可以使用参数调用,请检查会话中的变量(使用时将其删除),如果不存在,请尝试解析适当的参数。)

更新

要使用HTTP会话作为传递变量的方式,请添加它:

HttpSession session = request.getSession();
session.setAttribute("name", "value");
并在下一个servlet中检索它:

RequestDispatcher dispatcher = request.getRequestDispatcher("/nexturl");
dispatcher.forward(aRequest, aResponse);
HttpSession session = request.getSession();
String value session.getAttribute("name");
session.removeAttribute("name");

如果使用会话cookie将会话状态映射到来自同一浏览器会话的一系列HTTP请求,则会话将由servlet容器自动创建。

作为将变量存储在会话中的替代方法(如果会话参数管理不正确,则会导致模糊问题),您还可以将字符串作为标准参数传递给第二个servlet。。。现在,您可以告诉我如何将字符串以变量名“var”发布到另一个servlet,因为我的第二个servlet有一个getparameter(“var”)。。我没有维持任何会议。。。你能解释一下如何使用HttpServletRequest包装器吗:)@Coder\u sLaY,我更新了解释如何使用会话的内容。(或者看看aroth在评论中给出的url)而不是将其设置为请求属性。转发只是重复使用相同的请求。这样您就不需要滥用会话。@BalusC您可以解释如何将其设置为请求属性吗?作为在会话中存储变量的替代方法(如果会话参数管理不正确,可能会导致模糊问题),您还可以将字符串作为标准参数传递给第二个servlet。。。现在,您可以告诉我如何将字符串以变量名“var”发布到另一个servlet,因为我的第二个servlet有一个getparameter(“var”)。。我没有维持任何会议。。。你能解释一下如何使用HttpServletRequest包装器吗:)@Coder\u sLaY,我更新了解释如何使用会话的内容。(或者看看aroth在评论中给出的url)而不是将其设置为请求属性。转发只是重复使用相同的请求。那么您就不需要滥用会话。@BalusC您能解释一下如何将其设置为请求属性吗?您有一个设计问题。将业务作业委托给另一个servlet是一种代码味道。另一个servlet显然做得“太多”。您应该将该代码重构为另一个Java类(域对象?),然后将其导入并在两个servlet中重用。将业务作业委托给另一个servlet是一种代码味道。另一个servlet显然做得“太多”。您应该将该代码重构为另一个Java类(域对象?),然后在两个servlet中导入并重用该类。