以下内容引用自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.2\webapps\web-inf\classes\action文件夹中,且类路径变量也应设置为该文件夹:

现在在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

JSP操作的更多相关文章

  1. jsp操作MySQL时报错:Operation not allowed after ResultSet closed

    一个stmt对多个rs进行操作引起的ResultSet关闭的错误 解决办法:创建新的stmt,一个rs对应一个stmt

  2. button上传替换file上传按钮,并显示图片缩略图,纯jsp操作

    1.jsp代码 <div class="inputBox"> <span id="tu" <c:if test="${pd = ...

  3. jsp操作xml

    <?xml version="1.0" encoding="UTF-8"?> <!-- 说明是xml文件,文件的版本和字符编码 --> ...

  4. jsp操作mysql样例

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. jsp操作javabean

    一:介绍 javabean: java语言编写的一个可重用的组件. 狭义上来说就是我们编写的一个普通的java类,例如:User... javabean规范: 1.必须是一个公共具体的类:public ...

  6. java的JSP技术

    java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ...

  7. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  8. Java遇见HTML——JSP篇之JSP基础语法

    一.JSP简介 JSP全名为Java Server Pages,Java服务器端页面,其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.Jsp是一种动态网页技术标准,是在服务 ...

  9. JSP 标准标签库(JSTL)(JSP Standard Tag Library)

    [1] JSTL简介    > JSTL是JSP的标准标签库    > JSTL为我们提供了一些常用的标签,供我们日常开发使用(if . if...else .遍历 . 日期格式化)   ...

随机推荐

  1. 日常记录-代码中Background后Padding 失效

    近日,在开发过程中 遇到了 Layout 代码中设置 Background 后,padding失效的问题,只是在Android 4.4.4 和 4.4.2 的手机上遇到了. 网上搜索了下,说是 4.4 ...

  2. 掌握Spark机器学习库(课程目录)

    第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...

  3. vba,设置,excel,wps ,页面设置例子

    Sub yemian()'按钮1点击触发 执行下面的命令With Sheets(1).PageSetup'对像是表格1的页面设置的函数PageSetup,下面是函数的属性修改前面加. .Orienta ...

  4. 迅为嵌入式4418/6818开发板QT-HDMI显示

    本文转自迅为论坛:http://www.topeetboard.com 平台:迅为4418/6818开发平台 1.首先请确认下光盘资料的日期(只有20171120及以后更新的光盘支持QT HDMI显示 ...

  5. POI原生导入读取EXCEL

    好久没用 最近项目有冲突 所以又用到了这个 谁知道以后还会不会用 先记下来吧 直接扔项目里 调方法就OK 了. 记录一下....不想再写类似这样的东西了 import org.apache.poi.h ...

  6. laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效

    laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效 php框架 laravel 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键 ...

  7. 基于oauth2.0实现应用的第三方登录

    OAuth2 OAuth2所涉及到的对象主要有以下四个: Client 第三方应用,我们的应用就是一个Client Resource Owner 资源所有者,即用户 Authorization Ser ...

  8. SQLServer锁的概述

    SQLServer锁的概述   锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了 ...

  9. 【Pytorch】关于torch.matmul和torch.bmm的输出tensor数值不一致问题

    发现 对于torch.matmul和torch.bmm,都能实现对于batch的矩阵乘法: a = torch.rand((2,3,10))b = torch.rand((2,2,10))### ma ...

  10. [Python3网络爬虫开发实战] 3.1-使用urllib

    在Python 2中,有urllib和urllib2两个库来实现请求的发送.而在Python 3中,已经不存在urllib2这个库了,统一为urllib,其官方文档链接为:https://docs.p ...