ServletActionContext.getRequest()的疑问

Atai-Lu 2008-09-18 04:12:19

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这些对象,除了在页面上将它们作为参数传递到方法里之外还有没有别的办法?
...全文
1652 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshilong669 2012-10-31
  • 打赏
  • 举报
回复
顶一下
luxianfang2010 2010-09-24
  • 打赏
  • 举报
回复
ServletActionContext.getRequest()只有请求时才会被创建.
will1777 2009-02-04
  • 打赏
  • 举报
回复
我也想这样...
大河V5 2008-09-19
  • 打赏
  • 举报
回复
HttpRequest 是什么?一个servlet?为什么不继承HttpServlet?
不是servlet,你怎么访问这个HttpRequest 类的?request怎么传递的?
liltos 2008-09-19
  • 打赏
  • 举报
回复
你的配置有问题
我这都是好的

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

检查一下配置吧
B1977 2008-09-19
  • 打赏
  • 举报
回复
不明白,是不是服务器的问题,没碰到过
ZXEOC 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhengbr 的回复:]
你可能是一个超链接过来的,或者你的请求里没有任何信息,如果你的表单里有,但你已经用属性给接收了那么这个request里就没有了,不知道你明白没明白
你想在任何一个类里得到是有可能的,那需要你刻苦的学习,然后从服务器直接得到request就不用servlet了,也就是说你自己写了一个serlvet那样你就牛了,反正我现在是整不出来
[/Quote]
不对,我把他的代码直接放在一个servlet里,然后直接请求这个servlet,得到的request也是null,而且就算request里没有存储任何数据,起码应该还有header,不应该是null的。
B1977 2008-09-19
  • 打赏
  • 举报
回复
你可能是一个超链接过来的,或者你的请求里没有任何信息,如果你的表单里有,但你已经用属性给接收了那么这个request里就没有了,不知道你明白没明白
你想在任何一个类里得到是有可能的,那需要你刻苦的学习,然后从服务器直接得到request就不用servlet了,也就是说你自己写了一个serlvet那样你就牛了,反正我现在是整不出来
ZXEOC 2008-09-19
  • 打赏
  • 举报
回复
我测试是request = ServletActionContext.getRequest();这句的问题,你直接用doGet方法的参数里的request就好了(不是你这个doGet方法,是默认的protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException,这个方法),具体原因看看Struts文档吧,我觉得可能是因为在其他部分没有应用Struts,所以用ServletActionContext的getRequest方法得不到请求的原因,所以返回null。
Atai-Lu 2008-09-19
  • 打赏
  • 举报
回复
散分了。。。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liltos 的回复:]
你的配置有问题
我这都是好的

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

检查一下配置吧
[/Quote]
可能是这里的原因吧……
ZXEOC 2008-09-19
  • 打赏
  • 举报
回复
或许Java和.net在这方面的思路不同吧,你这样的方式应该没法得到request,既然你要学新东西就不要一直抱着老想法不放,要是你以前是用汇编的,难道学了Java还要直接操纵硬件吗?
Atai-Lu 2008-09-19
  • 打赏
  • 举报
回复
我的想法是像在C#里那样,直接System.Web.HttpContext.Current.Request这样的方式去获取request对象
也就是说,我不想编写任何Servlet代码或者action代码,也不想继承哪个类,更不想去修改任何配置文件,直接通过实例化或者使用类似调用静态方法那样得到request对象。
---------------
我想做的是与配置文件无关的事情。。。
tubage408 2008-09-19
  • 打赏
  • 举报
回复
配置文件发下,看看
ZXEOC 2008-09-19
  • 打赏
  • 举报
回复
这样似乎不行,request不是静态的,没有办法从静态对象中得到吧
Atai-Lu 2008-09-19
  • 打赏
  • 举报
回复
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,但遗憾的是,这似乎很困难。

最后,谢谢大家的回复,下班之后结贴...
笨沙发 2008-09-18
  • 打赏
  • 举报
回复
request就是提交请求么
  • 打赏
  • 举报
回复
帮你顶
Atai-Lu 2008-09-18
  • 打赏
  • 举报
回复
没人...
哎~

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧