Struts2中域模型传值详解与示例

需积分: 9 4 下载量 140 浏览量 更新于2024-09-14 收藏 1KB TXT 举报
"在Struts2框架中,域模型(Domain Model)的使用是核心组件之一,它有助于组织和管理应用逻辑中的数据。本篇文章将详细介绍如何在Struts2中利用域模型(如Person类)进行数据传递以及前端页面的动态展示。首先,我们来看一个简单的例子,涉及两个关键部分:领域对象定义和Action实现。 1. 领域对象(Domain Model):Person类 创建一个名为`Person.java`的类,该类需继承自`ActionSupport`,这是Struts2提供的基础Action类,包含了常见的属性处理方法(如getter和setter)。例如: ```java package com.xfrj.t3.entity; import org.apache.struts2.ServletActionSupport; public class Person extends ServletActionSupport { private String username; private String usersex; private int userage; private String useraddress; // getters and setters public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } // ...其他属性的getter和setter } ``` 2. Action实现:PersonAction.java 在`com.xfrj.t3`包下的`PersonAction.java`中,我们需要实例化Person对象并在execute方法中进行业务逻辑处理。例如,接受POST请求并设置域模型: ```java package com.xfrj.t3; public class PersonAction extends ActionSupport { private Person p; public void setP(Person p) { this.p = p; } public String execute() { // 业务逻辑,如验证输入并保存到数据库 // ... return "success"; // 或者根据业务逻辑返回相应的结果 } } ``` 3. Struts.xml配置 配置Struts2的`struts.xml`文件,将PersonAction映射到URL,指定数据绑定规则: ```xml <package name="t3" extends="struts-default"> <action name="person" class="com.xfrj.t3.PersonAction"> <result name="success">/success.jsp</result> <result name="input">/input.jsp</result> </action> </package> ``` 4. JSP页面:表单提交 在`input.jsp`中,使用Struts2的`<s:form>`标签和`<s:property>`标签来显示和绑定域模型: ```jsp <form action="person" method="post"> <s:property value="p.username"/> <br/> <input type="text" name="p.usersex"/> <br/> <label><s:property value="p.userage"/></label> <br/> <textarea name="p.useraddress"></textarea> <br/> <input type="submit" value="提交"/> <s:debug></s:debug> </form> ``` 5. 数据绑定与错误处理 在表单提交时,如果存在`username`字段未被正确提供,JSP页面可能无法获取到值,如代码中提到的`Ҳ{username}`。这通常意味着在Action中没有正确的数据绑定,或者提交的数据结构不匹配。需要检查Action中是否正确地将请求参数绑定到了`p`对象上。 6. 权限控制 页面上的逻辑判断,如`if("admin".equals(name))`,用于权限验证。如果用户不是管理员,会修改用户名并返回相应的结果,比如`SUCCESS`或`INPUT`。 总结: 在Struts2中,使用域模型进行数据传递主要包括以下几个步骤: - 定义一个Java对象,作为领域模型,包含业务属性和访问器方法。 - 创建Action类,接收并处理域模型,执行业务逻辑。 - 在Struts.xml中配置Action和结果映射。 - 在JSP页面上使用`<s:form>`和`<s:property>`进行数据绑定和显示。 - 进行必要的数据验证和错误处理,如权限控制和输入检查。 通过以上步骤,你可以有效地组织和传递数据,确保应用的健壮性和用户体验。