ServletActionContext.getRequest()返回NULL

时间:2011-02-07 13:48:40

标签: servlets struts2

我正在处理混乱的情况,我正在使用Servlets& Struts2的。

我正在调用HTTPServlet以及我处理数据的位置。

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

因为我也在使用HTTPSession。

所以我打电话给

ServletActionContext.getRequest()

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

Struts Action类被Servlet调用。

但是

ServletActionContext.getRequest()

始终返回NULL。

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

1 个答案:

答案 0 :(得分:5)

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

据说,Struts2是一个比Servlet API更高级的抽象。您从servlet中调用Struts2操作的事实听起来确实错误。

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

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