我正在使用Servlets&Struts2的混合情况下工作。
我正在调用HTTPServlet,并且正在处理数据。
然后,我需要调用struts API在DB中插入数据。
在那我也使用HTTPSession。
所以我打电话
ServletActionContext.getRequest()
要获取HttpRequest,然后在该struts动作类中进行会话。
Servlet正在调用Struts Action类。
但
始终返回NULL。
是因为它没有被网络调用。
首先,ServletActionContext和ActionContext既使用ThreadLocal来存储每个请求对象(如请求和响应)。这由Struts2处理。如果您尝试从Servlet调用它们,它们将返回null,因为请求已路由到您的Servlet,而不是Struts2(因此Struts2并未为该请求创建操作上下文)。
ServletActionContext
ActionContext
话虽如此,Struts2是Servlet API的更高层次的抽象。您从Servlet内调用Struts2动作的事实听起来确实是错误的。
如果您需要同时在servlet和操作中执行一些通用过程,则创建一个单独的类来处理该过程(即,在数据库中插入数据),然后从您的servlet和操作中调用该类。
如果这不是您要尝试的操作,请提供更多详细信息,以及servlet和操作代码的示例。