请求转发的特点:
(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");
}