JSP属性范围,通过以下几个测试代码来学习request属性的范围
测试一:
测试内容:
通过<jsp:param .../>添加参数,通过<jsp:forward page="...">来实现服务器端跳转,以此来测试request属性的范围:
步骤一:RequestScopeDemo.jsp (添加info1参数)———>通过<jsp:forward page="RequestScopeDemo_1.jsp">跳转
步骤二:RequestScopeDemo_1.jsp (添加info2参数)———>通过<jsp:forward page="RequestScopeDemo_2.jsp">跳转
步骤三:RequestScopeDemo_2.jsp (request对象中取info1、info2两个参数的值)
CODE:
RequestScopeDemo.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Request属性范围 - Page 1</title></head>
<body>
<h1>跳转前的页面:page 1</h1>
<%
//想输入一个字符串“<jsp:param ... >”不能直接输出必须通过转义输出
String info1="page 1 页面中添加(<jsp:param ... />)的参数 !";
request.setCharacterEncoding("utf-8");
%>
<jsp:forward page="RequestScopeDemo_1.jsp">
<jsp:param name="info1" value="<%=info1%>" />
</jsp:forward>
</body>
</html>
RequestScopeDemo1.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Request属性范围 - page2</title></head>
<body>
<h1>跳转中页面:page 2</h1>
<%
String info2="page 2 页面中添加(<jsp:param ... />)的参数 !";
%>
info参数:<%=request.getParameter("info2")%><br/>
<jsp:forward page="RequestScopeDemo_2.jsp">
<jsp:param name="info2" value="<%=info2%>" />
</jsp:forward>
</body>
</html>
RequestScopeDemo2.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Request属性范围 - page3</title></head>
<body>
<h1>跳转到的页面:page 3</h1>
<%
/*request对象的源头设置了编码,所以这里就不需要设置啦*/
//request.setCharacterEncoding("utf-8");
%>
<h2>Page1页面中传递过来的info1参数:<%=request.getParameter("info1")%></h2><br/>
<h2>Page2页面中传递过来的info2参数:<%=request.getParameter("info2")%></h2><br/>
<h2>request.getCharacterEncoding()的值:<%=request.getCharacterEncoding()%></h2>
</body>
</html>
测试结果:
测试二:
测试内容:
通过来request.setAttribute()添加参数,通过<jsp:forward page="...">来实现服务器端跳转,以此来测试request属性的范围:步骤一: RequestScopeDemo_t.jsp (添加info1参数)———>通过<jsp:forward page="RequestScopeDemo_t1.jsp">跳转
步骤二: RequestScopeDemo_t1.jsp (添加info2参数)———>通过<jsp:forward page="RequestScopeDemo_t2.jsp">跳转
步骤三: RequestScopeDemo_t1.jsp (request对象中取info1、info2两个参数的值)
CODE:
RequestScopeDemo_t.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Qequest属性范围 - Page 1</title></head>
<body>
<h1>跳转前的页面:page 1</h1>
<%
request.setCharacterEncoding("utf-8");
request.setAttribute("info1","Page1中添加(setAttribute)的参数");
%>
<jsp:forward page="RequestScopeDemo_t1.jsp" />
</body>
</html>
RequestScopeDemo_t1.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Request属性范围 - page2</title></head>
<body>
<h1>跳转中页面:page 2</h1>
<%
request.setAttribute("info2","Page2中添加(setAttribute)的参数");
%>
跳转中的页面,info1参数:<%=request.getAttribute("info1")%><br/>
<jsp:forward page="RequestScopeDemo_t2.jsp" />
</body>
</html>
RequestScopeDemo_t2.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head><title>Request属性范围 - page3</title></head>
<body>
<h1>跳转到的页面:page 3</h1>
<h2>第一个页面,info1参数:<%=request.getAttribute("info1")%></h2><br/>
<h2>第二个页面,info2参数:<%=request.getAttribute("info2")%></h2><br/>
<h2>request.getCharacterEncoding()的值:<%=request.getCharacterEncoding()%></h2>
</body>
</html>
测试结果:
总结:
request属性在服务器端跳转时request相当于是一个消息信息在各个页面中传递,各个页面是共享同一个request对象。