项目5 制作简单的展示网站

5.2 新知识点——JSP动作指令、<jsp:include>

在 JSP 中,还存在另外一类标记,其符合XML 的语法格式。利用这些标记可以达到控制 Servlet 引擎的作用,如动态地插入文件、调用JavaBean、页面重定向等,这类标记称为JSP 动 作标记。

JSP的常用动作标记有<jsp:include>、<jsp:useBean>、<jsp:setProperty>、 <jsp:getProperty>、<jsp:forward>、<jsp:plugin>、<jsp:params>等。

常用的 JSP 动作见表2-2。

动作名称动作说明
<jsp:include>包含一个静态的或者动态的文件
<jsp:useBean>用来在JSP页面中创建一个bean实例并指定它的名字以及作用范围
<jsp:setProperty>用来设置bean的属性值
<jsp:getProperty>获取bean的属性的值并将之转化为一个字符串,然后将其插入输出的页面中
<jsp:forward>重定向一个静态html/jsp的文件,或者是一个程序段
<jsp:params>用于传递参数,必须与其他支持参数的标签一起使用
<jsp:plugin>用于下载JavaBean或Applet到客户端执行

<jsp:include> 指令可以完成JSP 的动态包含操作,可以在当前的 JSP 文件中包含TXT 文件、JSP 文件、HTML 文件、Servlet 文件等。

<jsp:include> 动作指令在进行JSP 网站开发 时,是被广泛使用的动作指令之一。

其动作指令的语法格式为:

 <jsp:include page="被包含的文件路径 | <%=表达式%>"flush="true|false"/>
 或
 <jsp:include page="被包含的文件路径 | <%=表达式%>"flush="true|false'>
 ​
 <jsp:param name="paraml"value="value1"/> 
 <jsp:param name="param2"value="value2"/>
 </jsp:include>

在上述语法格式中,page 属性表示被包含文件的相对路径或相对路径的表达式。

flush ="true"表示是否在包含目标之前先刷新输出缓冲区,默认值为true。

<jsp:param> 表示传递参数,即需要传递给被包含文件的参数,可以传递多个参数。

name 属性为参数名,value 属 性为参数值。

<jsp:include> 动作指令第一种语法格式在项目4任务实现时已经使用。

<jsp:include> 动作指令第二种语法格式,即带参数的语法格式,使用方法见程序2-11。

【 程序2-11】exam5_2_index.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
     显示传递参数的包含文件
     <jsp:include page="exam5_2_include.jsp">
     <jsp:param value="Tom" name="stu"/>
     </jsp:include>
 </body>
 </html>

代码分析:程序中,采用<jsp:include> 动作指令包含了文件 exam5 2 include.jsp, 其 主要代码为:

 <jsp:include page="exam5_2_include.jsp">
 <jsp:param value="Tom" name="stu"/>
 </jsp:include>

在包含后,exam5 2 include.jsp 需要获取 stu 变量并显示,因此采用第二种包含形式。

通 过<jsp:param>动作指令传递了参数stu, 其值为Tom。

【 程序2-12】 exam5_2_include.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
 <%
     String stu=request.getParameter("stu"); out.println("姓名:"+stu);
 %>
 </body>
 </html>

代码分析:该文件为被包含文件,因其需要显示一个传递的参数,因此需要从调用它的页 面获取stu 变量。

代码中request.getParameter()为JSP内置对象request 调用了其获取变量的 方 法 getParameter() 。out.println() 为 JSP 内置对象out 调用了输出的方法println()。

运 行exam5_2_index.jsp, 显示文件被包含后的效果,如图2-7所示。

查看网页源代码

5.3 扩 展——<jsp:forward> 的使用

<jsp:forward>动作指令表示把当前的页面控制权转向另外一个对象,该对象可以是一个 HTML 文 件 、JSP 文件或者一个Servlet文件。

<jsp:forward> 的语法格式:

 <jsp:forward page="转向的文件路径 | <%=表达式%>"/>
 或者
 <jsp:forward page="转向的文件路径 | <%=表达式%>">
     
 <jsp:param name="paraml" value="valuel"/> 
 <jsp:param name="param2" value="value2"/> 
 </jsp:forward>

在上述格式中,page 属性为一个字符串或者一个表达式,用来表示转向文件的路径; <jsp:param>子句指令为传递参数的指令,name 指定参数名,value指定参数值。

<jsp:forward> 的使用示例如下:

【 程序2- 13】 exam5_3_forward.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>跳转指令应用</title>
 </head> 
 <body>
     <h1> 跳转指令应用:</h1>
     <jsp:forward page="exam5_3_forward2.jsp"/>
 </body> 
 </html>

代码分析:该程序采用<jsp:forward> 动作指令,重定向到文件exam5 3 forward2.jsp。

【程序2-14】 exam5 3 forward2.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
 重定向后的文件
 </body>
 </html>

代码分析:该页面进行了简单显示。

运 行exam5_3_forward.jsp, 效果如图2-8所示。

从运行效果可以看出,浏览器的地址栏 中地址不显示变化,但内容显示为重定向后的内容,即在exam5 3 forward.jsp 当前文件中的 内容没有输出,而只输出了转向后的文件exam5 3 forward2.jsp 中的内容。

查看执行结果页面的源代码发现:

直接执行重定向后的文件:

查看此文件是否被跳转:看地址栏的文件地址和输出内容是否对应。

一致:该文件未跳转

不一致:该文件被跳转了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值