JSP_6th_动作指令jsp:forward

一、jsp:forward/jsp:param

1)用于将一个jsp的内容传送到page所指定的URL的JSP程序或者Servlet中处理。
2)格式:

<jsp:forward page="urlSpec" flush="true">

<jsp:forward page="urlSpec">
<jsp:param name="paramName" value="paramValue"/>
</jsp:forward>


3)<jsp:param>用于指定参数和其对应的值。

4)举例:
forward.jsp如下:
<html>
<head>
	<title>forward example</title>
</head>
<body bgcolor="red">
	welcome to here!
	<jsp:forward page="jumped.jsp"></jsp:forward>
</body>
</html>

jumped.jsp如下:
<html>
<head>
	<title>jumped.jsp</title>
</head>
<body bgcolor="palegreen">
	here is jumped page
</body>
</html>

访问:http://localhost:8080/TestJSP/forward.jsp
页面效果:


发现页面是jumped.jsp的效果,而地址栏依然是forward.jsp。


再来看下面的例子forward2.jsp,jsp:param可以设置设置参数:
<html>
<head>
	<title>forward example</title>
</head>
<body bgcolor="red">
	<jsp:forward page="jumped2.jsp">
		<jsp:param name="name" value="n"/>
		<jsp:param name="oldName" value="<%=request.getParameter(\"name\") %>"/>
		<jsp:param name="roles" value="manager"/>
	</jsp:forward>
</body>
</html>

在forward后的页面jumped2.jsp还可以从request对象中把参数拿出来:
<html>
<head>
</head>
<body bgcolor="palegreen">
	<%=request.getParameter("name") %>
	<%=request.getParameter("oldName") %>
	<%=request.getParameter("roles") %>
</body>
</html>

页面效果:

总结:
地址栏没有改变,依然是访问forward2.jsp,说明仅仅只是服务器内部进行了跳转,而客户端并不知情。也就是进行了请求转发。


再来看一个forward3.jsp如下所示:


并访问该jsp:http://localhost:8080/TestJSP/forward3.jsp?name=abc,即在URL后面带了参数,页面效果如下,可以发现地址栏跳转到了jumped2.jsp,说明客户端之后又发出了另一次请求,由于请求对象不同,我们在前一次请求中设置的参数无法在后一次请求中被读取到:



<jsp:forward>与response.sendRedirect的区别:
①<jsp:forward>前后使用的是同一个request,且可以在<jsp:forward></jsp:forward>中使用jsp:param来增加或修改request中已有的参数。

②response.sendRedirect执行的是请求重定向,客户端会再次请求别的页面,所以前后使用的就是不同的request对象,所以第一次请求中带的参数,是不能传递到重定向以后的request对象中的。


最后的总结:

<jsp:forward></jsp:forward>相当于请求转发到另一个页面,request对象得以被共享,可以在不同的页面中来传递信息。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值