struts2中action接收参数的方式


在Struts2框架中,Action类是业务逻辑处理的核心组件,它负责接收用户请求并进行相应的处理。Action类中的方法通常对应着用户界面的各个操作,而这些方法的参数则是用来接收前端请求传递的数据。本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 最常见的接收参数方式是通过方法签名直接接收。例如,如果在JSP页面上有这样一个表单: ```jsp <form action="submit.action" method="post"> <input type="text" name="username" /> <input type="submit" value="提交" /> </form> ``` 对应的Action类可以这样设计: ```java public class SubmitAction extends ActionSupport { private String username; public String execute() { System.out.println("Username: " + username); // ... 其他业务逻辑 return SUCCESS; } public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } } ``` 这里的`setUsername`和`getUsername`方法遵循了JavaBeans规范,Struts2的默认值栈会自动将`username`参数映射到这个setter方法上。 此外,Struts2还支持使用注解来接收参数,这使得代码更加简洁。使用`@ActionParams`或`@Param`注解可以实现这一功能: ```java @Action(value = "submit") public String submit(@Param("username") String username) { System.out.println("Username: " + username); // ... 其他业务逻辑 return SUCCESS; } ``` 在源码层面,Struts2的`ParametersInterceptor`拦截器是处理参数映射的关键。当请求到达Action时,该拦截器会检查Action方法的参数,并根据参数类型和名字从请求中获取对应的值。对于复杂类型的参数,如List或Map,Struts2提供了一种称为"OGNL表达式"的机制来处理数组和集合的映射。 例如,如果你有这样一个表单: ```jsp <form action="listSubmit.action" method="post"> <input type="text" name="users[0].name" /> <input type="text" name="users[1].name" /> <input type="submit" value="提交" /> </form> ``` 你可以这样定义Action: ```java public class ListSubmitAction extends ActionSupport { private List<User> users; public String execute() { for (User user : users) { System.out.println("User Name: " + user.getName()); } // ... 其他业务逻辑 return SUCCESS; } public void setUsers(List<User> users) { this.users = users; } public List<User> getUsers() { return users; } public static class User { private String name; // getter and setter } } ``` 在这个例子中,Struts2会解析请求参数,创建一个User对象列表,并将每个用户的名字设置进去。 Struts2提供了一套灵活的参数接收机制,包括但不限于直接通过setter方法、使用注解和处理复杂类型。这种设计使得开发者可以根据实际需求自由选择最合适的参数处理方式,提高了代码的可读性和可维护性。在实际开发中,了解并熟练掌握这些机制,能有效提升开发效率和项目质量。









































































- 1


- 粉丝: 389
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 东亚糖业—幸福2006年度薪酬分配方案(定稿).doc
- 需求评审活动指南.doc
- 基于应用能力培养的高职计算机网络技术专业教学改革.docx
- 基于人才培养的计算机基础课程教学改革研究.docx
- WEB系统优化-以审计日志数据的分析处理为例.docx
- 篮球企业创业计划书.doc
- 技术标-(2).doc
- Oracle快速入门手册.doc
- 丹麦幼儿园的入园-5天适应计划.doc
- 某热电厂工程监理工作总结.doc
- 某某高速公路绿化工程施工组织设计.doc
- 项目一钢筋混凝土浅基础施工.ppt
- BIM智慧建造在建筑设计中的应用(56页).ppt
- ISO27001-&-ISO27002信息安全管理培训-分享.ppt
- JAVA药品管理完整论文.doc
- 分水江水库施工组织设计方案.doc


