目录
1.什么是重定向?
- 浏览器和服务器之间交互请求响应两次,称为重定向。
- 作用 : 使用response跳转(响应)页面。
语法格式:
response.sendRedirect("地址") //重定向路径为绝对路径
2.重定向工作原理
以登录为例: login 登录 do_login 验证登录 index 首页
当要显示login.jsp(登录)页面,浏览器向服务器发送请求,服务器接收后找到相应的页面,并发出响应(成功状态:200),显示login页面,当login点击登录时,浏览器再次发送一次请求,带着登录的参数去do_login.jsp页面验证登录是否正确,如果正确,就重定向到首页(index.jsp),服务器带着302状态码(表示重定向)去响应到浏览器,浏览器接收到重定向的状态后,发出index.jsp页面请求,服务器拿到请求,然后响应,显示页面。
注意
当do_Login页面执行到重定向的方法时,那么它响应的时候会带一个302状态码,通知浏览器这是一个重定向,浏览器再一次发送请求。
3.什么是转发?
- 在服务器内部实现地址跳转,只请求一次。
- 作用: 使用request跳转页面
语法格式:
request.getRequestDisPatcher("转发路径").forward(request,response); //转发一般为相对路径
4.转发工作原理
以登录为例: login 登录 do_login 验证登录 index 首页
当do_login拿到参数去请求时,在服务器中使用request进行转发(index.jsp),那么do_login.jsp的控制权和数据一并交到了index.jsp的手上,最终响应index.jsp,并显示页面,仔细看,转发只请求响应了一次,由于这个原因,所以url地址栏还是do_login.jsp,实际上响应的是index.jsp。
5.转发和重定向的区别
- 重定向是两次请求,转发是一次请求。
- 重定向地址栏会变,转发不会。
- 转发是request,重定向是response。
- 重定向不会携带第一次请求时的参数。