- 浏览: 103329 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Action
1. 实现一个Action的最常用方式:从ActionSupport继承
2. DMI动态方法调用 !
3. 通配符配置 * {1} {2} …
a) *_*
4. 接收参数的方法(一般用属性或者DomainModel来接收)
5. 简单参数验证addFieldError
a) 一般不使用Struts2的UI标签
6. 访问Web元素
a) Map类型
i. IoC
ii. 依赖Struts2
b) 原始类型
i. IoC
ii. 依赖Struts2
7. 包含文件配置
8. 默认action处理
1. 常用四种类型: a) dispatcher(默认) b) redirect c) chain d) redirectAction 2. 全局结果集 a) global-results | extends 3. 动态结果(了解) a) 在action中保存一个属性,存储具体的结果location 4. 传递参数 a) 客户端跳转才需要传递 b) ${}表达式(不是EL)Result
<li>访问值栈中的action的普通属性: username = <s:property value="username"/> </li>OGNL
<li>访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user[\"age\"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li>
<li>访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/></li>
<li>访问值栈中对象的普通方法:<s:property value="password.length()"/></li>
<li>访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" /></li>
<li>访问值栈中action的普通方法:<s:property value="m()" /></li>
<hr />
<li>访问静态方法:<s:property value="@com.bjsxt.struts2.ognl.S@s()"/></li>
<li>访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/></li>
<li>访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
<hr />
<li>访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User(8)"/></li>
<hr />
<li>访问List:<s:property value="users"/></li>
<li>访问List中某个元素:<s:property value="users[1]"/></li>
<li>访问List中元素某个属性的集合:<s:property value="users.{age}"/></li>
<li>访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/></li>
<li>访问Set:<s:property value="dogs"/></li>
<li>访问Set中某个元素:<s:property value="dogs[1]"/></li>
<li>访问Map:<s:property value="dogMap"/></li>
<li>访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/></li>
<li>访问Map中所有的key:<s:property value="dogMap.keys"/></li>
<li>访问Map中所有的value:<s:property value="dogMap.values"/></li>
<li>访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> </li>
<hr />
<li>投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li>
<li>投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}.{age}"/></li>
<li>投影:<s:property value="users.{$#this.age>1}.{age} == null"/></li>
<hr />
<li>[]:<s:property value="[0].username"/></li>
Struts-Tags
1. 通用标签:
a) property
b) set
i. 默认为action scope,会将值放入request和ActionContext中
ii. page、request、session、application
c) bean
d) include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)
e) param
f) debug
2. 控制标签
a) if elseif else
b) iterator
i. collections map enumeration iterator array
c) subset
3. UI标签
a) theme
i. simple xhtml(默认) css_xhtml ajax
4. AJAX标签
a) 补充
5. $ # %的区别
a) $用于i18n和struts配置文件
b) #取得ActionContext的值
c) %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用
i. 参考<s:property 和 <s:include
声明式异常处理
1. 在Actoin中进行异常映射
2. 在package中进行全局异常映射
3. 使用继承共用异常映射
4. Struts2中异常处理由拦截器实现(观察struts-default.xml)
a) 实际上Struts2的大多数功能都由拦截器实现
I18N
1. I18N原理
a) ResourceBundle和Locale的概念
b) 资源文件
c) native2ascii
2. Struts的资源文件
a) Action – Package – App级
b) 一般只用APP
i. struts.xml custom.i18n
c) PropertiesEditor插件
i. 解压
ii. features plugin 覆盖到myeclipse中的eclipse目录里
d) 动态语言切换
i. request_locale=en_US
Struts拦截器以及源码解析
1. Struts架构图
a) 见文档
2. Struts执行过程分析
3. Interceptor拦截器过程模拟
4. 定义自己的拦截器
a) acegi – spring security
5. 使用token拦截器控制重复提交(很少用)
6. 类型转换
a) 默认转换
i. 日期处理
b) 写自己的转换器:
public class MyPointConverter extends DefaultTypeConverter{
@Override
public Object convertValue(Object value, Class toType) {
if(toType == Point.class) {
Point p = new Point();
String[] strs = (String[])value;
String[] xy = strs[0].split(",");
p.x = Integer.parseInt(xy[0]);
p.y = Integer.parseInt(xy[1]);
return p;
}
if(toType == String.class) {
return value.toString();
}
return super.convertValue(value, toType);
}
}
public class MyPointConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
Point p = new Point();
String[] strs = (String[])values;
String[] xy = strs[0].split(",");
p.x = Integer.parseInt(xy[0]);
p.y = Integer.parseInt(xy[1]);
return p;
}
@Override
public String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
return o.toString();
}
}
c) 三种注册方式:
i. 局部:XXXAction-conversion.properties
1. p(属性名称) = converter
ii. 全局:xwork-conversion.properties
1. com.xxx.XXX(类名)= converter
iii. Annotation
d) 如果遇到非常麻烦的映射转换
i. request.setAttribute();
ii. session
发表评论
文章已被作者锁定,不允许评论。
-
spring struts 整合
2010-11-13 11:53 984Spring Struts1.x 整合 使用Spri ... -
i18n
2010-05-10 23:31 890to appoint resource base name d ... -
Action method validate
2010-05-09 23:52 930Validate by Manual Programming ... -
File upload
2010-05-09 22:18 883Single file upload: 1: referenc ... -
Access web context
2010-05-09 17:04 571mode 1 : ActionContext context ... -
Type convertor
2010-05-09 16:51 691actionName.conversion.propertie ... -
Constants used commonly
2010-05-09 09:29 787struts.i18n.encoding : UTF-8 st ... -
Request suffix
2010-05-09 09:11 606Configuration: <consta ... -
Searching path of action
2010-05-09 08:37 746Progressively decreasing accord ... -
Result Type classification
2010-05-09 08:24 761use commonly: 1: dispatcher 2 ...
相关推荐
Lotus Notes是一款强大的企业级协作应用软件,而SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。在标题和描述中提到的“Notes SQL 8.5.1”是IBM提供的一款工具,它允许开发者通过ODBC...
### Notes 8.5 新功能详解 #### 一、读信更智能 在Notes 8.5中,读取电子邮件变得更加智能化。用户可以通过多种方式快速识别和管理邮件,提高工作效率。 **具体功能介绍:** - **按颜色区分发件人**:通过设置...
在Lotus Notes(通常简称Notes)中,定时发送邮件是一项非常实用的功能,它允许用户预先设定邮件内容,并在特定的时间自动发送,无需手动操作。这个功能对于那些需要定期报告、提醒或者通知的情况非常有用。以下将...
"2024 notes"通常指的是针对2024年CFA考试的复习笔记或教材,这些材料通常由知名培训机构如Schweser等提供,精炼了官方学习材料,并加入了解题技巧和重点解析。SchweserNotes是CFA备考中广受欢迎的一套辅助资料,它...
在不包含Sticky Notes 便签的操作系统中手动安装Sticky Notes 便签,windows server2016测试通过;包含x86及x64; 方法:1、新建 C:\Program Files\Sticky Notes 2、拷贝 en-US、slc.dll、StickyNotes.exe 至 C:\...
IBM LotusNotes是一款强大的企业级协同应用软件,它集成了电子邮件、日历、任务管理、文档共享、数据库等多种功能。在LotusNotes系统中,开发者可以利用其提供的API进行应用程序的开发,实现定制化的业务需求。这里...
Goodnotes手帐模版万年历是一款专为Goodnotes和Notability用户设计的资源,旨在提升用户的记事体验。这款模版集合包含了652页丰富的设计,覆盖了多种风格和用途,旨在帮助用户更好地规划日常生活、工作计划或是个人...
### 如何改变LotusNotes工作区字体的大小 在日常工作中,我们经常需要根据个人习惯或视觉需求调整软件界面中的字体大小。对于使用LotusNotes的用户来说,更改工作区内的字体大小同样是一项实用的功能。本文将详细...
在IT环境中,Notes和Internet口令的同步是一项关键的配置,确保用户在使用Notes客户端和Web服务时能够方便地管理他们的登录凭证。以下是关于这个主题的详细解释: 首先,要实现Notes和Internet口令的同步,需要创建...
Lotus Notes,作为一款历史悠久且功能强大的邮件客户端,提供了自定义信头的方法,让用户的邮件更具特色。本文将详细介绍如何在Lotus Notes中定制专属的信头。 ### 一、理解Lotus Notes信头概念 在Lotus Notes中,...
在IT领域,Notes客户端是IBM Lotus Domino软件的一部分,用于访问和管理电子邮件、日历、任务和其他协作工具。当首次设置Notes客户端时,一个重要的步骤是配置端口,以便正确连接到服务器。本文将深入探讨Notes...
2024年的FRM一级考试对于考生来说是一项重要的挑战,而Schweser Notes作为备考的重要参考资料,其更新版本的免费下载无疑为考生提供了宝贵的资源。 FRM一级考试主要涵盖金融市场与产品、定量分析、风险管理基础、...
### IBM Notes R9标准客户机用户使用手册关键知识点解析 #### 1. IBM Notes 9.0.1 简介 - **产品概述**:IBM Notes 9.0.1 客户端是一款功能全面的协作软件,适用于 Windows 和 Macintosh 平台。它允许用户高效地...
这次提供的免费下载资源包括了CFA三级的SchweserNotes和Quicksheet,这些都是备考的重要参考资料。 SchweserNotes是CFA备考过程中广泛使用的教材,由Kaplan Schweser出版,以其详尽的解释和实例而闻名。这套资料...
Lotus Domino Notes是一款由IBM开发的企业级协作软件,它包含了电子邮件、日历、任务管理、即时消息、数据库和应用程序开发等功能。本安装文档将详细阐述如何在操作系统环境中正确安装和配置Lotus Domino服务器以及...
这个压缩包文件"**C-Primer-Plus-good-notes-.zip**"显然包含了一份针对该书的优质笔记,特别适合在Windows环境下使用Goodnotes阅读和学习。 **Goodnotes**是一款广受欢迎的数字笔记应用,尤其适用于Windows用户。...
NOTES分类视图的生成是LOTUS Notes应用开发中的一个重要环节,主要涉及到对视图(View)的定制和优化,以便更好地管理和展示数据。在NOTES中,视图是一种组织和检索数据库文档的方式,它允许用户按照特定的分类标准...
Notes模板详解 Notes是一款功能强大且灵活的协作软件,但许多用户并不了解Notes的模板机制和数据库结构,导致在使用Notes时遇到很多问题。今天,我们将详细介绍Notes模板的概念、创建模板的方法、模板的应用场景,...
本文主要探讨了如何使用Notes与Office之间的接口,特别是Word的邮件合并功能,来实现Notes数据库数据与Office程序的集成。这种集成能够帮助用户处理在Notes中难以完成的任务,例如标签打印、表格打印和修订显示。 1...
最新出的notes!免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费免费...