目录
二、form的action属性,测试其forward功能及参数传递
一、测试forward带参数传递
示例代码结构
basic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Basic Page</title>
</head>
<body>
<h3> basic page</h3>
<jsp:forward page="destination.jsp">
<jsp:param name="age" value="29"/>
</jsp:forward>
</body>
</html>
destination.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Destination Page</title>
</head>
<body>
<h3>destionation page</h3>
<%=request.getParameter("age")%>
</body>
</html>
效果
可以看到,最终的页面是destination中的内容,参数从base传递到了destination
二、form的action属性,测试其forward功能及参数传递
示例代码结构
form.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Form Page</title>
</head>
<body>
<form id="login" method="post" action="basic.jsp">
<input type="text" name="username">
<input type="submit" value="login">
</form>
</body>
</html>
basic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Basic Page</title>
</head>
<body>
<h3> basic page</h3>
<jsp:forward page="destination.jsp">
<jsp:param name="age" value="29"/>
</jsp:forward>
</body>
</html>
destination.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Destination Page</title>
</head>
<body>
<h3>destionation page</h3>
<%=request.getParameter("username")%>
<%=request.getParameter("age")%>
</body>
</html>
效果,可以看到form中的username和basic中的age都传递到了destination页面
总结:
<jsp:forward.../>并没有重新向新页面发送请求,只是采用了后面的新页面对用户生成响应。
请求依然是一次请求,所以请求参数、请求属性都不会丢失。
三、测试include
示例代码结构
basic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Dynamic Include</title>
</head>
<body>
<jsp:include page="scriptLet.jsp"></jsp:include>
</body>
</html>
scriptLet.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>ScriptLet</title>
</head>
<body>
<%
for (int i=0; i < 10 ;i++){
out.println(i);
}
%>
</body>
</html>
效果
值得关注的是,虽然页面展示效果和编译指令<%@include file="scriptLet.jsp" %>效果相同,但实际的编译过程是不同的。动作指令<jsp:include page="scriptLet.jsp"></jsp:include>编译后的源代码如下
总结:
静态导入是将被导入的页面完全融入,两个页面融合成一个servlet;被导入页面的编译指令会起作用。
动态导入是在servlet中使用include方法引入被导入的页面内容。被导入页面的编译指令失去作用,只插入被导入页面的body内容。
动态包含可以包含额外的参数
四、测试include带参数传递
示例代码结构
basic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Basic Page</title>
</head>
<body>
<h3> basic page</h3>
<jsp:include page="destination.jsp">
<jsp:param name="age" value="29"/>
</jsp:include>
</body>
</html>
destination.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Destination Page</title>
</head>
<body>
<h3>destionation page</h3>
<%=request.getParameter("age")%>
</body>
</html>
效果
总结:
forward拿目标页面替换原有页面
include拿目标页面插入原有页面