一尘不染

ServletActionContext.getRequest()返回NULL

servlet

我正在使用Servlets&Struts2的混合情况下工作。

我正在调用HTTPServlet,并且正在处理数据。

然后,我需要调用struts API在DB中插入数据。

在那我也使用HTTPSession。

所以我打电话

ServletActionContext.getRequest()

要获取HttpRequest,然后在该struts动作类中进行会话。

Servlet正在调用Struts Action类。

ServletActionContext.getRequest()

始终返回NULL。

是因为它没有被网络调用。


阅读 484

收藏
2020-09-28

共1个答案

一尘不染

首先,ServletActionContextActionContext既使用ThreadLocal来存储每个请求对象(如请求和响应)。这由Struts2处理。如果您尝试从Servlet调用它们,它们将返回null,因为请求已路由到您的Servlet,而不是Struts2(因此Struts2并未为该请求创建操作上下文)。

话虽如此,Struts2是Servlet API的更高层次的抽象。您从Servlet内调用Struts2动作的事实听起来确实是错误的。

如果您需要同时在servlet和操作中执行一些通用过程,则创建一个单独的类来处理该过程(即,在数据库中插入数据),然后从您的servlet和操作中调用该类。

如果这不是您要尝试的操作,请提供更多详细信息,以及servlet和操作代码的示例。

2020-09-28