转发&重定向

区别

1:转发是一次请求,一次响应(仅仅是服务器内部行为)。而重定向是两次请求,两次响应;

2:转发只能在工程内进行,而重定向可以到任意位置;

3:转发后地址栏不变。而重定向会变。

二者的选用规则

如果是服务器内部的资源,建议使用转发。

如果是服务器外的资源,只能使用重定向。

关于路径

重定向带工程名,转发不带。浏览器往服务器走的都带工程名,服务器内部玩儿的都不带工程名。

 

转发:

request对象可以进行转发操作

转发:是服务器内部的一个行为,从A处转到B处....

对于浏览器来说,浏览器是不知道服务器内部的转发行为的!

转发的过程中request对象并没有死亡,因此在request对象存的值,依然有效!!!

通常都是在servlet中使用request存值,转发到jsp页面,在jsp页面通过reqesut对象取值;

转发的代码格式:

request.getRequestDispatcher("/必须斜杠开头,代表的是工程名").forward(request, response);

此处理解成webcontent也可以,因为编译后webcontent也没有了,工程下直接就是webcontent下的内容

举例:

image.png

public class MyServlet1 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1:向reqesut对象中存值
        request.setAttribute("username","迪丽热巴");
        //2:转发到attr2.jsp页面   
        request.getRequestDispatcher("/attr2.jsp").forward(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

重定向:

重定向方式一:用response操作响应头location

location  配合302状态码可以让浏览器重定向;值格式:"绝对路径"

绝对路径:说的是带工程名。如果去其他地方就带协议,所以建议又带协议又带工程名。

举例:

重定向到www.itcast.cn这个网站。

response.setStatus(302);

response.setHeader("location", "http://www.itcast.cn");

重定向方式二(常用):方式一的优化代码

response.sendRedirect("http://www.itheima.com");

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值