Struts2 Action参数接收:属性、DomainModel与ModelDriven
需积分: 25 5 浏览量
更新于2024-09-21
收藏 65KB DOC 举报
"Struts2框架允许Action类以多种方式接收请求参数,主要涉及Action的属性、DomainModel以及ModelDriven接口。以下是对这三种方法的详细说明:"
1. 使用Action的属性接收参数
- 定义:在Action类内部,声明一个与请求参数名称相匹配的私有属性,例如`private String userName;`,然后提供对应的getter和setter方法,如`public String getUserName(){}` 和 `public void setUserName(String userName){}`。
- 接收:当Struts2处理请求时,会自动调用setter方法将请求参数值赋给Action的属性。例如,如果URL中有`?userName=Magic`,Struts2会调用`setUserName("Magic")`。
- 发送:在JSP或其他视图层组件中,可以通过`user1!add`这样的Action方法引用,并在URL中以`userName=Magic`的形式传递参数。
2. 使用DomainModel接收参数
- 定义:创建一个独立的Model类,比如`User`,包含相应的属性和getter/setter方法。在Action类中,声明一个`User`类型的属性,但不需要手动创建对象,例如`private User user;`。
- 接收:Struts2会自动创建Model对象并调用setter方法填充属性,Action可以通过`user.getUserName()`来访问请求参数。
- 发送:在请求URL中,参数以`user2!add?user.userName=MGC`的方式传递,这里的`user`是Model对象的属性名,`userName`是Model类中的属性。
3. 使用ModelDriven接口接收参数
- 定义:让Action类实现`ModelDriven`接口,这个接口要求实现`getModel()`方法,返回Model对象。通常在Action类中会有一个Model类的实例,如`private User user = new User();`。
- 接收:Struts2会调用`getModel()`方法获取Model对象,然后自动填充参数,Action同样通过`user.getUserName()`访问参数。
- 发送:请求URL中的参数传递方式与使用DomainModel相同,即`user2!add?userName=MGC`。
在配置文件`web.xml`中,Struts2过滤器是必要的,它定义了Struts2的拦截器链,使得Action能够正确地接收和处理请求。示例配置如下:
```xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
这些配置确保了所有请求都会经过Struts2框架,使得Action可以利用上述方法接收参数。Struts2的这种灵活性使得开发人员可以根据项目需求选择最合适的方式来处理请求参数。
2013-04-17 上传
2020-10-23 上传
2019-04-08 上传
2020-08-30 上传
2020-08-31 上传
2019-04-21 上传
2019-04-21 上传
2019-04-17 上传
freegq_3000
- 粉丝: 0
- 资源: 3
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍