JSP中Request属性范围

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>

测试结果:

总结:request属性在服务器端跳转时request相当于是一个消息信息在各个页面中传递,各个页面是共享同一个request对象。

时间: 2024-10-26 14:50:06

JSP中Request属性范围的相关文章

关于jsp中request请求乱码问题

其实在写web项目的时候最怕的就是出现乱码,有时候很微小的错误可能要找很久,伤神费力.这就要求我们在编程的时候尽量要规范严谨.废话不多说,今天在写jsp的时候又出现了乱码.四处求解,在书上最后找到了答案.在提交表单的时候,如果是中文表单,难免要出现字符集不匹配出现的乱码,这时就要对这个进行编码设置.对于jsp中request这个内置对象,设置编码是这样的:<%requset.setCharactorEncoding("utf-8");%>,其实书上使用的是gb2312这个编

jsp中request接收中文参数乱码问题解决办法

在利用表单提交数据时发现,获得的中文参数会发生乱码,解决方法如下: <body> <% String s=request.getParameter("uname"); s = new String(s.getBytes("ISO-8859-1"),"utf-8");//解决乱码问题 %> <%=s %> </body> s = new String(s.getBytes("ISO-8859

JSP中 request.getRealPath(&quot;/xx/yy&quot;) 方法提示已经过时的替代方法

我们的JSP项目在上传文件时通常都需要获取目录在服务器上的绝对路径,request.getRealPath()方法显示已经过时,但是还是有替代方法的. HttpSession session = request.getSession(true);  //获取session // String path = request.getRealPath("/data/userfile/image");  //此方法已经过时 String path = session.getServletCon

jsp中request.getParameter()中文乱码问题解决

关于使用request.getParameter()得到中文乱码的问题,在网上查找了一天终于找到了一个解决方案,是一个比较笨的方法,要在每个使用request.getParameter()的地方添加如下代码,代码如下: 1 String name=request.getParameter("name"); 2 if(name!=null){ 3 name=new String(name.getBytes("ISO8859_1"),"utf-8")

JSP中request getParameter和getAttribute不同(转载)

(1)request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据,,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段. (2)request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据.request.getParameter()方法返回String类型的数据. request.setAttribute()和getAt

【Jsp】Jqueryajax技术在Jsp中的应用与javascript中的正则表达式

ajax不是一门新语言,只是一个很平常的即时响应技术,非常简单,一点都不玄虚,就像数据库技术一样能够运用至php,asp.net,asp与jsp等各大网页之中,与网页有着很好的融合性 ajax务必运行在服务器中,因为ajax是一项服务器技术,所以使用ajax在本地的两个未被挂载到服务器上的网页之间,传递数值是不可能的,尽管jquery是本身并不需要挂载到服务器上使用 那么ajax到底是什么呢? 传统的表单的提交有时会带给用户不良的体验, 比如以下的例子: 在jqueryajax.jsp下,有着如

jsp中的request.getContextPath()

jsp中的request.getContextPath() <%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径. 但不用也可以吧,比如<a href="<%=request.getContextPath()%>/catalog.jsp">我就直接用<a href="catalog.jsp">也行啊,这两个文件是在同一个目录下的 比如你要生成一个文件放在服务器上得一个目

关于项目在网页中运行部分jsp出现乱码(由request.getRequestDispatcher(&quot;XXX.jsp&quot;).forward(request, response)造成)的解决方法

在写jsp的时候发现部分的jsp在浏览器预览时出现乱码,为一堆问号,如图: 当时问了同学,只有部分jsp会出现乱码,因为重新建一个jsp在运行就没有错误,可以显示出来,所以发现是jsp头部的错误,当新建一个jsp把内容复制过去可以正确显示,但当把名字改成需要跳转的jsp时就会出现乱码,所以我才发现是由于调用这个名字的jsp出现了错误即:request.getRequestDispatcher("XXX.jsp").forward(request, response)造成了乱码,解决只需

jsp中 response和request区别

1.response 属于重定向请求: 其地址栏的URL会改变: 会向服务器发送两次请求: 2. request 属于请求转发: 其地址栏的URL不会改变: 向服务器发送一次请求: 举一个区分它们的简单实例: A向B借钱: 第一种:用response.B没有钱,请求失败,但是B告诉A,C有钱.于是A再次向C借钱,C借给A,请求成功. 第二种:用request.B没有钱,但是B向C借钱然后给A,请求成功.这次A只发送了一次请求,他并不知道借的钱是C的. 用response方法是这样的: respo