zoukankan      html  css  js  c++  java
  • JSP操作

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/actions.html

    JSP操作(Action)使用XML语法结构来控制Servlet引擎的行为。可以动态地插入一个文件,重组JavaBean组件,将用户转换到另一个页面,或为Java插件生成HTML。

    操作元素只有一个语法,因为它符合XML标准:

    <jsp:action_name attribute="value" />

    动作元素基本上是预定义的函数,有以下JSP操作:

    语法目的
    jsp:include 当请求页面时,包含一个文件
    jsp:useBean 发现或实例化一个JavaBean
    jsp:setProperty JavaBean的属性集
    jsp:getProperty 将JavaBean的属性嵌入到输出中
    jsp:forward 将请求转发给一个新页面
    jsp:plugin 生成浏览器-特定代码,为Java插件创建OBJECT或EMBED标签
    jsp:element 动态的定义XML元素
    jsp:attribute 定义了动态定义的XML元素的属性
    jsp:body 定义了动态定义XML元素的body
    jsp:text 用于在JSP页面和文档中编写模板

    一、共同的属性

    对于所有的操作元素来说,有两个属性是共同的:id属性和scope属性。

    • Id属性:Id属性惟一地标识操作元素,并允许在JSP页面内引用操作。如果操作创建了一个对象的一个实例,那么id值可以通过隐式对象PageContext来引用该操作

    • Scope属性:这个属性标识了操作元素的生命周期。id属性和scope属性是直接相关的,因为scope属性决定了id属性相关的对象的生命周期。scope属性有四个可能值:(a)页面,(b)请求,(c)会话和(d)应用程序。

    二、<jsp:include>操作

    此操作允许将文件插入到将要生成的页面中。语法如下:

    <jsp:include page="relative URL" flush="true" />

    该操作与包含指令不同,包含指令在JSP页面转换成Servlet时插入文件,该操作在请求页面时插入文件。

    下面是与包含操作相关的属性列表:

    属性描述
    page 要被包含的页面的相对URL。
    flush 布尔属性决定了包含的资源在被包含之前其缓冲区是否刷新。

    示例:

    定义以下两个文件(a)date.jsp和(b)main.jsp,如下:

    以下是date.jsp文件的内容:

    <p>
       Today's date: <%= (new java.util.Date()).toLocaleString()%>
    </p>

    以下是main.jsp文件的内容:

    <html>
    <head>
    <title>The include Action Example</title>
    </head>
    <body>
    <center>
    <h2>The include action Example</h2>
    <jsp:include page="date.jsp" flush="true" />
    </center>
    </body>
    </html>

    现在把所有这些文件保存在在根目录中,并试图访问 main.jsp。这将显示如下所示结果:

    The include action Example
    
    Today's date: 12-Sep-2010 14:54:22

    三、<jsp:useBean>操作

    useBean操作具有多种用途。它首先利用id和scope变量搜索现有对象。如果没有找到一个对象,那么它会试图创建指定的对象。

    加载bean的最简单的方式如下:

    <jsp:useBean id="name" class="package.class" />

    加载bean类完成后,可以使用jsp:setProperty和jsp:getProperty操作来修改和检索bean属性。

    下面是与useBean操作关联的属性列表:

    属性描述
    class 指定bean的全部包名。
    type 指定将在对象中引用的变量的类型。
    beanName 通过java.beans.Beans类中 instantiate()方法给定bean名称。

    四、<jsp:setProperty>操作

    setProperty操作设置了Bean的属性。在定义该操作之前, Bean一定已经预定义了。有两种使用setProperty操作的基本的方式:

    可以使用jsp:setProperty之后,但是在该操作外面,使用一个jsp:useBean元素,如下所示:

    <jsp:useBean id="myName" ... />
    ...
    <jsp:setProperty name="myName" property="someProperty" .../>

    在这种情况下,无论新的bean是否实例化或现有的bean是否被发现,jsp:setProperty都会被执行。

    jsp:setProperty可以出现的第二个背景是在jsp:useBean元素内部,如下所示:

    <jsp:useBean id="myName" ... >
    ...
       <jsp:setProperty name="myName" property="someProperty" .../>
    </jsp:useBean>

    这里,当且仅当实例化一个新对象时,jsp:setProperty 才会被执行,如果一个现有的对象被发现时,它不会被执行。

    下面是与setProperty操作相关的属性列表:

    属性描述
    name 指定了将被设置属性的bean。该Bean一定是之前定义的。
    property 表明了想设置的属性。值为“*”意味着所有请求的名字与bean属性名字匹配的参数将被传递给适当的 setter 方法。
    value 值分配给给定属性的值。参数的值为null或参数不存在时,setProperty操作将被忽略。
    param param属性是请求参数的名称,该属性会接收该请求参数的值。不能同时使用值和参数,但是使用其中的一个是允许的。

    五、<jsp:getProperty>操作

    getProperty操作用于检索给定属性的值并将它转换成一个字符串,并最终将它插入到输出中。

    getProperty操作只有两个属性,两者都是必需的,其简单的语法如下所示:

    <jsp:useBean id="myName" ... />
    ...
    <jsp:getProperty name="myName" property="someProperty" .../>

    以下是与setProperty操作相关的属性属性列表:

    属性描述
    name 有检索属性的Bean的名称。Bean一定是之前定义的。
    property property属性是要被检索的Bean属性的名称。

    示例:

    定义一个测试的bean,在例子中使用如下所示:

    /* File: TestBean.java */public class TestBean {
       private String message = "No message specified";
       public String getMessage() {
          return(message);
       }
       public void setMessage(String message) {
          this.message = message;
       }
    }

    (操作已过时,POM和Eclipse项目跳过)编译以上代码生成TestBean.class文件并确保将TestBean.class复制在 C:apache-tomcat-7.0.2webappsweb-infclassesaction文件夹中,且类路径变量也应设置为该文件夹:

    现在在main.jsp文件中使用以下代码,该文件加载bean并set/get了一个简单的字符串参数:

    <html>
    <head>
    <title>Using JavaBeans in JSP</title>
    </head>
    <body>
    <center>
    <h2>Using JavaBeans in JSP</h2>
    
    <jsp:useBean id="test" class="action.TestBean" />
    
    <jsp:setProperty name="test" property="message" value="Hello JSP..." />
    
    <p>Got message....</p>
    
    <jsp:getProperty name="test" property="message" />
    
    </center>
    </body>
    </html>

    现在试着访问main.jsp,将会出现如下所示的结果:

    Using JavaBeans in JSP
    
    Got message....
    Hello JSP...

    六、<jsp:forward>操作

    forward操作终止当前页面的操作并将请求转发给另一个资源,如一个静态页面,另一个JSP页面,或Java Servlet。

    该操作的简单的语法如下所示:

    <jsp:forward page="Relative URL" />

    以下是与forward操作相关的属性列表:

    属性描述
    page 应该包括另一个资源的相对URL,比如静态页面,另一个JSP页面,或Java Servlet。

    示例:

    以下是date.jsp文件的内容:

    <p>
       Today's date: <%= (new java.util.Date()).toLocaleString()%>
    </p>

    以下是main.jsp文件的内容:

    <html>
    <head>
    <title>The include Action Example</title>
    </head>
    <body>
    <center>
    <h2>The include action Example</h2>
    <jsp:forward page="date.jsp" />
    </center>
    </body>
    </html>

    现在把所有这些文件保存在在根目录中并试图访问main.jsp。这将显示类似如下所示的结果。这里丢弃主页的内容,只显示来自转发页面的内容。

    Today's date: 12-Sep-2010 14:54:22

    七、<jsp:plugin>操作

    插件用于将Java组件插入到JSP页面中。它决定了浏览器的类型以及需要插入的<object>或<embed>标签的类型。

    如果所需的插件不存在,它将下载插件,然后执行Java组件。Java组件可以是一个Applet或一个JavaBean。

    插件操作有几个属性,对应常用的生成Java组件的HTML标签。<param>元素也可以用来给Applet或Bean发送参数。

    下面是使用插件操作的典型的语法:

    <jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" width="60" height="80">
       <jsp:param name="fontcolor" value="red" />
       <jsp:param name="background" value="black" />
       <jsp:fallback>
          Unable to initialize Java Plugin
       </jsp:fallback>
    </jsp:plugin>

    如果感兴趣的话,可以使用applet尝试该操作。一个新元素,<fallback>元素,当组件失败时,可以用来指定一个错误字符串发送给用户。(已过时)

    The <jsp:element> Action
    
    The <jsp:attribute> Action
    
    The <jsp:body> Action

    所述的<jsp:element>,<jsp:attribute><jsp:body>动作被用于动态地定义的XML元素。这个词动态是重要的,因为这意味着可以在请求时生成XML元素,而不是在编译时静态地生成XML元素。

    以下是动态定义XML元素的简单示例:

    <%@page language="java" contentType="text/html"%>
    <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page">
       
       <head><title>Generate XML Element</title></head>
       
       <body>
          <jsp:element name="xmlElement">
             <jsp:attribute name="xmlElementAttr">
                Value for the attribute
             </jsp:attribute>
             
             <jsp:body>
                Body for XML element
             </jsp:body>
          
          </jsp:element>
       </body>
    </html>

    这将在运行时生成以下HTML代码 :

    <html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page">
       <head><title>Generate XML Element</title></head>
       
       <body>
          <xmlElement xmlElementAttr="Value for the attribute">
             Body for XML element
          </xmlElement>
       </body>
    </html>

    八、<jsp:text>动作

    可以使用<jsp:text>操作将模板文本写入JSP页面和文档。以下是此操作的简单语法:

    <jsp:text>Template data</jsp:text>

    模板的主体不能包含其他元素;它只能包含文本和EL表达式。请注意,在XML文件中,不能使用诸如${whatever>0}表达式,因为大于符号是非法的。相反,使用gt表单,例如${whatever 0}或替代方法是将值嵌入CDATA部分。

    <jsp:text><![CDATA[<br>]]></jsp:text>

    如果需要包括DOCTYPE声明,例如XHTML,您还必须使用<jsp:text>元素,如下所示:

    <jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>
    
       <head><title>jsp:text action</title></head>
       
       <body>
          <books>
        <
    book>
          <
    jsp:text>   Welcome to JSP Programming    </jsp:text>
        </
    book>
       </
    books> </body> </html>

     

    测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test3

  • 相关阅读:
    试说明一级文件索引结构、二级文件索引结构是如何构造的。
    文件物理结构的比较
    文件的物理结构
    什么是索引文件,要随机存取某一记录时需经过几步操作?
    对文件的存取有哪两种基本方式,各有什么特点?
    文件的逻辑结构有哪两种形式?
    文件组织的两种结构
    WebService或HTTP服务端接收请求转发消息到另一个服务端-实现思路
    Eclipse报Caused by: java.lang.OutOfMemoryError: PermGen space解决思路
    树莓派2操作记录(有记录才能沉淀...)
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6947729.html
Copyright © 2011-2022 走看看