问题: 将转发与重定向做对比,有什么异同?
1.浏览器一共发送了几个请求?
重定向: 两次请求
转发: 一次请求
2.浏览器的地址发生变化吗?
重定向: 会发生变化
转发: 不会发生变化
3.会改变请求方式吗?
重定向: 未必.重定向的第2次请求一定是get.
转发: 不会.
4.request域可不可以共享数据?
重定向: 不可以,因为会产生两个request对象.
转发: 可以. 因为是在一个请求范围内.使用的是同一个request对象.
注意:
servlet 向 jsp转发. servlet专注于逻辑处理。 JSP专注于显示处理结果。
不要在应该处理逻辑的地方做显示操作。也就是说在servlet中
不要使用字符流或字节流做任何输出的动作(不能添加响应正文)。 可以添加响应头。
转发的Servlet不可以向response的正文中添加任何内容.但是可以向响应头添加内容.
什么时候用转发?
servlet负责处理逻辑, jsp用于显示. 需要共享数据,一定要使用转发. 使用重定向会使数据丢失.
什么时候用重定向?
1. 当需要跳转到站内,并且地址栏要求发生变化时,使用重定向.前提是不需要共享数据. 2. 当需要跳转到站外时,一定只能使用重定向.