Struts2框架配置解析:包、Action与拦截器
需积分: 0 174 浏览量
更新于2024-08-18
收藏 3.16MB PPT 举报
"本文详细介绍了Struts2框架中的struts.xml配置,包括包(package)配置、属性说明以及Struts2相对于Struts1.x的优势。"
在Struts2框架中,`struts.xml`是核心配置文件,它定义了action、result、拦截器和拦截器栈等元素,用于组织和管理应用程序的行为。包(package)配置是Struts2中的一个重要概念,它允许开发者将相关的action、结果和拦截器组织在一起,形成逻辑上的模块。包的配置类似于Java中的包,但具有继承性,可以通过`extends`属性扩展其他包,继承其配置并可以添加或覆盖特定的设置。
例如,下面的配置展示了如何定义一个名为"default"的包,它包含一个名为"login"的action及其两个结果("success"和"error"):
```xml
<package name="default" extends="struts-default">
<action name="login" class="cn.com.web.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
```
然后,可以创建一个名为"test"的包,它继承自"default"包,并且可以添加自己的namespace:
```xml
<package name="test" extends="default" namespace="/accp">
</package>
```
当发起`/accp/login.action`的请求时,系统会在"test"包中查找相应的action。由于"test"包继承了"default"包,所以它包含了"default"包的所有配置,使得action查找和执行更加灵活。
包配置的属性包括:
- `name`: 必需,用于其他包引用的键,标识包的唯一名称。
- `extends`: 可选,指定要扩展的包,可以使用逗号分隔多个包,但父包必须在子包之前定义。
- `namespace`: 可选,定义包的作用域,也就是请求路径的一部分。
- `abstract`: 可选,如果设置为true,则声明该包为抽象包,不能包含action定义,常用于定义默认配置供其他包继承。
Struts2相比于Struts1.x有很多改进,解决了许多Struts1.x存在的问题,如:
1. Struts2是一个基于Action的框架,行动更灵活。
2. 拥有一个活跃的开发社区,持续更新和维护。
3. 支持注解和XML配置,提供多种配置方式。
4. 使用POJO(Plain Old Java Object)作为Action,降低了对框架API的依赖,便于测试。
5. 集成了Spring、SiteMesh和Tiles,增强了功能和可扩展性。
6. 结合OGNL(Object-Graph Navigation Language),提供强大的表达式语言支持。
7. 提供主题和Ajax标签库,方便页面开发。
8. 支持多种视图技术,如JSP、Freemarker、Velocity和XSLT。
9. 通过插件机制,可以轻松扩展或修改框架功能。
Struts2通过引入拦截器等设计,改善了Struts1.x的结构,使其更符合现代Web应用的开发需求,降低了开发复杂度并提高了代码的可测试性和可维护性。
2008-03-21 上传
2015-08-12 上传
2011-10-10 上传
2024-01-01 上传
2023-05-15 上传
2024-03-10 上传
2023-05-24 上传
2024-10-24 上传
2024-10-26 上传
四方怪
- 粉丝: 28
- 资源: 2万+
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫