Struts 2.0算是学完了,自己也总结了很多的内容,包括和Struts 1.x的比较等等,但是我个人并不觉得Strts 2.0如何的难学,李老师讲的时候也跟我们说,会了Struts 2.0就相当于连webwork也学习会了,不知道为什么非要将这两个内容分开,听说webwork的配置要比Struts 2.0 多一点,也许随着发展就剩下struts 2.0了吧,呵呵
四、Struts2.0标签
注意OGNL表达式的配合使用
1、设置属性s:set
功能与Struts1.2的bean:define相同
(1)复制属性
<%
request.setAttribute("mldn","lin");
%>
<s:set name="temp" value="#request.mldn"></s:set>
${temp }
|
注意#
value中需要使用OGNL表达式来取得属性范围中的属性值,如果属性值保存在4种属性范围中,需要通过 #范围名称.属性 来取得,如果要取得该属性下的某一个属性值,可以继续使用 “. ”的方式
(2)新建属性
<s:set name="temp1" value="'mumu'"></s:set>
${temp1 }
|
value中只能是基本数据类型:int、String等
s:set标签还有scope属性用来保存所设置或复制的属性的属性范围,如果不进行手工配置,默认保存在page范围内。
2、显示属性s:property
功能与bean:write类似,但不能格式化数据
<%
request.setAttribute("mldn","yan");
%>
<s:property value="#request.mldn" default="cly"/>
|
可以通过default设置该属性为null时的默认值,注意OGNL的使用
注意:当使用Struts2.0的Action中的getter 方法传递数据时,可以不加入#属性范围
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登陆成功页</title>
</head>
<body>
<br>
<a href="login!quit.action">退出登录</a>
<center>
<br>
欢迎<s:property value="userid"/>登陆成功!
</center>
</body>
</html>
|
3、格式化显示日期s:date
与bean:write中格式化日期的功能相同
<s:date name="user.birthday" format="yyyy年MM月dd日"/>
|
4、判断标签s:if…s:elseif…s:else
<s:if test="user == null">
为空
</s:if>
<s:elseif test="user.userid == 'MLDN'">
符合条件
</s:elseif>
<s:else>
不符合条件
</s:else>
|
在test中如果要使用非getter方法设置的属性,也需要OGNL语法的支持,如果不加引号,表示使用属性,加入’’表示按照字符串处理,test中的返回值必须为boolean
5、迭代s:iterator
(1)集合(元素为对象)
循环数组或集合数据
<s:iterator value="all">
${userid } -- ${age } -- ${birthday } <br>
</s:iterator>
|
在使用Struts2.0的迭代标签时,不需要使用id定义临时的属性,Struts2.0会将循环的pojo对象的所有属性保存在page范围内,可以直接通过属性名显示该属性(EL)
(2)集合(元素为基本数据类型)
当集合中保存的属性并不是一个pojo对象,而是一个基本类型时(String)
<s:iterator value="all">
<s:property/> <br>
</s:iterator>
|
这里可以使用s:property将集合中的内容直接显示出来。
(3)Map对象
如果使用的为Map类型
<!-- value表示要迭代的属性(OGNL) -->
<s:iterator value="all">
${key } -- ${value } <br>
</s:iterator>
|
(4)迭代索引
如果要完成单双行变色,在Struts1.2中使用indexId进行处理,在struts2中可以通过status进行处理
使用status可以通过以下属性取得数据:
status.index,取得索引号:从0开始
status.count:取得当前循环次数:从1开始
status.odd:判断当前是否为单数行,如果是,则返回true,否则返回false
status.even:判断是否为双数行
status.first:判断是否为循环的第一行
status.last:判断是否为循环的最后一行
<!-- value表示要迭代的属性(OGNL) -->
<s:iterator value="all" status="status">
<font color="${status.odd?"red":"green" }"> ${key } -- ${value }</font> <br>
</s:iterator>
|
五、Struts2.0国际化处理
Struts2.0中通过s:i18n和s:text来完成国际化功能
注意:
(1)一种语言得建立一个资源文件。
(2)页面信息的资源文件可以建立在src下,命名为***_语言名称_区域名称.properties
文件名可以自行定义,但这几个不同语言版本的资源文件的名称必须一致
范例:单个页面的国际化处理
说明:每个页面的国际化处理,涉及到拦截器
修改项目:LinStrutsTwoDemo的首页,采用国际化处理
1、建立不同语言的资源文件
这里就叫“message_en_US.properties”和“message_zh _CN.properties”,在src下
文件message_en_US.properties:
msg.index.page.title=Index
msg.index.page.userid=UserID
msg.index.page.password=Password
msg.index.page.submit=Login
msg.index.page.reset=Reset
msg.index.page.selectLanguage=Please select language
msg.index.page.chinese=Chinese
msg.index.page.english=English
|
文件message_zh _CN.properties:
msg.index.page.title=\u9996\u9875</span
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
struts2.0中文帮助手册,主要从原理方面简单阐述了struts2.0的一些特性。
对ibatis struts 2.0进行了详细介绍,以及对ibatis struts 2.0的整合,对ibatis操作数据库的新特性进行了介绍
整理了struts2.0的相关文档,包含了struts2.0的大多数特性,适合刚刚接触struts2.0的人群,让新手快速入门
Struts 2.0框架中出现的许多特性旨在让Struts更容易使用: · 改进的设计: 与Struts 1相比,Struts 2的所有类都基于接口,核心接口独立于HTTP。这些API并不依赖服务器小程序API。 · 简化的Action: Struts 2 Action...
这是struts2.0的中文教程文档,详细介绍了struts2.0的新特性,并有实例教授,便于理解,使用初学者尝试,也适用于高手技巧知识点查询
struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。...Struts 更是集 struts1 的优点的同时,展现了更多特性,欢迎更多的喜欢学习的 童鞋们,一同学习。
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用、以及Ajax等Web2.0新特性。在教程的...
JSP宝典PDF电子版下载,JSP宝典全书比较全面地介绍了有关JSP的相关知识,并通过大量实例,循序渐进地教会读者如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用、以及Ajax等Web2.0新特性。在教程的...
拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的...
由于使用范围广也使它们的版本更替非常之快,尤其是Java5推出以后这些项目都采用了Java5中的特性来重新实现并增加了很多新特性。以国内使用最广泛的Struts为例,其新版本Struts2与前一版Struts1.x已经有了天壤之别。...
例如,你可以利用控制反转容器在前台的展现层使用Struts,还可以只使用 Hibernate集成编码 或是 JDBC抽象层 去处理数据存储。Spring被设计成(并将继续保持)无侵入性的方式,意味着应用几乎不需要对框架进行依赖...
本书比较全面地介绍了有关JSP的相关知识,并通过大量实例循序渐进地阐明如何构架和开发JSP动态网站、自定义标签开发和标准标签库JSTL使用以及Ajax等Web2.0新特性。 本书首先介绍了JSP的概念和特征,使读者对JSP先...
06 开源框架 Struts 1.x --> AJAX --> ECSide报表组件 --> Hibernate --> Spring --> Struts 2.0 --> AJAX框架(DWR、JSON、JQuery) 07 XML 基础语法 --> 解析(DOM/SAX/JDOM) 08 分布式开发 RMI --> EJB 3.0 --> ...
JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言; Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性; Velocity,严格来说不是...
例如,你可以利用控制反转容器在前台的展现层使用Struts,还可以只使用 Hibernate集成编码 或是 JDBC抽象层 去处理数据存储。Spring被设计成(并将继续保持)无侵入性的方式,意味着应用几乎不需要对框架进行依赖...
ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,...
2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...
例如,你可以利用控制反转容器在前台的展现层使用Struts,还可以只使用 Hibernate集成编码 或是 JDBC抽象层 去处理数据存储。Spring被设计成(并将继续保持)无侵入性的方式,意味着应用几乎不需要对框架进行依赖...