分享
 
 
 

JSP入门初级教程之Actions的使用

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML。可以使用的action 有:

(1) jsp:include --在页面被请求时包含进一个文件。

(2) jsp:useBean--找到或实例化一个JavaBean。

(3) jsp:setProperty--设置一个JavaBean属性。

(4) jsp:getProperty--将JavaBean的属性插入到输出。

(5) jsp:forward--让请求者可以向前到一个新的页面。

(6) jsp:plugin--用OBJECT或EMBED标签为Java plugins生成特定的浏览器的代码。

1、jsp:include Action

这个action使您可以在即将生成的页面上包含进一些文件:

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

与include directive不同,这个action是在页面被请求时才将文件包含进来,而,include directive则是在JSP页面被转换为servlet时包含文件。为了提高效率,include action做了一点小小的牺牲,即,它不允许被包含的页面含有一般的JSP代码(例如,不可设置HTTP头),但是,它具有显著的灵活性,如下面的JSP 代码,它实现将四个不同的片段插入如下的页面。每一次当标题改变的时候,您仅需修改这四个文件而无须更改主要的JSP 页面。

WhatsNew.jsp

<HTML>

<HEAD>

<TITLE> JSP教程</TITLE>

<BODY >

<CENTER>

<TABLE BORDER=5 BGCOLOR="#EF8429">

<TR><TH CLASS="TITLE"> What"s New at Chinese comic sites</TABLE>

</CENTER>

<P>

Here is a summary of our four most recent news stories:

<OL>

<LI><jsp:include page="news/Item1.html" flush="true"/>

<LI><jsp:include page="news/Item2.html" flush="true"/>

<LI><jsp:include page="news/Item3.html" flush="true"/>

<LI><jsp:include page="news/Item4.html" flush="true"/>

</OL>

</BODY>

</HTML>

当然您可以定义自己? ML文件,但有一点请注意:

您应该将文件放到您的JSP目录下的news目录内。

jsp:useBean Action 的使用

一、 语法:

<jsp:useBean

id="beanInstanceName"

scope="page|request|session|application"

{ class="package.class" |

type="package.class" |

class="package.class" type="package.class" |

beanName="{package.class | <%= expression %>}" type="package.class"

}

{ /> |

> 其他元素

</jsp:useBean>

}

这个action使您能将一个JavaBean装入一个JSP页面。这是一个非常有用的能力,因为它使您可以使用可重用的JAVA类而不需牺牲性能。最简单的语法用于指定一个bean:

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

这通常意味着“实例化一个类的对象通过指定一个类,并将之与一个通过id指定名称的变量绑定”。然而,就象我们看到的,您可以指定一个scope属性来使得bean不仅仅与当前的页面相联系。在这种情形下,得到一个对已存在的bean的引用是非常有用的,而且,仅当没有相同的id和scope的bean存在时才创建一个新的。现在,您已有了bean,您可以通过jsp:setProperty来修改它,或者,通过使用之前用id指定的名字来使用scriptlet或明确的调用方法。当您说“这个bean有一个称为foo的X类型的属性”,您真正的意思是“这个类有一个称为getFoo的方法,它返回X类型的某类值,还有另一个方法称为setFoo,它以X为参数。”这jsp:setProperty action 将在下一单元详细的介绍,但是现在您既可以给出一个明确的值,给出一个属性来说明此值是从request的参数继承而来,也可以仅仅列出属性来标志此值应该从与属性名同名的参数继承而来。您可以通过调用适用的getXxx方法,或更普遍的,使用jsp:getProperty action,来得到已存在的JSP表达式或scriptlet属性。

请注意,为bean指定的类必须在服务器的规则的类路径下,而不是用来保留当改变时自动装载的类的路径。例如,在Java Web Server上,它和它所用的类必须到类的目录或在lib目录下的一个jar文件内,而不是在servlets的目录下。

下面让我们来看一个非常简单的例子,它装载一个bean并且设置/得到一个简单的串参数。

BeanTest.jsp

<HEAD>

<TITLE>Reusing JavaBeans in JSP</TITLE>

</HEAD>

<BODY>

<CENTER>

<TABLE BORDER=5>

<TR><TH CLASS="TITLE">

Reusing JavaBeans in JSP</TABLE>

</CENTER>

<P>

<jsp:useBean id="test" class="hall.SimpleBean" />

<jsp:setProperty name="test"

property="message"

value="Hello WWW" />

<H1>Message: <I>

<jsp:getProperty name="test" property="message" />

</I></H1>

</BODY>

SimpleBean.java

以下是bean的原代码:

package hall;

public class SimpleBean {

private String message = "No message specified";

public String getMessage() {

return(message);

}

public void setMessage(String message) {

this.message = message;

}

}

运行结果为:页面输出: Reusing JavaBeans in JSP

Message:Hello WWW

二、jsp:useBean 的详细用法

最简单的使用bean的方式是:

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

为了装载bean,需要用jsp:setProperty和 jsp:getProperty来修改和检索bean的属性。且,还有两种别的选项。首先,您可以使用容器的格式,也就是:

<jsp:useBean ...>

Body

</jsp:useBean>

要指出的是,Body部分应该仅在bean第一次实例化时被执行,而不是在每次被找到和使用时。Beans能够被共享,因此,并不是所有的jsp:useBean 陈述都产生一个新的bean的实例。其次,除了id 或class以外,还有三种属性您可以使用:scope,type,和beanName。这些属性总结如下:

三、jsp:setProperty Action

语法:

<jsp:setProperty

name="beanInstanceName"

{

property="*" | property="propertyName" [ param="parameterName" ] | property="propertyName" value="{string | <%= expression %>}"

}

/>

在前面我们就知道了可以使用 jsp:setProperty 来为一个bean的属性赋值。您可以使用两种方式实现它。其一是,在jsp:useBean后(而不是在之内)使用jsp:setProperty:

<jsp:useBean id="myName" ... />

...

<jsp:setProperty name="myName"

property="someProperty" ... />

在这种方式中,jsp:setProperty 将被执行无论是否已有一个具有相同的id和scope的bean存在。另一种方式是,jsp:setProperty出现在jsp:useBean 元素内,如:

<jsp:useBean id="myName" ... >

...

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

</jsp:useBean>

此种情况下,jsp:setProperty仅在新的对象被实例化时才执行。

以下是四种jsp:setProperty的可用的属性:

如果您将value和param同时缺省,这和您将param的名称设为bean的属性名相同一样。您可以通过将name的值设置为”*”和省略value和param来自动的使用与bean的属性相应的request的属性。在这种情况下,服务器将反复的查找可用的属性和request参数来匹配具有相同名字的。

四、jsp:getProperty Action

语法:

<jsp:getProperty name="beanInstanceName" property="propertyName" />

这个属性检索出bean的属性的值并将之转化为一个字符串,然后将之插入到输出。它有两个必选属性:name,在之前用jsp:useBean引入的名称,property,必须被插入值的属性。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有