JSP属性范围,通过以下几个测试代码来学习request属性的范围
测试一(JSP动态指令方式传参):
测试内容:
<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()封装属性方式传参):
测试内容:
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>Request属性范围 - 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>
测试结果:
测试三(URL地址方式传参):
测试内容:
URL地址方式添加参数,通过超链接<a href=".." ..>来实现服客户端跳转,以此来测试request属性的范围:
页面RequestScopeDemo_1.jsp 页中通过<a href="RequestScopeDemo_2.jsp?info1=Page1页面的参数">链接到下一个页面</a>跳转
↓
页面RequestScopeDemo_2.jsp 页中通过<a href="RequestScopeDemo_3.jsp?info2=Page1页面的参数">链接到下一个页面</a>跳转
↓
页面RequestScopeDemo_2.jsp(request对象中取到了info2的参数值)
CODE:
RequestScopeDemo_1.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");%><a href="RequestScopeDemo_2.jsp?info1=Page1页面的参数">链接到下一个页面</a>
</body>
</html>
RequestScopeDemo_2.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中的参数");%>跳转中的页面,info1参数:<%=request.getParameter("info1")%><br/><a href="RequestScopeDemo_3.jsp?info2=Page2页面的参数">链接到下一个页面</a>
</body>
</html>
RequestScopeDemo_3.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.getParameter("info1")%></h2><br/><h2>第二个页面,info2参数:<%=request.getParameter("info2")%></h2><br/><h2>request.getCharacterEncoding()的值:<%=request.getCharacterEncoding()%></h2>
</body>
</html>
测试结果: