重定向
是动态的可以请求其他站点的资源,且两次请求,请求域中的数据会丢失转发
是静态的只能访问本站点的资源,且一次请求,保证数据完整性
1.重定向的特点:redirect
- 地址栏发生变化 (
从你进去的地址 /resp2 --> 你要访问的地址/baidu.com
) - 重定向可以访问其他站点(服务器)的资源 (
如上-->/baidu.com
) - 重定向是两次请求。(
分别是进去时的请求/resp 和 重定向到的请求baidu
) - 不能使用 request 对象来共享数据 转发(
因为是两次请求,两个request,所以不能使用request.set/getAttribute() 共享数据
)(两次请求,两个状态,相当于两个对象,两个类)
2.转发:forward
- 转发地址栏路径不变(
从/resp2进入的/resp2 , 内容为/resp1的内容,地址仍为/resp
) - 转发只能访问当前服务器下的资源 (
访问http://www.baidu.com,找不到404
) - 转发是一次请求,可以使用 request 对象来共享数据(
同一个request
)
3.代码演示
ResponseDemo1:
package com.example.response;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 响应response
*/
@WebServlet(
urlPatterns = {
"/ResponseDemo1","/resp1"}
)
public class ResponseDemo1 extends HttpServlet {
@Override
protected