Struts2.2类型转换与自定义转换详解
需积分: 1 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框架开发出符合业务需求的高质量应用。
2010-04-05 上传
2012-08-22 上传
2010-09-15 上传
2014-02-18 上传
2022-06-25 上传
2014-02-13 上传
2007-05-09 上传
wokaibuliaokou
- 粉丝: 5
- 资源: 1
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率