有关RequestDispatcher的forward方法参数

forward方法的原型是forward(ServletRequest req,servletResponse resp),那么接下来我想问方法的参数可否为null,如resp赋值为null。
之所以问这个问题是因为隐约中好像在哪里见到过别人使,而且有参数被赋值为null。
不管回答的是否是我想要的,都会非常感谢你。

13个回答

这种真的很无语啦,只能自己单步调试代码排查错误,同情你啊

RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。

RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。

如果你设置为null的话,那后面就取不到这个request中的数据了

[b]
Response是用来返回给客户端信息的对象。如果设为Null的话,传递到下一个Servlet后,就丢失了Response.

这样的话,似乎就没法在向客户端返回信息了。[/b]

我刚才的分析是从理论上来讲解这个api的功能描述,

至于能不能传递null给这个api,要看它的底层实现,
有可能你传null过去,底层抛出异常也有可能,
这种使用方式目前我还没试过,你试看看

[b]你好,那如过返回页面可以什么都不显示,是否就是说resp可以设置成null了。 [/b]
[color=blue][b]
不是,response对象除了返回 页面信息外,还有HTTP Response的头信息。

如果没有Response对象,则控制信息也无法返回。所以客户端如果是浏览器的话,就会等待到 超时 ![/b][/color]

[b]
你是怎么测试的?

你最后 dispatcher(request,null)到哪了? 到JSP页面了?

如果到JSP页面,肯定会 NullPointerException的。[/b]

[code="java"]forward(request,null)[/code]
[b]
这样由于没有了Response对象,所以以后不能使用任何方式,向浏览器端输出内容。

如果,你只需处理 HTTP 请求,而不需要 给予任何HTTP回复 , 就应该可以将HTTP Response设为Null。这样 浏览器只是会一直等待到超时。[/b]

你们代码是跑在以前的tomcat版本上的可能,也许是servlet 2.3规范以前可以这么使用,

既然公司里面原来用了,肯定是有他们的用途,你可以问一下公司的前辈们,为什么这样用,要实现什么样的功能,请教一下了,或者是直接去看代码吧,找到哪里使用了,按照程序流程去看看。。。建议先使用后者,实在看不懂,再去请教。。。

也许之前你们用的servlet容器底层判断了null的情况,对null的情况,底层新建一个输出流,内容为空,

共13条数据 1 尾页
立即提问
相关内容推荐