请求转发与重定向

请求转发的特点:
(1) 请求转发是一次请求,一次响应
(2) 请求转发前后(从访问Servlet到最后JSP做响应)地址栏地址没有发生变化
(因为浏览器不知道服务器内部做了跳转)
(3) 在转发的同时,会将代表请求的request和代表响应的response也带给转发的资源

域对象
如果一个对象具备一个可以被访问的范围:例如:(Request对象和Response对象)
转发过程中将request和reponse转发给jsp页面,说明request和response在这次请求中都是共享的,在这个范围内利用该Request对象的Map集合实现资源共享
PageContext作用范围是一个JSP页面(不用)
ServletContext 作用范围很大(不用)
HttpSession 比Request大一些,比Servlet小一些
Request域对象 ServletA 转发到ServletB(JSP页面)
Request域对象的三大特征:(域对象会和转发配合使用)
A转发到B,可以通过Request对象通过A带数据到B
(1) 生命周期:
在一次请求开始时,创建request对象(在服务器接受请求后调用service方法处理请求之前),在一次请求结束后,销毁request对象。(每次请求都会创建新的request对象)
(2) 作用范围:一次请求中(整个请求链)
(3) 主要功能:带数据到目的地

Request域对象提供的存取数据的方法:
–往request域中添加一个属性名和一个属性值
Request.setAttribute(String attrName,Object attrValue);
–通过属性名称获取对应的属性值
Request.getAttribute(String attrName)

页面转发的代码:
request.getRequestDispatcher("/show.jsp").forward(request, response);

(请求转发+域对象实现带数据到JSP进行显示)
在这里插入图片描述show.jsp获取数据

<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
<style >
	p{
		background:yellow;
		border:2px solid red;
	}
</style>
</head>
<body>
	<h3>day09.....show.jsp....</h3>
	<p><%= request.getAttribute("name")%></p>
	<p><%= request.getAttribute("addr") %></p>
</body>
</html>

页面重定向:
(1) 重定向是两次请求,两次响应
(2) 重定向前后地址栏地址会发生变化
(3) 重定向既可以在同一个Web应用内部的资源之间进行跳转,也可以在不同的Web应用或者不同的虚拟主机之间进行跳转
(4) 重定向的过程中不能通过Request域带数据到目的地
实现重定向:(模拟登录成功后跳转到首页)
response.sendRedirect("/LoginServlet/index.html");

在这里插入图片描述
重定向是立即跳转
定时刷新是隔多少秒之后再跳转

定时刷新:
通过Refresh响应头可以实现在多少秒之后跳转到指定的地址和重定向不同的是,重定向是立即跳转,而定时刷新是在指定多少秒之后再立即跳转

实现定时刷新:(模拟登录成功后跳转到首页)
response.setHeader(“Refresh”, “3;url=/LoginServlet/index.html”);

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		 System.out.println("ResponseDemo03 ...doGet");
		 //提示用户7秒后跳转到首页
		 response.getWriter().write("恭喜您注册成功"
		 		+ "册成功,7秒后将会跳转到首页");
		 //7秒后定时刷新到首页(Show2.jsp),7秒之后跳转到show2.jsp的页面(首页路径)
		 response.setHeader("Refresh", "7;url=http://localhost/day09/show2.jsp");
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值