JSP的7个动作指令--forward指令、include指令

目录

一、测试forward带参数传递

二、form的action属性,测试其forward功能及参数传递

三、测试include

四、测试include带参数传递


一、测试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拿目标页面插入原有页面

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值