Struts2配置深度解析:struts.xml与包配置
需积分: 11 100 浏览量
更新于2024-08-18
收藏 207KB PPT 举报
Struts2是一个强大的MVC框架,其核心配置文件是`struts.xml`,它负责定义Action、拦截器、结果类型等关键组件。让我们深入探讨一下`struts.xml`的详细配置。
**namespace属性**
`namespace`属性是用于定义包的命名空间。命名空间在Struts2中起到路由的作用,它允许你将不同的Action分组到不同的URL路径下,避免Action名称冲突。如果未指定`namespace`,默认值为空字符串`""`,这意味着Action将响应根路径下的请求。
**struts-default包**
`struts-default`包是Struts2框架内置的一个特殊包,它包含了Struts2许多核心功能的默认配置,比如内置拦截器和Result类型。例如,`params`拦截器用于从请求中提取参数并注入到Action中,`chain` Result类型用于转发到另一个Action。为了让Action能够使用这些内置功能,你需要让自定义的包继承`struts-default`包。`struts-default.xml`配置文件位于`struts2-core-2.x.x.jar`中,框架启动时会自动加载。
**abstract属性**
`abstract="true"`可以将包定义为抽象包,抽象包不能包含Action,但可以被其他包继承,作为基础配置。继承抽象包的包可以复用其配置,同时添加自己的Action和特定配置。
**Action配置**
在`struts.xml`中,Action配置包括定义Action类、Action名称、Action的执行方法以及结果映射。Action类是业务逻辑的载体,可以使用三种方式编写:传统Action、POJO Action和注解Action。Action中的数据传递通常是通过Action实例的成员变量进行,这些变量可以自动绑定来自请求参数的值。
**访问Servlet环境对象**
在Action中,可以通过`ActionContext`来访问Servlet环境对象,如`HttpServletRequest`、`HttpServletResponse`以及`ServletContext`,从而获取或设置请求、响应及应用级的信息。
**动态调用Action方法**
通过`execute`方法的返回值,Struts2可以动态调用下一个Action。返回一个字符串,这个字符串与结果类型映射,决定调用哪个方法或跳转到哪个页面。
**使用通配符定义Action**
使用通配符`*`可以定义一组Action,比如`<action name="save*">`可以匹配到`saveUser`、`saveProduct`等Action,这样可以减少配置量。
**为Action的属性注入值**
Struts2提供了丰富的拦截器,如`params`拦截器,它可以自动将请求参数注入到Action的属性中。此外,还可以使用`<action>`元素的`<param>`子元素手动指定参数值。
**Action的结果类型详解**
Action的结果类型决定了请求处理后的跳转路径,常见的结果类型有`dispatcher`(转发到JSP或其他视图)、`redirect`(重定向到新的URL)、`stream`(流式结果,如下载文件)等。结果类型可以在`struts.xml`中全局定义,也可以在Action级别局部定义。
**Struts2框架启动**
Struts2框架通过`FilterDispatcher`(在Struts2较旧版本中)或`StrutsPrepareAndExecuteFilter`(在新版本中)过滤器启动。在`web.xml`中配置这个过滤器,并将所有请求映射给它。过滤器启动后,会读取`struts.xml`文件并将其内容加载到内存中,后续的请求处理都将基于这些内存中的配置。
`struts.xml`是Struts2框架的核心配置文件,它定义了Action的结构、行为以及与请求的交互方式。通过精细配置`namespace`、继承`struts-default`包、定义抽象包以及其他特性,可以构建出灵活且易于维护的MVC架构。理解并熟练掌握这些配置,将有助于提升Struts2应用的开发效率和质量。
2008-12-21 上传
2015-08-12 上传
3378 浏览量
2008-03-21 上传
点击了解资源详情
点击了解资源详情
2009-03-06 上传
2011-08-26 上传
2010-08-18 上传
无不散席
- 粉丝: 32
- 资源: 2万+
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍