【JSP】JSP基础学习记录(二)—— JSP的7个动作指令

 2、JSP的7个动作指令:

  动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本。

  JSP动作指令主要有如下7个。

  jsp:forward:执行页面转向,将请求的处理转发到下一个页面。

  jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。

  jsp:include:用于动态引入一个JSP页面。

  jsp:plugin:用于下载JavaBean或Applet到客户端执行。

  jsp:useBean:创建一个JavaBean的实例

  jsp:setProperty:设置JavaBean实例的属性值。

  jsp:getProperty:输出JavaBean实例的属性值。

 2.1、forward指令:

  forward指令用于将页面相应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。

  语法:

    (1):<jsp:forward page="{relativeURL|<%expression%>}" />

    (2):可传递参数(被跳转页可通过getParameter("name1")接收参数)

      <jsp:forward page="{relativeURL|<%expression%>}" >

        <jsp:param value="value" name="name1"/>

      </jsp:forward>    

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>跳转页</title>
 8 </head>
 9 <body>
10     <jsp:forward page="2_1_2.jsp">
11         <jsp:param value="p2 Value" name="p2"/>
12     </jsp:forward>
13 </body>
14 </html>
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>被跳转页</title>
 8 </head>
 9 <body>
10     <%
11         String p2 = request.getParameter("p2");
12     %>
13     <p>2_1_1传入的参数p1为:<%=request.getParameter("p1") %></p>
14     <p>2_1_1自定义的参数p2为:<%=p2 %></p>
15 </body>
16 </html>

  

  注:forward跳转页面时浏览器中URL不会发生变化,仅仅是页面内容跳转。且请求页面的所有参数将转发到被跳转页,故被跳转页可通过getParameter接收请求跳转页的所有参数。从表面上看,<jsp:forward />指令给人一种感觉:它是将用户请求“转发”到了另一个新页面,但实际上,<jsp:forward />并没有重新向新页面发送请求,它只是完全采用了新页面来对用户生成响应——请求依然是以次请求,所以请求参数、请求属性都不会丢失。

 

 2.2、include指令:

  include指令是一种动态include指令(与上一节中说的静态include编译指令相对应),也用于包含某个页面,它不会导入被include页面的编译指令,仅仅被导入页面的body内容插入本页面。

  语法:<jsp:include page="{relativeURL | <%=expression%>}" flush="true" />或者

    <jsp:include page="{relativeURL | <%=expression%>}" flush="true">

      <jsp:param name="parameterName" value="patameterValue"/>

    </jsp:include>

  flush属性用于置顶输出缓存是否转义到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含再原文件中。

  

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Index</title>
 8 </head>
 9 <body>
10     <div>
11         <p>本尊是Index页</p>
12     </div>
13     <br />
14     <br />
15     <br />
16     <jsp:include page="2_2_2.jsp">
17         <jsp:param value="p1 Value" name="p1"/>
18     </jsp:include>
19 </body>
20 </html>
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>footer</title>
 8 </head>
 9 <body>
10     <div>
11         <p>我是footer页中性感的小尾巴。。。</p>
12         <p>p1=<%=request.getParameter("p1") %></p>
13     </div>
14 </body>
15 </html>

  

  注:

    (1):静态导入是将导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

    (2):静态导入时被导入页面的编译指令会起作用;而动态导入时本被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

    (3):动态包含还可以增加额外的参数。

 

 2.3、useBean、setProperty、getProperty指令:

  这三个指令都是与JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例;setProperty指令用于为JavaBean实例的属性设置值;getProperty指令用于输出JavaBena实例的属性。

  useBean语法:

    <jsp:useBean id="name" class="classname" scope="page | request | session | application" />

    id属性是JavaBean的实例名;class属性确定JavaBena的实现类;scope属性用于指定JavaBean实例的作用范围,该范围有以下4个值。

    page:该JavaBean实例仅在该页面有效。

    request:该JavaBean实例在本次请求有效。

    session:该JavaBean实例在本次session有效。

    Application:该JavaBean实例在本应用内一直有效。

  setProperty语法:

    <jsp:setProperty name="benaName" proterty="propertyName" value="value" />

    其中name属性确定需要设定JavaBean的实例名;property属性确定需要设置的属性名;value属性则确定需要设置的属性值。

  getProperty语法:

    <jsp:getBean name="beanName" property="propertyName" />

    其中name属性确定需要设定JavaBean的实例名;property属性确定需要输出的属性名。

  首先声明一个实例化的person类型,仅有name与age两个属性

 1 package cnblogsNodes;
 2
 3 /**
 4  * JavaBean模型
 5  *
 6  * @author Clown
 7  *
 8  */
 9 public class personInfo {
10     private String name;    // 姓名
11     private int age;    // 年龄
12
13     public String getName() {
14         return name;
15     }
16
17     public void setName(String name) {
18         this.name = name;
19     }
20
21     public int getAge() {
22         return age;
23     }
24
25     public void setAge(int age) {
26         this.age = age;
27     }
28
29 }
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>useBean</title>
 8 </head>
 9 <body>
10     <jsp:useBean id="person1" class="cnblogsNodes.personInfo"
11         scope="application" />
12     <jsp:setProperty property="name" name="person1" value="Clown" />
13     <jsp:setProperty property="age" name="person1" value="1024" />
14
15     <div>
16         <p>
17             姓名:<jsp:getProperty property="name" name="person1" /></p>
18         <p>
19             年龄:<jsp:getProperty property="age" name="person1" /></p>
20     </div>
21 </body>
22 </html>
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>getBean</title>
 8 </head>
 9 <body>
10     <jsp:useBean id="person1" class="cnblogsNodes.personInfo"
11         scope="application" />
12     <h3>获取Application的useBean</h3>
13     <div>
14         <p>
15             姓名:<jsp:getProperty property="name" name="person1" /></p>
16         <p>
17             年龄:<jsp:getProperty property="age" name="person1" /></p>
18     </div>
19 </body>
20 </html>

  

  

  上文中useBean的scope为Application,故在getBean页面声明一个与useBean中同名的Person.java。就可以获取到useBean页面中设置的name与age属性。  

 2.4、plugin指令:

  plugin指令主要用于下载服务器端的JavaBean或Applet到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。实际上类似于Activity,处于安全性的考虑使用很少了。参考书上也仅仅几句话略过,故我也没有再去深究他(各位客官原谅我的懒惰。。。)!

 2.5、param指令:

  param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param指令没有实际意义。param指令可以与一下三个指令结合使用。

    jsp:include

    jsp:forward

    jsp:plugin

  语法:<jsp:param name="paramName" value="paramValue" />

  上面介绍其他指令的时候已经使用过了。

 尾:

  这篇就到这里吧、下一篇记录JSP脚本中的9个内置对象

时间: 2024-10-13 10:26:05

【JSP】JSP基础学习记录(二)—— JSP的7个动作指令的相关文章

Spring Boot学习记录(二)--thymeleaf模板

Spring Boot学习记录(二)–thymeleaf模板 标签(空格分隔): spring-boot 自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好的和spring集成.下面开始学习. 1.引入依赖 maven中直接引入 <dependency> <groupId>org.springframework.boot</gr

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

javascript基础学习(二)

javascript的数据类型 学习要点: typeof操作符 五种简单数据类型:Undefined.String.Number.Null.Boolean 引用数据类型:数组和对象 一.typeof操作符 typeof操作符用来检测变量的数据类型,操作符可以操作变量也可以操作字面量. 对变量或值运用typeof操作符得到如下值: undefined----如果变量是Undefined类型: boolean-------如果变量是Boolean类型: number-------如果变量是Numbe

Objc基础学习记录3

在学习Objective-c中, 数组 1.NSArray, 这是一个不可变的数组,不能修改和删除其中的对象,可以存储任意objective的对象指针. 不能存储int,char类型的,,需要转换为需要的类型. 要快速枚举数组中的值,用in. 1 for (NSString *eleement in myArray) 2 NSLog(@"myArray is %@",element); 2.NSMutableArray 这是一个可变的数组,可以向其中添加和删除对象. a.添加addOb

MVC+Ext.net零基础学习记录(五)

继MVC+Ext.net零基础学习记录(四),在后面我在既有的项目上又添加了一个子项目,还用前面提到的方法,进行主项目中引用DLL,然后子项目中生成事件中使用mkdir 进行拷贝 发现一个下午就总是报错 错误 1 命令“mkdir "...\Areas\HPSS\Views" xcopy "...?\Views" "E:\Work\01 TPMSRC\MVCWEBTPM\WEBTPM\Areas\HPSS\Views" /S /E /C /Y 已

AspectJ基础学习之二搭建环境(转载)

AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可以提供语法检查,以及编译.这里要说一点重要的知识: aspectj不能使用传统的JDK编译,他的编译器扩展自JDK.AJDT提供的编译功能,就为我们省了很多事,当然你也可以用命令行自己去编译(不过我从来没有这么做过). 无论是apsectj的安装,还是AJDT网上还是有很多文章讲的.不会的同学可以自

javascript 基础学习整理 二 之 html对象总结,参考W3C

Anchor 对象 更改一个链接的文本.URL 以及 target 使用 focus() 和 blur() 向超链接添加快捷键 Document 对象 使用 document.write() 向输出流写文本 使用 document.write() 向输出流写 HTML 返回当前文档的标题 返回当前文档的 URL 返回当前文档的 referrer 返回下载当前文档的服务器域名 使用 getElementById() 使用 getElementsByName() 打开一个新的文档,添加一些文本,然后

MVC+Ext.net零基础学习记录(四)

在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在博客园也搜索到了很多解决方案,其中http://www.cnblogs.com/dingji/archive/2012/06/10/2544255.html这篇文章的解决方法是我感觉最有效的解决方法 但是我思考了很久,还是决定不采用MvcContrib进行分离,因为这样的话,一个问题是,DLL文件到

JavaScript 基础学习(二)

JavaScript 基础学习(二) instanceof方法: var s = "hello"; var i = 8; //typeof 只能判断基本数据类型 alert(typeof(s)); alert(typeof (i)); //对于引用数据类型,用instanceof var s2=new String("hello2") alert(typeof(s2)); alert(s2 instanceof String);//true var n = new