Struts2.2类型转换与自定义转换详解

需积分: 1 0 下载量 193 浏览量 更新于2024-07-31 收藏 1.06MB DOC 举报
"struts2.2学习笔记,涵盖action、拦截器、过滤器、国际化和struts.xml配置的总结。讨论了Struts2的类型转换机制,特别是自定义对象类型的转换。" 在深入探讨Struts2.2这个Java Web框架时,我们首先需要理解其核心概念之一——Action。每个HTTP请求在Struts2中都会映射到一个Action对象,与Servlet的单例模式不同,Struts2允许为每个请求创建新的Action实例,这样可以更好地实现请求的隔离和状态管理。 类型转换是Struts2处理表单数据的关键部分。对于基本数据类型和常用类型如Date和String,Struts2内置了类型转换器,能够自动完成数据的转换。然而,当我们需要处理自定义对象时,Struts2则需要我们提供额外的信息来完成转换。 自定义类型转换器的配置包括三个关键部分:Action名称、待转换的属性名和对应的类型转换器类。Action名称通常通过属性文件名来标识,属性名则是通过属性文件中的键(key)来确定,而类型转换器类则由该键对应的值来指定。具体流程如下: 1. 用户提交表单后,Struts2根据`struts.xml`找到匹配的Action,并创建Action实例。 2. 在调用set方法设置参数之前,Struts2会检查当前Action所在的包下是否存在类型转换文件(properties文件)。 3. 如果找到类型转换文件,Struts2将依据文件名确定需要转换的Action,通过文件内容的键确定需要转换的属性,再根据键的值找到相应的类型转换器类。 4. 类型转换器被实例化并调用`convertValue()`方法,将用户输入的数据转化为Object对象。 5. Struts2将这个转换后的对象设置到Action的相应属性上,随后调用`execute()`方法。 6. `execute()`方法返回的结果字符串与`struts.xml`中action的result标签匹配,决定后续的页面跳转。 在实际应用中,当`execute()`方法返回的字符串与`result`标签的`name`属性匹配为`success`时,Struts2会将用户重定向到对应的`.jsp`或其它视图页面。在`.jsp`页面中,可以通过OGNL(Object-Graph Navigation Language)表达式访问Action对象的属性,展示或处理转换后的数据。 此外,Struts2的拦截器(Interceptor)和过滤器(Filter)也是其强大功能的一部分。拦截器允许我们在Action执行前后插入自定义逻辑,例如日志记录、权限验证等。过滤器则在请求进入DispatcherServlet之前发挥作用,可以用于处理跨站请求伪造(CSRF)防护、字符编码转换等问题。 国际化(Internationalization,简称i18n)是另一个重要的特性,它允许我们为不同的语言和地区提供本地化的显示。通过配置资源文件,我们可以轻松地切换网站或应用的语言环境,为用户提供更友好的界面。 Struts2.2的学习涵盖了Action的生命周期、类型转换机制、拦截器的使用、过滤器的配置以及国际化支持等多个方面,这些都是构建高效、可维护的Web应用不可或缺的知识点。深入理解这些概念,有助于开发者更好地利用Struts2框架开发出符合业务需求的高质量应用。