JSP-动作指令

来源:互联网 发布:js new date(s) 编辑:程序博客网 时间:2024/05/18 03:12

转自:http://blog.csdn.net/vltic/article/details/7648961   

并整合了 刘中兵.开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)(2)


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

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

(2)JSP:param  用于传递参数,必须与其他支持参数的标签一起使用

(3)JSP:include  用于动态引入一个JSP页面

(4)JSP:plugin 用于下载JavaBean或者Applet到客户端执行

(5)JSP:useBean 创建一个Javabean实例

(6)JSP:setProperty  设置JavaBean实例的属性值

(7)JSP:getProperty  获取JavaBean实例的属性

 

(一)forward指令

       用于将页面相应转发到另外的页面,既可以转发到静态的html页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。动态指令只需直接<>中使用指令,静态则是<%%>,动态指令均是成对出现的。

       JSP的forward指令格式如下:

      对于JSP1.0语法为:

      <JSP:forwardpage="{relativeURL|<%=expression%>}"/>   

      对于JSP1.1以上规范,语法为:

      <JSP:forwardpage="{relativeURL|<%=expression%>}">

                          {<JSP:param·······/>}

      </JSP:forward>  

       这种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。执行forward指令时,用户请求的地址依然没有发生改变,仍然是一次请求,但页面内容完全变为被forward目标页的内容。执行forward指令转发请求时,客户端的请求参数不会丢失。

 

(二)include指令

       include指令时一个动态include指令,也用于包含某一个页面,它不会导入被include页面的编译指令,仅仅被导入页面的body内容插入页面。

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

        <jsp:paramname="parameterName" value="parameterValue"/>

<jsp:include/>

       flush属性用于指定输出缓存是否转移到被导入文件中,如果指定为true,则包含在被导入文件;如果指定为false,则包含在原文件中。对于JSP1.1旧版本中,只能设置为false。

        <jsp:include>元素允许包含动态和静态文件,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到JSP文件中去,则类似于<%@include%>;而如果这个文件是动态的,那么这个被包含文件也会被JSP编译器执行(与ASP相似)。如果这个包含文件是动态的,那么还可以用<jsp:param>传递参数名和参数值。与使用<%@include%>的注意事项相同,被包含的文件中注意不要重复出现某些HTML标记,以免出错。

 

(三)userBean指令

    userBean指令用于在JSP页面中初始化一个java实例,如果多个JSP页面中需要重复使用的某段代码,我们可以把这段代码定义为java类的方法,然后多个JSP页面调用该方法即可,这样可以达到较好的代码复用。

    userBean语法如下:

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

共包含5个属性:

  • id:在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean,这个变量名对大小写敏感,必须符合所使用的脚本语言的规定,这个规定在JavaLanguage规范已经写明。如果Bean已经在别的“<jsp:useBean>”标记中创建,则当使用这个已经创建过Bean时,id的值必须与原来的那个id值一致;否则则意味着创建了同一个类的两个不同的对象;
  • scopeBean存在的范围以及id变量名的有效范围。默认值是page,以下是详细说明。
1)page-能在包含“<jsp:useBean>”元素的JSP文件以及此文件中的所有静态包含文件中使用这个Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。 
2)request-在任何执行相同请求的JSP文件中使用这个Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。能够使用Request对象访问这个Bean,比如request.getAttribute(getAttribute(beanInstanceName)。 
3)session-从创建Bean开始,就能在任何使用相同sessionJSP文件中使用这个Bean。这个Bean存在于整个Session生存周期内,任何在分享此SessionJSP文件都能使用同一Bean。注意在创建这个BeanJSP文件中“<%@page%>”指令中必须指定“session="true"”。 
4)application-从创建Bean开始,就能在任何使用相同applicationJSP文件中使用Bean。这个Bean存在于整个application生存周期内,任何在分享此applicationJSP文件都能使用同一Bean
  • class:使用new关键字以及class构造器从一个class中示例一个Bean。这个class不能是抽象的,必须有一个公用的,没有参数的构造器。这个package的名字区别大小写;
  • type:如果这个Bean已经在指定的范围中存在,那么赋予这个Bean一个数据类型。如果使用type属性的同时没有使用classbeanNameBean将不会被实例化。注意packageclass的名称区分大小写;
  • beanName:beanName可以是package和class,也可以是表达式,它的值会传给Beans.instantiate方法。type的值可以和Bean相同,也可以是它的基类,或者是它所实现的接口。package和class名字区分大小写。

   <jsp:useBean>用于定位或示例一个JavaBeans组件。<jsp:useBean>首先会试图定位一个Bean实例,如果这个Bean不存在,那么<jsp:useBean>就会从一个class或模版中进行实例化。

    使用userBean标签时,除在页面脚本中创建了JavaBean实例之外,该标签还会将该JavaBean实例放入指定scope中,所以我们还需要在脚本中将JavaBean放入指定的scope中,所下面的代码所示: 
    pageContext.setAttribute("beanName",beanName)

    request.setAtttibutr("beanName",beanName)

    session.setAttribute("beanName",beanName)

    application.setAttribute("beanName",beanName)


(四)setProperty指令

    setProperty指令用于为JavaBean实例的属性设置值,setProperty的语法格式

    <jsp:setProperty name="BeanName" property="propertyName"   value="propertyValue"/>

  • name:表示已经在“<jsp:useBean>”中创建的Bean实例的名字;
  • property:储存用户在Jsp输入的所有值,用于匹配Bean中的属性;
  • property="*",设置Bean 属性的快捷方式,根据已提交表单中的数据,设置这个javaBean中相应的属性值。。在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。
  • property="propertyName"[param="parameterName"]:用一个参数值来指定Bean中的一个属性值,一般情况下是从request对象中获得的。其中property指定Bean的属性名,param指定request中的参数名;
  • property="propertyName"value="{string|<%=expression%>}":使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果这个字符串,那么它就会被转换成Bean属性的类型。如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。
    如果参数值为空值,那么对应的属性值也不会被设定。此外,不能在同一个<jsp:setProperty>中同时使用paramvalue参数。

(五)getProperty指令

    使用<jsp:getProperty>可获取Bean的属性值,用于在页面中显示。其语法格式如下:

    <jsp:getProperty  name="BeanName" name="propertyName"/>

  • nameBean的名字,由<jsp:useBean>指定;
  • property:所指定的Bean的属性名。

 

(六)plugin指令

    plugin指令主要用于下载服务器端的JavaBean或Applet到到客户端执行,由于程序在客户端执行,因此客户端必须安装虚拟机。其语法格式如下:

<jsp:plugin

type=”bean|applet”

code=”classFileName”

codebase=”classFileDirectoryName”

[name=”instanceName”]

[archive=”URIToArchive,…”]

[align=”bottom|top|middle|left|right”]

[height=”displayPixels”]

[wicth=”displayPixels”]

[hspace=”leftRightPixels”]

[vspace=”topBottomPixels”]

[jreversion=”JREVersionNumber|1.1”]

[nsluginurl=”URLToPlugin”]

[iepluginurl=”URLToPlugin”]

[ <jsp:params>

        [<jsp:paramname =”parameterName”

Value=”{parameterValue|<%=expression%>}}”]

</jsp:params>]

[<jsp:fallback> text message for user</jsp:fallback>]

</jsp:plugin>

共包含13个属性:

  • type:将被执行的插件对象的类型,你必须得指定这个是Bean还是applet,因为这个属性没有默认值;
  • code:将会被Java插件执行的JavaClass的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中;
  • codebase:将会被执行的JavaClass文件的目录(或者是路径),如果你没有提供此属性,那么使用<jsp:plugin>jsp文件的目录将会被使用;
  • name:这个Beanapplet实例的名字,它将会在Jsp其他的地方调用;
  • archive:一些由逗号分开的路径名,这些路径名用于预装一些将要使用的class,这会提高applet的性能;
  • align:图形对象、Applet的位置,有以下值。 ottom:位于底部 top:位于顶部 middle:在中间 left:在左边 right:在右边
  • heightwidthAppletBean将要显示的长宽的值,此值为数字,单位为像素;
  • hspacevspaceAppletBean显示时在屏幕左右,上下所需留下的空间,单位为像素;
  • jreversionAppletBean运行所需的JavaRuntimeEnvironment(JRE)的版本。默认值是1.1
  • nspluginurlNetscapeNavigator用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp
  • iepluginurlIE用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp
  • <jsp:params>:该标志符需要向appletBean传送的参数name或参数值value
  • <jsp:fallback>:一段文字,用于Java插件不能启动时显示给用户的,如果插件能够启动而appletBean不能,那么浏览器会有一个出错信息弹出。<jsp:plugin>元素用于在浏览器中播放或显示一个对象(典型的就是appletBean),而这种显示需要浏览器中的Java插件。当JSP文件被编译之后送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。注意:<object>用于HTML4.0<embed>用于HTML3.2。一般来说,<jsp:plugin>元素会指定对象是Applet还是Bean,同样也会指定class的名称还有位置,另外还会指定将从哪里下载这个Java插件。

(七param指令

      用以定义<jsp:plugin>插件的输入参数,实际上提供了名称与值的一种一一对应关系,语法为:

                         <jsp:param name =”name” value=”value”/>






原创粉丝点击