`
yyzhpq
  • 浏览: 289147 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JSP教程(五)-JSP Actions的使用下

    博客分类:
  • jsp
阅读更多
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
<HTML>
<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

  b>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。这些属性总结如下:

  属性

  用法

id
  给一个变量命名,此变量将指向bean。如果发现存在一个具有相同的id和scope 的bean则使用之而不新建一个。

class
  指出bean的完整的包名。

scope
  指明bean在之上可以被使用的前后关系。有四个可能的值:page,request,session,和application。缺省为page,表明bean仅在当前页可用(保存在当前的PageContext中)。request的一个值表明bean仅用于当前客户端的请求(保存在ServletRequest对象中)。Session的值指出在当前的HttpSession的生命周期内,对象对所有的页面可用。 最后,application的值指出对象对所有共享ServletsContext的页面可以使用。使用jsp:useBean 仅在没有相同的id和scope 的bean时创建一个新的bean,如果已有则使用之,并忽略以jsp:useBean标志开始和结尾的代码。

type
  指明将指向对象的变量的类型。这必须与类名相匹配或是一个超类或者是一个实现类的接口。记住,变量的名由id属性来指定。

beanName
  赋予bean一个名字,您应该在Beans的实例化方法中提供。它允许您给出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的可用的属性:

  属性

  用法

name
  这是一个必选属性。它指出哪一个bean的属性将被设置。jsp:usebean必须出现在jsp:setProperty之前。

property
  这是一个必选属性。表明您将设置哪一个属性。然而,有一个特殊的情况:如果以"*"为值意味着,所有的名称与bean的属性匹配的request参数都将被传递到相应的属性设置方法。
value
  这是一个可选属性。它指定被设置的属性的值。字符串的值通过相应的对象或包的标准的valueOf方法将自动的转换为numbers,boolean,Boolean,byte,Byte,char,和Character。例如,boolean或Boolean属性的值“true”将通过Boolean.valueOf方法转化,而,一个int或Integer属性的值“42”将通过Integer.valueOf转化。您不能同时使用value和param属性,但,两个都不用是允许的。

param
  这是一个可选属性。它指明了bean的属性应该继承的request的参数。如果当前的request没有这样的一个参数,就什麽也不做:系统并不将null传给设置属性的方法。因此,您可以使用bean的缺省值。例如下面的这段程序执行“将numberOfItems属性设置为任意numItems request参数的值,如果有这样的一个request参数,否则什么也不做。”

<jsp:setProperty name="orderBean"
property="numberOfItems"
param="numItems" />

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

  四、jsp:getProperty Action

  语法:

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

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

分享到:
评论

相关推荐

    JSP教程(四)-JSP Actions的使用

    JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML。可以使用的action 有:(1) jsp:include –在页面被请求时包含进一个文件。(2) jsp:useBean–找到或...

    JSP应用技巧及心得---数据库的链接

    一、 JSP入门初级教程之预定义变量的使用  JSP入门初级教程之Actions的使用 JSP入门初级教程之Taglib Directiv 2

    os-users-actions:审核用户操作Saiku Pentaho Bi服务器

    os-users-actions 审核用户操作Saiku Pentaho Bi服务器 ##临时说明1.停止BI服务器 2.在bi-server / tomcat / webapps中部署os-user-actions.war 3.将plugin / os-users-actions放入bi-server / pentaho-solution /...

    windchill_jsp_actions

    博文链接:https://jeans.iteye.com/blog/203754

    JSP几个应用实例

    这是本人自己做的JSP小实例,和大家分享一下!!都是很基本的东西。。。

    windchill_jsp_actions.zip_Action!_windchill

    告诉大家, 在PTC开发时怎样客制化一个 action

    Struts2 Convention Plugin中文文档 Annotion

    • 命名习惯制定结果(支持JSP,FreeMarker等)路径 • 类名到URL的约定转换 • 包名到命名空间(namespace)的约定转换 • 遵循SEO规范的链接地址(即:使用my-action 来替代 MyAction) • 基于注解的Action名 • ...

    外文翻译 stus MVC

    The ActionMapping contains the knowledge of how a specific event maps to specific Actions. The ActionServlet (Command) passes the ActionMapping to the Action class via the perform() method. This ...

    struts2注解详细说明

    • 包命名习惯来指定Action位置• 命名习惯制定结果(支持JSP,FreeMarker等)路径• 类名到URL的约定转换• 包名到命名空间(namespace)的约定转换• 遵循SEO规范的链接地址(即:使用my-action 来替代 ...

    分页 servlet

    &lt;td colspan="3"&gt;Actions ${entryList}" var="entry"&gt; ${entry.entryID} ${entry.title} &lt;td&gt;&lt;a href="viewEntry?entryID=${entry.entryID}"&gt;View&lt;/a&gt;&lt;/td&gt; &lt;td&gt;&lt;a href="editEntry...

    IBM WebSphere Portal门户开发笔记01

    10、Creating the workflow actions 195 11、Creating workflow stages 195 12、Creating the Express Workflow 195 13、Creating the Authoring Templates 196 (1)Creating the General Authoring Template 196 ...

    jpivot学习总结.doc

    1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用当中你需要下面的这些文件: ...一个jsp文件(fee.jsp),使用jpivot的标签(jp:mondrianQuery),写入多维查询表达式。 2.1. 数据库连接  直接用jdbc ...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    Eclipse里配置Tomcat

    在Commands标签页中选中Lomboz Actions; 11.选择 Window &gt; Preference &gt; Workbench &gt; Label Decorations,选中Lomboz J2EE Decorators,确认之后,面板中应该会出现新的按钮以及新建项目向导中可以快速的新建Lomboz...

    网络架构师148讲视频课程

    java架构师148讲视频教程 │ ├─1-148视频教程 │ 第01节:整体课程概览.flv │ 第02节:分模块、分工程管理.avi │ 第03节:多模块多Web应用合并War包.avi │ 第04节:Git基本原理和安装配置使用.avi │ 第05节...

    深入浅出struts2

    XWork是一个通用的命令框架,它提供了很多核心的功能,例如actions,验证和拦截器,它可以完全独立于执行上下文运行,并提供了一个内部的依赖注入机制,用来做配置和工厂实现的管理。 而WebWork则是一个完全独立的上...

    JavaEE 5.0 Tutorial.pdf

    Sun 官方 J2ee 5.0 教程 The Java EE 5Tutorial For Sun Java System Application Server 9.1 Contents Preface ..................................................................................................

Global site tag (gtag.js) - Google Analytics