没有合适的资源?快使用搜索试试~ 我知道了~
首页struts2拦截器解析及配置
struts2学习笔记二
struts2拦截器解析及配置 struts2学习笔记二
需积分: 0 0 下载量 151 浏览量
更新于2023-11-24
收藏 603KB DOC 举报
Struts2学习笔记二主要讨论了在每个Action执行之前会执行的拦截器。这些拦截器的顺序和配置都在struts-default.xml文件中。在这段代码中,列举了默认的拦截器栈(defaultStack),其中包括了exception、alias、servletConfig、i18n、prepare、chain、scopedModelDriven、modelDriven、fileUpload、checkbox、multiselect、staticParams、actionMappingParams和params等拦截器。其中params拦截器还设置了excludeParams参数,用于排除一些特定的参数,如dojo开头、struts开头、session开头等参数,以便在执行参数拦截时进行排除。整个拦截器栈的设置是为了在每个Action执行前都能够按照特定的顺序执行一系列的拦截器,以便进行预处理、参数检查等操作,从而确保Action能够正常执行。这些拦截器的配置和使用是Struts2框架中非常重要的一部分,也是学习和掌握Struts2框架的关键之一。
资源详情
资源推荐
[在此处键入]
[在此处键入]
交表单时,是把 String[]类型转换成属性类型(参数封装),当在页面中显示属性时,是把属性类型
转换成 String 类型(数据回显)。所以我们要知道类型转换器是要支持双向转换的。
实现自定义类型转换器:
实现 com.opensymphony.xwork2.conversion.TypeConverter(不方便);
继承 com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 类,重写 convertValue()
方法(不方便);
继 承 org.apache.struts2.util.StrutsTypeConverter 类 , 重 写 convertFromString() 和
convertToString()方法(OK)。
DefaultTypeConverter 类实现了 TypeConverter 接口,我们继承 DefaultTypeConverter 类是需要覆
盖它的 convertValue(Map context, Object value, Class toType)方法:
Map<String, Object> context:OGNL 上下文对象,通常用不上它;
Object value:被转换的值;
Class toType:要被转换成什么类型。
因为转换是双向的,所以我们需要判断 toType 是什么类型。通过判断 toType 的类型就可以知道
当前转换的“方向”:
if(toType == String.class) {//数据回显
} else {//请求参数封装
}
注意,当要做请求参数封装时,value 的类型不是 String,而是 String[]类型。所以你需要获取
String[]的第一个参数,即下标 0 的值进行转换。
我们写一个 PersonConverter,它可以把 String 转换成 Person 类型,也可以把 Person 转换成
String 类型。
public class PersonAction extends ActionSupport {
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String execute() {
System.out.println(person);
return NONE;
}
}
public class PersonConverter extends DefaultTypeConverter {
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
if(toType == String.class) {
return value.toString();
Commented [崔 4]: 当 toType 为 String 类型,说明是要把
Person 转换成 String 类型
[在此处键入]
[在此处键入]
} else {
String s = ((String[]) value)[0];
String[] strs = s.split(",");
return new Person(strs[0], Integer.parseInt(strs[1]), strs[2]);
}
}
}
<package name="s5" namespace="/" extends="struts-default">
<action name="PersonAction" class="cn.itcast.s5.aciton.PersonAction">
<result>/index.jsp</result>
</action>
</package>
<form action="<c:url value='/PersonAction.action'/>" method="post">
Person: <input type="text" name="person"/>
<input type="submit" value="
提交
"/>
</form>
在继承 DefaultTypeConverter 类时,我们需要自己去判断 toType 的类型,然后再做双向的转换,
这 很 不 方 便 , 所 以 Struts2 又 提 供 了 org.apache.struts2.util.StrutsTypeConverter 类 , 它 是
DefaultTypeConverter 的子类,该类提供了两个抽象方法(convertFromString、convertToString),分
别用来参数封装和数据回显!
public class PersonConverter extends StrutsTypeConverter {
// 参数封装,String --> Peson
public Object convertFromString(Map context, String[] values, Class toClass)
{
String[] s = values[0].split(",");
return new Person(s[0], Integer.parseInt(s[1]), s[2]);
}
// 数据回显 Person --> String
public String convertToString(Map context, Object value) {
return value.toString();
}
}
注 意 , 上 面 代 码 还 不 能 运 行 , 因 为 Struts2 无 法 找 到 PersonConverter , 我 们 需 要 注 册
PersonConverter,这样 Struts2 才能找到它。
局部注册:只为 PersonAction 的 person 属性使用的类型转换器;
全局注册:所有 Person 类型都可以使用的类型转换器。
局 部 注 册 : 在 PersonAction 所 在 包 下 ( 即 cn.itcast.action ) 创 建 名 为
ActionName-conversion.properties(即 PersonAction-conversion.properties)的文件。内容为属性名称=
转换器类名(即 person=cn.itcast.converter.PersonConverter)。
Commented [崔 5]: 否则就是要把 String 转换成 Person!
这时 value 就是表单数据,但要注意,表单数据是 String[]
类型,我们要获取的是下标 0 的元素。
剩余36页未读,继续阅读
paterWang
- 粉丝: 1131
- 资源: 1439
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功