[Java学习笔记]重定向和转发

重定向

重定向功能是让浏览器重新发生请求,但是将请求的是另外一个Servlet
在这里插入图片描述

方式一:设定响应头Location

response.setHeader(“Location”, URL);

方式二:直接调用重定向方法

response.sendRedirect(URL);

转发

转发同样能够实现跳转,但它与重定向有所不同,转发实现跳转是由服务器内部实现的,即一个Servlet收到请求后,将请求对象、响应对象给与另一个Servlet,由它来向客户端完成响应。
在这里插入图片描述

• request.getRequestDispatcher(转发至URL).forward(req,resp);

注意:虽然转发中注入了当前的请求和响应对象,但转发目标servlet使用的请求响应对象和传入的req、resp并不是同一个!

System.out.println(request);
request.getRequestDispatcher("index2.jsp").forward(request, response);

分别打印

org.apache.catalina.connector.RequestFacade@54a9387
org.apache.catalina.core.ApplicationHttpRequest@a6a435f

转发与重定向的区别

1)重定向两次请求两次响应,转发对于客户端一次请求响应一次
2)重定向地址栏的地址变化,转发地址不变
3)重新定向可以访问外部网站 转发只能访问内部资源
4)转发的性能要优于重定向

重定向和转发的地址问题

客户端地址:

是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名称。

客户端对于资源的请求实际上都是客户端地址,如Html里面的src/href都是:/WebAppName/资源
重定向是客户端两次的请求,因此redirect(客户端地址)

服务器端地址:

服务器内部资源的跳转的地址,特点:不需要写web应用的名称。

转发采用的是服务器内部资源的跳转,默认即是在这一个应用内部的,
因此 request.getRequestDispatcher("/xxxServlet").forward(req,res) 即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值