JSP基础(5)-JSP标准动做


1、JSP标准动做基本介绍:html


在jsp页面被翻译成Servlet源代码的过程当中,当容器遇到标准动做元素时,就调用与之相对应的Servlet类方法来代替它,全部标准动做元素的前面都有一个JSP前缀做为标记,通常形式如:<jsp:标记名… 属性…/>。有些标准动做中间还包含一个体,即一个标准动做元素中又包含了其余标准动做元素或者其余内容,包括体的标准动做的使用格式以下:java


<jsp:标记名…属性…>web


<jsp:标记名…属性以及参数…/>小程序


</jsp:标记名>浏览器


根据各个标准动做的功能,能够将这些标准动做分红如下6组:session


1.  jsp中使用到JavaBean的标准动做:<jsp:useBean> 定义使用一个JaveBean实例,ID属性定义了实例名称;<jsp:getProperty>从一个JavaBean中获取一个属性值,并将其添加到响应中;<jsp:setProperty>设置一个JavaBean中的属性值; app


2.  在jsp中包含其余jsp文件或者web资源的标准动做:<jsp:include>在请求处理阶段包含来自一个Servlet或者jsp文件的响应,注意与include指令的不一样; jsp


3.  将到达的请求转发给另一个jsp页面或者web资源以便进一步的操做的标准动做:<jsp:forward>将某个请求的处理转发到另外一个Servlet或者jsp页面; ide


4.  在其余标准动做的中间指定参数的标准动做:<jsp:param>对使用<jsp:include>或者<jsp:forward>传递到另一个Servlet或者jsp页面的请求添加一个传递参数值; 函数


5.  在客户端的页面嵌入java对象(例如applet,是运行在客户端的小java程序)的标准动做:<jsp:plugin>根据浏览器类型为java插件生成Object或者Embed标记;<jsp:params>;<jsp:fallback>;


6.  仅仅用于标记文件的标准动做:


<jsp:attribute>;<jsp:body>;<jsp:invoke>;<jsp:dobody>;<jsp:element>;<jsp:text>;<jsp:output>


2、<jsp:useBean>标准动做:


使用<jsp:useBean>标准动做可引用一个将在jsp页面中使用的javaBean类,javaBean的使用实现了逻辑处理和页面显示在必定程度上的分离,从而能够增长代码的可重用性,若是将逻辑处理写在一个javaBean类中,在其余全部jsp页面程序中便可使用<jsp:useBean>标准动做来引用该javaBean类,使用形式以下:


<jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>


   <jsp:useBean>标准动做还能够包含一个体,如:<jsp:setProperty>动做,在第一次建立这个实例的时候,就会使用<jsp:setProperty>动做来进行参数的赋值操做,也就是说,若是该页面中已经存在了JavaBean类的实例,则不会再执行<jsp:setProperty>动做所进行的参数赋值。另外,,<jsp:useBean>标准动做也并不意味着每次都要建立一个实例,若是页面中已经存在该JavaBean的实例,则只直接使用这个实例,使用形式以下:


<jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>


<jsp:标记名… 属性以及参数…/>


……


</jsp:useBean>


代码说明: 使用class属性来指定须要实例化的JavaBean类,而后使用id来标识该实例,type属性用来指定该实例化的JavaBean类将要实现的一个接口或者一个超类;scope属性能够用来指定该JavaBean实例可以关联到多个页面。


<jsp:useBean>标准动做元素中使用的属性以下:


·         id:给一个类实例取名并做为整个jsp页面的惟一标记,若是须要建立一个新的JaveBean实例,这也是引用这个新JavaBean实例的名称


·         class:这是jsp页面引用javaBean组件的完整Java类名(必定要包括包名).若是容器没有找到指定名的类实例,则会使用这个class属性指定的完整类名来建立一个新的JavaBean实例进行引用


·         type:此属性告诉容器这里的JavaBean实例须要实现一个Java接口,或者JavaBean实例须要扩展一个超类,再翻译阶段会使用到这个属性,type属性不是必须添加,可是必须添加class和type属性中多个一个


·         scope:指定这个JavaBean再哪一种上下文内可用,该属性能够取下面的4个值之一:page,request,session,application;page表示该JavaBean只有在当前页面内可用(保存在当前页面的PageContext内);request表示该JavaBean在当前的客户请求内有效(保存在ServletRequest对象内);session表示该JavaBean对当前httpSession内的全部页面都有效。


3、<jsp:setProperty>标准动做


使用<jsp:setProperty>动做能够修改JavaBean实例种的属性变量,其中能够有两种使用形式:


1.  <jsp:setProperty>标准动做嵌入在<jsp:useBean>标准动做的体内,但这时只能在JavaBean被建立的实例中执行,使用形式以下:


1.  <jsp:useBean id=”myName” …>


2.  <jsp:setProperty name=”myName” property=”someProperty”…/>


3.  </jsp:useBean>


2.  在<jsp:useBean>动做的后面使用<jsp:setProperty>标准动做元素,使用形式以下:


1.  <jsp:useBean id=”myName” …/>


2.  <jsp:setProperty name=”myName” property=”someProperty”…/>


代码说明: 无论指定的JavaBean是新建立的仍是直接使用的实例,在<jsp:useBean>动做以后使用的<jsp:setProperty >标准动做都会被执行。其中<jsp:setProperty >共有4个属性能够选择设置:


1.  name:这个属性是必须设置的,由于经过这个属性才能知道针对哪一个JavaBean实例的属性进行设置;


2.  property:也是必须设置的,它告诉容器须要对JavaBean实例中的哪些属性进行设置,这里有个特殊的用法,就是把property属性设置为”*”,该设置表示全部名字与JavaBean属性名字匹配的请求参数都被传递给相应属性的set方法;


3.  value:这个属性是可选的,指定JavaBean属性的值;


4.  param:这个属性和value属性不能同时使用,两者之间只能使用一个,当两个属性都没有在<jsp:setProperty >动做中指定时,指定的属性变量将使用JavaBean中的默认值(例如构造函数中的默认值),若是使用param属性,容器就会把property指定的属性变量设置为param指定的请求参数的值。


4、<jsp:getProperty>标准动做


该标准动做与前一个<jsp:setProperty >标准动做相对应,用来提取指定的JavaBean属性值,而后转换成字符串输出,该动做有两个必需要设置的属性:


1.  name:表示JavaBean在jsp中的标记;


2.  property:表示提取JavaBean中哪一个属性的值。


使用例子:


1.  … …


2.  <html>


3.  <body>


4.  <!—定义一个类实例,以testBean做为标记,并给message属性赋值”hello” -- >


5.  <jsp:useBean id=”testBean” class=”com.helloworld.SimpleBean”>


6.  <jsp:setProperty name=”testBean” property=”message” value=”Hello”/>


7.  </jsp:useBean>


8.  <H1>经过<jsp:getProperty>动做获得message属性值:</H1>


9.  <I><jsp:getProperty name=”testBean” property=”message”/></I>


10.<! – 从新给message赋值 -- >


11.<jsp:setProperty name=”testBean” property=”message” value=”hello World”/>


12.<! – 利用EL表达式获取message的值 -- >


13.${testBean.message}


14.</body>


15.</html>


1.  -----------------JavaBean--------


2.  Package com.helloworld:


3.  Public class SimpleBean{


4.  Private String message=””:


5.  Public String getMessage(){


6.  Return this message:


7.  }


8.  Public void setMessage(String message){


9.  This.message=message:


10.}


11.}


5、引用外部文件的标准动做<jsp:include>


该标准动做与前面介绍的include指令方法很是相似,也是将特定的外在文件插入到当前页面中,其使用语法以下:


<jsp:include page=”…url…” flush=”true|false”/>


该标准动做还能够包含一个体,具体形式以下:


<jsp:include page=”…url…” flush=”true|false”/>


<jsp:param …/>


</jsp:include>


经过在<jsp:include>动做体中使用<jsp:param>动做,能够用来指定jsp页面中可用的其余请求参数,以后能够在当前的jsp文件以及引用的外在文件中使用这些请求参数。


在这着重说明就是<include>指令与<jsp:include>动做存在的差别。Include指令是在jsp翻译时进行文件的合并,而后对合并的总体文件进行编译;而<jsp:include>标准动做则首先进行自身的翻译和编译,而后在用户请求阶段进行二进制文件的合并。


6、进行请求转移的标准动做<jsp:forward>




<jsp:forward>标准动做把请求转移到另一个页面,这个标准动做只有一个属性page,page属性包含一个相对url地址,如:




<jsp:forward page=”/utils/errorReporter.jsp”/>


<jsp:forward page=”<%=someJavaExpression %>” />




第一行的page值是直接给出的,第二行的<jsp:forward>标准动做中的page值是在请求时动态计算的。


7、


参数设置的标准动做<jsp:param>




该<jsp:param>标准动做通常与<jsp:include>以及<jsp:forward>等配套使用,用来进行参数的传递,其通常形式以下:


<jsp:param name=”…名称…” value=”…值…”/>


每一个<jsp:param>标准动做都会建立一个即有名又有值的参数,这样能够经过<jsp:include>标准动做所包含的外在文件以及经过<jsp:forward>转移到另外页面,均可以使用这些参数,如:


1.  <html>


2.  <body>


3.  <jsp:include page=”date.jsp”>


4.  <jsp:param name=”serverName” value=”zzb”/>


5.  </jsp:include>


6.  </body>


7.  </html>


则说明在请求时所包含的date.jsp文件可使用经过<jsp:param>标准动做定义的serverName参数。


8、处理插件的标准动做


·         <jsp:plugin>:用于指定在客户端运行的插件


使用<jsp:plugin>标准动做能够在页面程序中插入一个java插件,通常为java applet小程序(也能够是任何javaBean类),它随着页面程序一块儿传输到客户端,而且在客户端运息, <jsp:plugin>标准动做的通常使用形式以下:


<jsp:plugin type=”…applet 或者 JavaBean…” code=”…” codebase=”…” archive=”…” …>


</jsp:plugin>


在该动做中能够设置多个属性,其中大部分是<object>或者<EMBED>标记的HTML属性,如:name,code,codebase,archive,align,width,height,jreversion,title等.其中type属性用来指定该插件是applet小程序仍是JavaBean类。


·         <jsp:params>:用于向引用的插件传递参数值,通常包含在<jsp:plugin>动做体内


<jsp:params>标准动做的体由多个<jsp:param>动做组成,而且该标准动做只能使用在<jsp:plugin>标记的体中,通常使用形式以下:


1.  <jsp:plugin type=”…applet|JavaBean…” code=”…” …>


2.  <jsp:params>


3.  <jsp:param …/>


4.  <jsp:param …/>


5.  …


6.  </jsp:params>


7.  </jsp:plugin>


说明:<jsp:params>动做体中包括多个<jsp:param>动做来给插件类中的属性变量赋值,每个<jsp:param>给运行在客户端的插件传递一个参数


·         <jsp:fallback>标准动做


该标签是与<jsp:plugin>标准动做配合使用的,它告诉客户端浏览器当客户端不支持该插件运行时将要显示的HTML页面或者jsp代码,如下是该标准动做的通常使用形式:


<jsp:fallback>


…客户端浏览器不支持插件运行时显示html或者jsp代码…


</jsp:fallback>


说明:体中嵌入的代码只有在客户端不支持该插件运行时才被执行。