首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

ServletActionContext.getRequest()的疑点

2012-12-17 
ServletActionContext.getRequest()的疑问package testimport javax.servlet.http.*import org.apache.s

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 ServletException, IOException,这个方法),具体原因看看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对象


-----------------
To zhengbr:
我是通过url方式发送请求的

-------------------------------------------

用惯了.net,现在换到jsp来,一时有些不习惯。
我的想法是像在C#里那样,直接System.Web.HttpContext.Current.Request这样的方式去获取request对象
也就是说,我不想编写任何Servlet代码或者action代码,也不想继承哪个类,更不想去修改任何配置文件,直接通过实例化或者使用类似调用静态方法那样得到request对象。

struts2我只接触了两天,很多基本的原理我实际上还没搞懂,所以我才希望可以先按以前的习惯去写jsp,但遗憾的是,这似乎很困难。

最后,谢谢大家的回复,下班之后结贴...
[其他解释]
这样似乎不行,request不是静态的,没有办法从静态对象中得到吧
[其他解释]
我的想法是像在C#里那样,直接System.Web.HttpContext.Current.Request这样的方式去获取request对象 
也就是说,我不想编写任何Servlet代码或者action代码,也不想继承哪个类,更不想去修改任何配置文件,直接通过实例化或者使用类似调用静态方法那样得到request对象。
---------------
我想做的是与配置文件无关的事情。。。
[其他解释]
ServletActionContext.getRequest()只有请求时才会被创建.
[其他解释]
我也想这样...

[其他解释]
顶一下

热点排行