当前位置: 代码迷 >> Java Web开发 >> ServletActionContext.getRequest()的疑点
  详细解决方案

ServletActionContext.getRequest()的疑点

热度:10388   发布时间:2013-02-25 21:07:42.0
ServletActionContext.getRequest()的疑问

package test;

import javax.servlet.http.*;
import org.apache.struts2.ServletActionContext;

public class HttpRequest {
public String doGet()
{
HttpServletRequest request = ServletActionContext.getRequest();
if(request==null)
return "null";
return "Object";
}
}
//问什么request得到的是null?
//如果我想在一般的class中使用request、response这些对象,除了在页面上将它们作为参数传递到方法里之外还有没有别的办法?

------最佳解决方案--------------------------------------------------------
帮你顶
------其他解决方案--------------------------------------------------------
request就是提交请求么
------其他解决方案--------------------------------------------------------
我测试是request = ServletActionContext.getRequest();这句的问题,你直接用doGet方法的参数里的request就好了(不是你这个doGet方法,是默认的protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletExceptionIOException,这个方法),具体原因看看Struts文档吧,我觉得可能是因为在其他部分没有应用Struts,所以用ServletActionContext的getRequest方法得不到请求的原因,所以返回null。
------其他解决方案--------------------------------------------------------
你可能是一个超链接过来的,或者你的请求里没有任何信息,如果你的表单里有,但你已经用属性给接收了那么这个request里就没有了,不知道你明白没明白
你想在任何一个类里得到是有可能的,那需要你刻苦的学习,然后从服务器直接得到request就不用servlet了,也就是说你自己写了一个serlvet那样你就牛了,反正我现在是整不出来
------其他解决方案--------------------------------------------------------
不明白,是不是服务器的问题,没碰到过
------其他解决方案--------------------------------------------------------
你的配置有问题
我这都是好的

楼主用的是struts2,不是普通的httpservlet,所以没有那些参数。
我试了从action调用和jsp页面调用的,都有对象:
org.apache.struts2.dispatcher.StrutsRequestWrapper@1957119
org.apache.struts2.dispatcher.StrutsRequestWrapper@143e0f7

检查一下配置吧
------其他解决方案--------------------------------------------------------
HttpRequest 是什么?一个servlet?为什么不继承HttpServlet?
不是servlet,你怎么访问这个HttpRequest 类的?request怎么传递的?
------其他解决方案--------------------------------------------------------
配置文件发下,看看
------其他解决方案--------------------------------------------------------
或许Java和.net在这方面的思路不同吧,你这样的方式应该没法得到request,既然你要学新东西就不要一直抱着老想法不放,要是你以前是用汇编的,难道学了Java还要直接操纵硬件吗?
------其他解决方案--------------------------------------------------------
引用:
你的配置有问题
我这都是好的

楼主用的是struts2,不是普通的httpservlet,所以没有那些参数。
我试了从action调用和jsp页面调用的,都有对象:
org.apache.struts2.dispatcher.StrutsRequestWrapper@1957119
org.apache.struts2.dispatcher.StrutsRequestWrapper@143e0f7

检查一下配置吧

可能是这里的原因吧……
------其他解决方案--------------------------------------------------------
没人...
哎~
------其他解决方案--------------------------------------------------------
散分了。。。
------其他解决方案--------------------------------------------------------
引用:
你可能是一个超链接过来的,或者你的请求里没有任何信息,如果你的表单里有,但你已经用属性给接收了那么这个request里就没有了,不知道你明白没明白
你想在任何一个类里得到是有可能的,那需要你刻苦的学习,然后从服务器直接得到request就不用servlet了,也就是说你自己写了一个serlvet那样你就牛了,反正我现在是整不出来

不对,我把他的代码直接放在一个servlet里,然后直接请求这个servlet,得到的request也是null,而且就算request里没有存储任何数据,起码应该还有header,不应该是null的。
------其他解决方案--------------------------------------------------------
To joneyonly:
不继承HttpServlet是因为我还不大明白这些原理,总是晕乎乎的,想按自己的想法去实现想要的功能。
-----------------
To liltos:
action里调用有对象,这个我是知道的,但是我不习惯这样的方式
-----------------
To ZXEOC:
恩,你测试的内容我没测试过。不过我本意是想通过实例化某个对象或者使用类似调用static方法那样直接获得request对象