首先,
ServletActionContext和
ActionContext既使用ThreadLocal来存储每个请求对象(如请求和响应)。这由Struts2处理。如果您尝试从Servlet调用它们,它们将返回null,因为请求已路由到您的Servlet,而不是Struts2(因此Struts2并未为该请求创建操作上下文)。
话虽如此,Struts2是Servlet API的更高层次的抽象。您从Servlet内调用Struts2动作的事实听起来确实是错误的。
如果您需要同时在servlet和操作中执行一些通用过程,则创建一个单独的类来处理该过程(即,在数据库中插入数据),然后从您的servlet和操作中调用该类。
如果这不是您要尝试的操作,请提供更多详细信息,以及servlet和操作代码的示例。



