`

struts 2.1.6表达式解析

阅读更多
     无论在哪一个Web应用框架中,提供从程序中解析数据到显示页面中的表达式都是很重要的,各个框架也都对其做了很多努力!这里提到的struts2.x系列框架更是如此,提供了功能很强大的标签,可以使得我们方便的再Jsp页面中显示我们需要的信息。
      下面就我在暑期做的一个实际项目中用到的具体标签详细的解释。
    在struts中把标签分为五类分别是:控制标签,数据存取标签,与表单相关标签以及AJAX标签。
    首先介绍一下控制标签。
    顾名思义:这种标签的意思就是提供了控制JSP中程序代码的执行流程的方式。
    比如:很多网站都有这一功能:同一个页面,如果浏览者已经注册并登陆,在右上角会显示欢迎浏览者的信息,相反如果还没有登陆的浏览者则会看到:"对不起你还没有登录,请登录或注册!"这样的信息。其实这种效果的实现方式很简单,就是利用了控制标签中的<s:if test="%{true}"></s:if>这个标签;如果test属性值中的表达式结果为TRUE时就执行其里面的内容,否则的话转去执行<s:else></s:else>中的内容。下面是一个具体的实例:
如果用户已经成功登陆的话它的会员信息会保存到Session中,名称为"member",下面的代码会判断其是否成功登陆,并更具判断结果执行不同的代码段。

<s:if test="%{#session.member!=null}">
欢迎 ${member.name} 的到来! <a href="/blog/myblog.jsp">我的博客</a>
</s:if>
<s:else>
请先登录或<a href="/OnGoing/login/register.jsp">注册</a>
</s:else>
</div>
还有一个很是常用的控制标签是:<s:iterator value=""><s:/iterator>它的作用是对通过value指定的List值进行迭代!这里要注意value中的值必须是ONGL表达式或者是一个具体的list;比如valu
下面给个具体的例子说明一下其用法:
我现在有个Action属性为一个领域对象:topicbloginfo,其field:name,times,date,leftwdtotales,replytotales分别表示:文章名字,浏览次数,发表日期,留言数量以及回复数量。在通过对应的Action为其赋值后,在随后的结果页面中将其像是出来:比如
<s:iterator value="%{topicbloginfo}">(外面的那个括号可以省略,它只是说明里面是一个ONGL表达式,但是实际应用中我把它去掉一样正常)
<s:property value="name"/>
<s:property value="times"/>
<s:property value="date"/>
<s:property value="leftwdtotales"/>
<s:property value="replytotales"/><br>
</s:iterator>
这个标签很是实用它不仅可以按属性显示值,还可以显示一个list对象中的各个值而不必显示的指明属性名字比如:
有一个嵌套的list数据类型:Dlist,其里面存放的是一个有很多值组层的又一个List类型。我们利用上述标签可以这样解析:
<s:iterator value="Dlist">
<s:property>
</s:itertor>
这样的话它会自动把里面List中的各个数据都显示出来!
    接着我们介绍一下数据存取标签:
    同样顾名思义就是对Action中的各个属性进行解析或者是设置。
    下面是全部的属于该类的标签:
a
action
bean
date
debug
i18n
include
param
property
push
set
text
url
其中本人在项目中使用了action,param,
property以及url 标签。现对他们分别做一下介绍:
action 标签是一个很不错的选择,特别是某一个页面中的数据信息量很大,同时需要几个Action返回的结果的时候。
它在作为一个独立的Action功能的同时还可以有选择的将其结果(包括视图)包含在一个JSP页面中;它还有几个属性我们可以灵活的设置使得它的应用更加灵活!
<div id="forum"><s:action name="showtopic" executeResult="false" namespace="/frontPage">
<s:param name="ID" value="%{'1'}"/>
</s:action>
</div>
name 表示你要调用的action名字;executeResult表示你是否将其视图结果返回;namespace表示你所调用的action所在的包名;另外需要注意的是如果你要在包含它的JSP页面中解析这个action的属性的话则必须在其标签内部。
接着就是<s:url></s:url>和<s:param>标签,之所以将它们写在一块是因为它们总是在一起工作,效果更加强大!所谓男女搭配,干活不累!
<s:url id="test" value="/frontPage/showtopic.action"><s:param name="ID" value="%{'1'}"/></s:url>
<s:param>标签中的name属性表示的是Action中的属性,而其值则通过ONGL表达式来指定。
其实它就是Struts中的<a:href="showtopic.action?ID=3"></a>的翻版!不过需要注意的是请求参数赋值的范围不一样啊,前者是赋值到ValueStack中,而后者只是赋值到request中。
这个标签同时还可以去其他标签联用看上去更加舒畅:比如:
<s:url id="test" value="/frontPage/showtopic.action"><s:param name="ID" value="%{'1'}"/></s:url>
<s:action name="%{#test}" executeResult="false" namespace="/frontPage"></s:action>
还有:
<s:action name="showtopic" executeResult="false" namespace="/frontPage">
<img id="indicator" src="${pageContext.request.contextPath}/images/1.jpg" style="display:none"/>
<sx:div href="%{#test}" indicator="indicator" id="forum">
<s:param name="ID" value="%{'1'}"/>
  Initial Content
</sx:div>(下面会说,这是个ajax标签)
<s:property/>这个标签就不用说啦我们一直都在用它!
   说完了上述两种标签是不是觉得struts 2.x标签相比struts 1.x有很大的提高!不过下面这几种更让你激动!
   全部的表单标签:
checkbox
checkboxlist
combobox
doubleselect
head
file
form
hidden
label
optiontransferselect
optgroup
password
radio
reset
select
submit
textarea
textfield
token
updownselect
我在项目中用到了以下标签:file,hidden ,password,select ,radio,textarea,textfield ;
现对它们中的几种进行说明:
hidden这个标签作为两个Action之间信息传递的一种方式还是很方便的,
比如你有个需求:注册用户在自己的博客可以发表自己的文章,这样的话,你就可以在你的发表文章对应的表单中加入下面这一句:
<s:hidden name="topicblog.memberId" value="%{#session.member.id}" />,这样的话该用户ID会随着表单一起复制到topicblog.memberId属性是不是很方便?
你还可以利用这个值来获取上一个Action的属性值。
<s:select>这个标签很复杂但功能也很强大!它不仅可以显示你给它指定的一系列值,还可以显示特定Action中的List属性以及Map属性;下面是一个显示特定List类型数据的实例。
<s:select label="请选择文章分类"
       name="topicblog.cateTopicId"
       list="catetopic"
       listKey="id"
       listValue="name"
       required="true"
       
/>
name表示listKey对应的属性值赋值到得下一个Action属性名;list表示从上一个Action中获取的List类型的属性值;listvalue表示显示在下拉列表中的值;listkey与listvalue是一一对应的,这里的catetopic是一个List,里面包含的是一个对象,有id,name等属性。
当然你也可以直接自己指定所要显示的值:比如:
指定Map类型的数据:
<s:select label="Months"
       name="months"
       headerKey="-1" headerValue="Select Month"
       list="#{'01':'Jan', '02':'Feb', [...]}"
       listKey="key"
       listValue="value"
       required="true"
/>
这时的listkey和listvalue和上面的就不一样!这个显示的值是map中的值,传递的是对应值的键值!
关于file标签我将会在另一篇文章中讲述;其他的就没有什么啦。
   最后关于Ajax标签正在学习中,以后再续!
  struts中的标签灵活度越来越大,希望对于标签的使用有任何心得的话欢迎贴出来大家共享!
分享到:
评论

相关推荐

    struts2.1.6lib

    以上这些类库共同构成了Struts2.1.6的核心框架,它们协同工作,使得开发者能够高效地开发Web应用,同时通过丰富的插件系统和强大的OGNL表达式语言,使得Struts2具备了高度的灵活性和可扩展性。在实际项目中,开发者...

    Struts2.1.6 jar包

    Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建和维护可扩展、易于维护的企业级应用。Struts2以其模型-视图-控制器(MVC)架构为核心,为开发者提供了一种结构...

    Struts 2.1.6 src 源码

    5. **OGNL(Object-Graph Navigation Language)**:Struts 2使用OGNL作为表达式语言,用于在Action和视图之间传递数据。源码中,会看到OGNL的解析和评估机制,这对于理解数据绑定和动态方法调用至关重要。 6. **...

    struts2.1.6的jar包

    使用Struts2.1.6时,开发者需要根据项目需求选择合适的jar包和插件,并结合Struts2的配置文件(通常为struts.xml)进行应用的搭建和定制。此外,Struts2的安全性也是需要注意的一点,比如它曾出现过一个著名的远程...

    Struts2.1.6jar包

    - ognl.jar:OGNL库,用于对象属性的访问和表达式解析。 - freemarker.jar:FreeMarker模板引擎,用于生成动态视图。 - xwork-core.jar:XWork框架的基础组件,Struts2在其上构建。 - commons-fileupload.jar:文件...

    struts2.1.6的6个jar

    Struts2.1.6是Apache Struts框架的一个版本,它是基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。这个版本包含了六个核心的JAR文件,这些文件是Struts2框架运行所必需的。下面将详细解释这六...

    struts2.1.6apps

    Struts2.1.6是Apache软件基金会的开源框架Struts2的一个版本,它基于Model-View-Controller(MVC)设计模式,主要用于构建Java Web应用程序。这个版本的发布为开发者提供了一系列示例应用,帮助他们更好地理解和学习...

    struts2.1.6 所必须的6个jar包

    这些JAR文件共同构成了Struts2.1.6的基础结构,确保了框架的稳定运行和功能实现。在开发基于Struts2的Web应用时,正确导入这些依赖库是至关重要的。开发者需要理解每个库的功能,以便更好地利用Struts2提供的强大...

    struts2.1.6src

    Struts2.1.6源码分析 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它以其强大的功能、灵活性和可扩展性,在Java社区中广泛使用。Struts2.1.6是该框架的一个特定版本,包含了自...

    Ext+struts2.1.6+spring2+hibernate3的jar包

    标题中的"Ext+struts2.1.6+spring2+hibernate3的jar包"指的是一个集成开发环境,其中包含了一些关键的Java库,用于构建基于Web的应用程序。这个压缩包集成了四个主要的技术框架:Struts 2.1.6、Spring 2.x、...

    struts-2.1.6.lib.rar

    1. **Struts2 Core**:struts2-core.jar 文件是Struts 2框架的核心组件,包含了Action、Result、Interceptor等核心接口和实现,以及配置解析、插件管理等功能。 2. **OGNL (Object-Graph Navigation Language)**:...

    struts2版本 2.1.6 必须的jar包 和 web.xml 文件的修改

    5. **ognl.jar** - 对象-图形导航语言,Struts2中用于表达式语言和数据绑定。 6. **freemarker.jar** - 支持FreeMarker模板引擎,用于生成动态HTML或其他格式的输出。 7. **struts2-json-plugin.jar** - 提供JSON...

    使用Struts2必须配备的Jar包.txt

    - **注意**:Struts2.1.6及以上版本对文件上传的支持有所增强,因此建议使用较新版本的commons-fileupload。 ### 兼容性问题 - **版本差异**:Struts2.1.6与Struts2.0.14相比,有一些API的变化,如`RequestContext...

    struts2-core-2.1.8.1 xwork-core-2.1.6源码

    6. **OGNL表达式语言(OGNL)**:Struts2使用OGNL作为默认的表达式语言,用于在Action和视图之间传递数据。`ognl`包中的类和接口实现了OGNL的解析和执行。 7. **异常处理(Exception Handling)**:在`struts2-core...

    xwork-core-2.1.6.jar

    《深入解析xwork-core-2.1.6:核心组件与源码剖析》 xwork-core-2.1.6是Struts2框架的核心库,它为基于Action的MVC设计模式提供了强大的支持。这个版本的发布对于理解Struts2的工作机制至关重要。本文将深入探讨...

    struts2 源代码

    - **ognl**:OGNL(Object-Graph Navigation Language)是Struts2中用于表达式语言的库,用于在Action和视图之间传递数据。 - **freemarker**:Struts2默认使用FreeMarker作为视图模板引擎,解析并生成HTML页面。 ...

    Jave EE (struts2类库 )

    在Struts2中,ANTLR可能用于解析配置文件或构建表达式语言的解析器。 5. **OGNL (Object-Graph Navigation Language)**: `ognl-2.7.3.jar` 是一个强大的表达式语言,用于获取和设置对象属性。在Struts2中,OGNL是...

    最新Struts2 jar 架包

    xwork-core-2.1.6.jar Command模式框架,WebWork和Struts2都基于xworkcommons-logging-1.0.4.jar Java日志工具类包 freemarker-2.3.15.jar 表现层框架,定义了struts2的可视组件主题 ognl-2.7.3.jar OGNL表达式语言...

Global site tag (gtag.js) - Google Analytics