一、jsp:forward/jsp:param
1)用于将一个jsp的内容传送到page所指定的URL的JSP程序或者Servlet中处理。
2)格式:
3)<jsp:param>用于指定参数和其对应的值。
4)举例:
forward.jsp如下:
jumped.jsp如下:
访问:http://localhost:8080/TestJSP/forward.jsp
页面效果:
发现页面是jumped.jsp的效果,而地址栏依然是forward.jsp。
再来看下面的例子forward2.jsp,jsp:param可以设置设置参数:
在forward后的页面jumped2.jsp还可以从request对象中把参数拿出来:
页面效果:
总结:
地址栏没有改变,依然是访问forward2.jsp,说明仅仅只是服务器内部进行了跳转,而客户端并不知情。也就是进行了请求转发。
①<jsp:forward>前后使用的是同一个request,且可以在<jsp:forward></jsp:forward>中使用jsp:param来增加或修改request中已有的参数。
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>前后使用的是同一个request,且可以在<jsp:forward></jsp:forward>中使用jsp:param来增加或修改request中已有的参数。
②response.sendRedirect执行的是请求重定向,客户端会再次请求别的页面,所以前后使用的就是不同的request对象,所以第一次请求中带的参数,是不能传递到重定向以后的request对象中的。
最后的总结:
<jsp:forward></jsp:forward>相当于请求转发到另一个页面,request对象得以被共享,可以在不同的页面中来传递信息。