2015-12-01 27 views
1

设置或改变饼干假设我们有两个servlet A和B和servlet A包括使用的Java Servlet的 - 在包括的servlet

request.getRequestDispatcher("/B").include(request,response); 

为什么我不能设置或改变的servlet乙饼干的servlet B'我没有收到任何错误,但似乎忽略了Cookie上的更改。 任何人都可以解释这种行为吗?

回答

1

根据RequestDispatcher.include文件:

.....

的ServletResponse对象有其路径元素和参数 保持从主叫方的不变。 附带servlet不能更改 响应状态码或设置标题; 任何尝试进行更改 都会被忽略

.....

而且,由于Cookies是(调用的Servlet)返回头的一部分,这就是为什么所做的更改不会生效(忽略)。

+0

这很有道理,谢谢! 虽然如果servlet容器抛出一个“Header already sent”异常或其他东西,那会很好。 – eol