jsp复习(转发,重定向,作用域)

1.jsp重定向和转发。
重定向:
当客户端浏览器提交到服务器的JSP处理的时候这个JSP返回一个响应:去请求另外一次的URL此时客户端浏览器会再次发出一个新的请求到这个新的地址新的URL地址负责为浏览器产生响应这时浏览器看到的URL是第二次请求所对应的URL地址。
示例:response.sendRedirect(“页面地址”);
路径地址变化,不是源地址,是目标地址和目标地址的内容
不支持request对象中2个页面的数据分享。
使用:重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的时候建议使用转发。
转发:
当客户端请求提交到服务器的jsp处理的时候这个jsp可以携带请求和响应对象转移到web应用的另一处进行处理在另外一处进行处理后,产生结果页面响应给客户端浏览器此时客户端浏览器可以看到结果页面,但URL无变化所以不知道服务器端经过几层处理。
示例: request.getRequestDispatcher(“页面地址”).forward(request,response);
jsp: <jsp:forward page=“demo2.jsp”></jsp:forward>
路径地址没有变,还是源地址,内容是目标地址的内容 支持request对象中2个页面的数据分享
使用:因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外一个WEB站点上的资源的情况,这个时候就只能使用重定向了。
2.jsp内置对象的作用域。
pageContext: 只能是当前页面进行数据分享。
request:2个页面中右转发forward,能够支持这2个页面之间数据的分享。
session: 所有页面都可以进行数据的共享,但是生命周期默认是浏览器打开和服务器建立联系到浏览器关闭。 浏览器不关闭想要session对象数据周期结束,可以直接调用方法session.invalidate()。
application: 所有页面都可以进行数据的共享,但是生命周期是tomcat服务器启动到服务器关闭。

案例:
demo1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第一个网页</title>
</head>
<body>
	第一个网页
	<br>
	<% pageContext.setAttribute("x",0);
       request.setAttribute("x",10); 
       session.setAttribute("x", 20);
       application.setAttribute("x",30);
   %>
	pageContext:<%=pageContext.getAttribute("x") %><br> 
	request:<%=request.getAttribute("x") %><br>
	session:<%=session.getAttribute("x") %><br> 
	application:<%=application.getAttribute("x") %><br>

	<!--路径地址:本地地址;内容:目标地址的内容(支持request对象中2个页面的数据分享)-->
	<!--  <a href="demo2.jsp">2</a> -->

	<!--路径地址:本地地址;内容:目标地址的内容(支持request对象中2个页面的数据分享)-->
	<%-- <jsp:forward page="demo2.jsp"></jsp:forward> --%>
	<!-- 这个放开后的效果? -->

	<!--路径地址:目标地址;内容:目标地址的内容(不支持request对象中2个页面的数据分享)-->
	<%//response.sendRedirect("demo2.jsp"); %>
	
</body>
</html>

demo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第二个网页</title>
</head>
<body>
	第二个网页
	<br> 
	pageContext:<%=pageContext.getAttribute("x") %><br>
	request:<%=request.getAttribute("x") %><br> session:<%=session.getAttribute("x") %><br>
	application:<%=application.getAttribute("x") %><br>
</body>
</html>

demo3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>第三个网页</title>
</head>
<body>
	第三个网页
	<br> 
	pageContext:<%=pageContext.getAttribute("x") %><br>
	request:<%=request.getAttribute("x") %><br> session:<%=session.getAttribute("x") %><br>
	application:<%=application.getAttribute("x") %><br>
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值