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.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操作的更多相关文章
- jsp操作MySQL时报错:Operation not allowed after ResultSet closed
一个stmt对多个rs进行操作引起的ResultSet关闭的错误 解决办法:创建新的stmt,一个rs对应一个stmt
- button上传替换file上传按钮,并显示图片缩略图,纯jsp操作
1.jsp代码 <div class="inputBox"> <span id="tu" <c:if test="${pd = ...
- jsp操作xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 说明是xml文件,文件的版本和字符编码 --> ...
- jsp操作mysql样例
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- jsp操作javabean
一:介绍 javabean: java语言编写的一个可重用的组件. 狭义上来说就是我们编写的一个普通的java类,例如:User... javabean规范: 1.必须是一个公共具体的类:public ...
- java的JSP技术
java的JSP技术 [toc] 1.JSP简介 Jsp技术是用来开发java web的页面显示的,所有MVC模型里面的视图层,所以视图层的开发 jsp不是编程语言,三个英文是java server ...
- Servlet,jsp,JSP技术 ,JSP编程
一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...
- Java遇见HTML——JSP篇之JSP基础语法
一.JSP简介 JSP全名为Java Server Pages,Java服务器端页面,其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.Jsp是一种动态网页技术标准,是在服务 ...
- JSP 标准标签库(JSTL)(JSP Standard Tag Library)
[1] JSTL简介 > JSTL是JSP的标准标签库 > JSTL为我们提供了一些常用的标签,供我们日常开发使用(if . if...else .遍历 . 日期格式化) ...
随机推荐
- flex弹性布局操练1
实现弹性布局之前常用浮动,相对定位和绝对定位等,但是现在好了,随着flex的兴起,方便了很多,而且也符合未来响应式布局的方向. 理论的东西可参考css3手册,这里专注实操. 一:单个元素 <di ...
- e.Row.RowType == DataControlRowType.DataRow详解(转)
代码语句如下: protected void OnRowCreate(object sender, GridViewRowEventArgs e) { if (e.Row.RowT ...
- ibatis 的sqlMap 的xml 关注点
1.当有特殊字符时候需要保持原状 eg:特殊字符 <> 错误:t.name<>' ' 会报The content of elements must consist of ...
- R in action读书笔记(20)第十五章 处理缺失数据的高级方法
处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...
- 拼图游戏源码-swift版项目源码
作者fanyinan,源码PuzzleProject,公司的项目中需要一个拼图游戏,之前有手动拼图和随机打乱的功能,近期又由于个(xian)人(zhe)爱(dan)好(teng)自己加入了自动拼图功能 ...
- Ghost Win10系统X64位和32位10041装机版下载
更多系统下载尽在系统妈:http://www.xitongma.com 特别说明: 1.C:盘分区须至少15GB(安装过程有大量的解压临时文件),安装完成后C:盘占用10GB左右! 2.安装之后如有硬 ...
- 华硕笔记本无法设置U盘启动,快捷启动不能识别
最近有不少华硕笔记本用户朋友在使用U大侠装系统时,不管是使用快捷键启动还是BIOS查看,都没有发现U盘启动项,这该怎么办呢? 不要急,既然找不到启动项,那就从设置启动项来解决不就可以了. 第一种方 ...
- Java核心技术卷1 第三章
1. Java区分大小写,下一段源代码中,关键字public称为访问修饰符,用于控制程序的其他部分对于这段代码的访问级别,关键字class表明Java程序中的全部内容都包含在类里面. 标准的类名命名规 ...
- Linux内核0.11体系结构 ——《Linux内核完全注释》笔记打卡
0 总体介绍 一个完整的操作系统主要由4部分组成:硬件.操作系统内核.操作系统服务和用户应用程序,如图0.1所示.操作系统内核程序主要用于对硬件资源的抽象和访问调度. 图0.1 操作系统组成部分 内核 ...
- linux ping-测试主机之间网络的连通性
博主推荐:更多网络测试相关命令关注 网络测试 收藏linux命令大全 ping命令用来测试主机之间网络的连通性.执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问 ...