我正在处理混合的情况,我正在使用Servlets和Struts2.
我正在调用HTTPServlet以及我正在处理数据的地方.
然后我需要调用struts API来在DB中插入数据.
在那我也使用HTTPSession.
所以我在打电话
ServletActionContext.getRequest()
Run Code Online (Sandbox Code Playgroud)
在struts动作类中获取HttpRequest然后进行会话.
Struts Action类被Servlet调用.
但
ServletActionContext.getRequest()
Run Code Online (Sandbox Code Playgroud)
总是返回NULL.
是因为它没有被网络调用.
首先,ServletActionContext
并ActionContext
都使用ThreadLocal
来存储每个请求对象(如请求和响应).这由Struts2处理.如果您尝试从Servlet调用它们,它们将返回null
,因为请求被路由到您的servlet,而不是Struts2(因此Struts2没有为请求创建操作上下文).
话虽如此,Struts2是一个比Servlet API更高级的抽象.您从servlet中调用Struts2操作的事实听起来确实是错误的.
如果需要在servlet和action中执行一些公共过程,则创建一个单独的类来处理该过程(即,在数据库中插入数据),然后从servlet和action中调用该类.
如果那不是您想要做的,那么请提供更多详细信息,以及您的servlet和操作代码示例.
归档时间: |
|
查看次数: |
5164 次 |
最近记录: |