第5章 JSP技术  

 5.2.6 jsp指令
    jsp指令有两种:jsp包含指令(<jsp:include…/>)和jsp使用JavaBean指令(<jsp:useBean…/>)。
    1.jsp包含指令jsp:include
    jsp:include指令语法格式如下:
        <jsp:include page="{relativeURL | <%=expression%>}"flush="true"/>
    jsp:include 指令实现将其他文件的内容插入到当前JSP页面的输出中。与include指令不同,jsp:include指令在JSP页面被用户请求时才将指定文件的内容插入服务器的响应输出中,尽管这样会降低服务器请求的效率,但这增强了系统的灵活性。
    该指令可以包含动态和静态文件,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件是动态的。那么这个被包含文件也会被JSP编译器执行。由于<jsp:include> 能够同时处理这两种文件,因此不需要判断此文件动态的还是静态的。如果这个包含文件是动态的,那么可以用<jsp:param>还传递参数名和参数值。其属性如下:
       <jsp:page="{relativeURL│<%=expression%>
    参数为一相对路径,或者是代表路径的表达式。
       flush="true"
    这里必须使用flush="true",不能使用 false值。缺省值为 false。 
       <jsp:param name="paramterName" value="{paramerterValue<%=expression%>}"/>
    <jsp:param>语句可传递一个或多个参数给动态文件,另外,一个页面中可以使用多个<jsp :param>来传递多个参数。
   例5-11 一个用户验证页面,包含了验证用户的JSP动态程序与静态的页头、页底及版权信息页文件。
         <jsp:include page="scripts/login.jsp"/>
         <jsp:include page="copyright.html" />
         <jsp:include page="/head.html"/>
         <jsp:include page="/buttom.html"/>
    2. jsp使用JavaBean指令(jsp:useBean)
    jsp使用JavaBean指令格式如下:
       <jsp:useBean id="Name" scope="page│request│session│
       application "class="package.class"/> </jsp:useBean>
    <jsp:useBean>指令能在JSP页面中装入并使用一个 JavaBean。 <jsp:useBean>的具体含义是初始化一个"class"属性所指定的 Bean类的实体,并将该对象命名为“id”属性所指定的值。但是,如果系统中已经存在具有相同 "id"和 "scop" 属性的Bean 类实体,则该动作将不再初始化新的实体,而直接使用已存在的Bean对象。
    在通过<jsp:useBean>动作指令在 JSP页面中声明了Bean类实体之后,就可以使用 <jsp:setProperty>和<jsp:getProperty> 指令读取或设置Bean 的属性。当然,也可以使用JSP脚本程序或表达式直接调用Bean对象的公有方法。
    JSP服务器创建 Bean对象时将调用其无参数的构造函数初始化 Bean属性。如果需要在Bean对象创建时需要读取或设置 Bean的属性,则可以在<jsp:useBean>指令中嵌套 <jsp:setProperty>和<jsp:getProperty> 指令来访问Bean的属性。其具体形式如下:
      <jsp:useBean┄>
      ┄
      <jsp:setProperty name="javaName" property="JavaProperty". ./>
      <jsp:getproperty name="javaName" property="JavaProperty". ./>
      ┄
      </jsp:useBean>
    嵌套在<jsp:useBean>指令之中的 <jsp:setProperty>和<jsp:getProperty>指令只在Bean 被初始化时被执行。如果<jsp:useBean>指令仅仅是调用一个已经存在的 Bean对象,则嵌套在<jsp;useBean>动作指令之中的其他指令将不再执行。
除了设置Bean对象名id和Bean的类名class属性外,还可以设置 <jsp:useBean>指令的另外3项属性:
scope、 type和beanName。具体含义和使用方法见表5-1。

    <jsp:useBean>引用的Bean类必须驻留在服务器的 "class"路径中,否则, JSP 页面将无法通过编译。如果编写的Bean类存放在特定的目录下,则应将其所在的目录加到系统的 "classpath"变量中。
    3.jsp设置JavaBean属性指令 jsp:setProperty
    使用<jsp:setProperty>来设置Bean中的属性值。该指令可以在两种情况下使用。
    (1)独立使用。
     语法:<jsp:useBean id="myName"┄/>
           <jsp:setProperty name="myName" property="propertyName"┄/>
    (2)嵌套在<jsp:useBean>指令中使用
           <jsp:useBean id="myName"┄/>
           <jsp:setProperty name="myName" property="propertyName"┄/>
           </jsp:useBean>
    在第1种情况下,无论Bean对象中否初次被使用,<jsp:setProperty>动作都会被执行。而在第2种情况下,<jsp:setProperty>动作仅在Bean对象被初始化时执行。
    <jsp:setProperty>指令有其特有的属性,具体见表5-2

    例5-11 jsp:setProperty示例
      <jsp:setProperty name="mybean " property="*" />
      <jsp:setProperty name="mybean " property="username" />
      <jsp:setProperty name="mybean " property="username" value="yin" / >
   4. jsp读取JavaBean属性指令(jsp:getProperty)
    语法:<jsp:getProperty name="beanInstanceName" property="propertyName" />
    说明:<jsp:getProperty>用于获取Bean的属性值,显示在页面中。
    <jsp:getProperty>指令将从Bean的属性中取出的值转换成字符串,然后插到响应输出,也就是将其显示在JSP页面中。在使用<jsp:getProperty>之前,须用<jsp:useBean>创建它。
    <jsp:getProperty>指令的使用方法与<jsp:setProperty>雷同,读者可参照<jsp:setProperty>的属性来定义其指令属性。但<jsp:setProperty>指令也有一些限制,即:不能使用<jsp:getProperty>来检索一个已经被索引了的属性。
   例5-12 Jsp1Bean.java 源程序如下:
      public class Jsp1Bean {
        private String sample = "Start value";
        //读属性sample
        public String getSample() {
        return sample;
      }
       //写属性sample
       public void setSample(String newValue) {
        if (newValue!=null) {
        sample = newValue;
        }
      }
  例5-13 Jsp1Bean .jsp使用JavaBean,Jsp1Bean.jsp源程序如下:

 

   例5-13 运行结果如图5-9所示。

在JBuilder中运行整个工程<点击“在JBuilder中运行整个工程”,在出现的“文件下载”对话框中选择“打开(O)”按钮>

   5.jsp传递客户请求对象指令(jsp:forward)
    JSP传递客户请求对象指令jsp:forward语法格式如下:
    <jsp:forward page={"relativeURL"│"<%=expression% >"}/>或
    <jsp:forward page={"relativeURL"│"<%=expression% >"}>
    <jsp:param name="parameterName" value="{parameterValue│<%=expression %>}">
    </jsp:forward>
   <jsp:forward>指令能够将用户的请求传递到下一页面处理,在控制型的JSP页面中经常使用。
   <jsp:forward>指令从一个JSP文件向另一个文件传递一个包含用户请求的request对象。该指令只有一个属性“page”。指定目标页面的相对URL,"page"属性的值既可是静态值,也可以由JSP动态产生。
   使用<jsp:forward>指令,能够向目标文件传送参数和值,在例5-15中传递的参数名为username,值为一yin,如果使用了<jsp:param>指令的话,目标文件必须是一个动态的文件,才能够处理参数。
   该指令的属性如下:
        page="{relativeURL│<%=expression %>}"
   这里是一个表达式或是一个字符串用于说明你将要定向的文件或URL这个文件可以是JSP程序段,或者其他能够处理repuest对象的文件。
   <jsp:param name="parameterName" value="{parameter Value│<%=expression%> }"/>+
   向一个动态文件发送一个或多个参数,这个文件一定是动态文件,如果想传递多个参数,可以在一个JSP文件中使用多个<jsp:param>.name指定参数名,value指定参数值。
   例5-14 jsp:forward示例
          <jsp:forward page="/servlet/login,jsp" />
          <jsp:forward page="<%=someJSPExpression%>">
          <jsp:param name="username" value="jsmith "/>
6. jsp需要Java插件指令(jsp:plugin)
    语法:

 

    当JSP文件被编译,传输到浏览器时,</jsp:plugin>指令动态产生<OBJECT><EMBED>标志,以使用浏览器
的Java插件运行Applet。<object>用于HTML4.0,<embed>用于HTML3.2。
    一般来说,</jsp:plugin>指令指定对象是Applet还是Bean,也指定class的名字及位置,另外还会指定将
从哪里下载这个Java插件,其属性的含义和使用方法见表5-3。

     例5 - 15 使用JSP plugin指令嵌入一个Applet小应用程序

 

    程序Plugin jsp运行结果如图5-10所示:

在JBuilder中运行整个工程<点击“在JBuilder中运行整个工程”,在出现的“文件下载”对话框中选择“打开(O)”按钮>

posted on 2007-05-25 16:57  一般一般  阅读(1592)  评论(0编辑  收藏  举报