- 零基础学Struts
- 卜炟等编著
- 888字
- 2021-03-29 12:06:45
16.9 完成更新用户模块
16.9.1 创建用户更新页
新建用户详细信息显示页,页面中包含一个表单,用来输入用户信息,代码如下所示。
<%@page contentType="text/html; charset=gb2312"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>更新产品</title> </head> <body> <center> <h2>更新产品</h2> <s:actionerror/> <s:form action="update"> <s:set name="id" value="#parameters.id[0]"></s:set> <s:textfield label="用户ID" name="id"></s:textfield> <s:textfield label="用户名" name="username"></s:textfield> <s:password label="密码" name="password"></s:password> <s:textfield label="年龄" name="age"></s:textfield> <s:textfield label="生日" name="birth"></s:textfield> <s:textfield label="邮箱地址" name="email"></s:textfield> <s:submit value="更新"></s:submit> <s:reset value="重置"></s:reset> </s:form> </center> </body> </html>
16.9.2 创建用户更新控制器
新建业务控制器UpdateAction,该Action负责接受用户添加页提交的用户信息,并通过业务逻辑组件更新用户信息,代码如下所示。
package net.hncu.action; import java.util.Date; import net.hncu.po.User; import net.hncu.service.UserService; import com.opensymphony.xwork2.ActionSupport; public class UpdateAction extends ActionSupport{ //用户ID private int id; //用户名 private String username; //密码 private String password; //年龄 private int age; //生日 private Date birth; //email地址 private String email; //业务逻辑组件 private UserService userService; //设置业务逻辑组件 public void setUserService(UserService userService) { this.userService = userService; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String execute() throws Exception { User user = new User(); user.setId(id); user.setUsername(username); user.setPassword(password); user.setAge(age); user.setBirth(birth); user.setEmail(email); //调用业务逻辑组件保存该用户 if(userService.updateUser(user)){ return SUCCESS; }else { return ERROR; } } }
16.9.3 配置用户更新控制器
在Spring配置文件中配置业务控制器updateAction,并为其注入业务逻辑组件,代码如下所示。
<! -- 创建updateAction实例 --> <bean id="updateAction" class="net.hncu.action.UpdateAction" scope="prototype"> <property name="userService" ref="userService"></property> </bean>
在“struts.xml”文件中配置updateAction,并定义处理结果与视图资源之间的关系,代码如下所示。
<action name="update" class="updateAction">
<! -- 定义处理结果与视图资源之间的关系-->
<result name="success" type="redirect">/showAll.action</result>
<result name="input">/add.jsp</result>
<result name="error">/update.jsp</result>
</action>
16.9.4 创建校验规则文件
新建校验规则文件,其中包含如下输入校验规则。
(1)用户名、密码、确认密码必须输入。
(2)用户名只能是数字或者字母,长度在6~20之间。
(3)密码、确认密码必须是数字或者字母,长度在6~20之间。
(4)密码和确认密码必须相同。
(5)年龄必须为整数而且必须是有效的年龄值。
(6)出生日期必须为正确的日期格式如1988-01-03,而且只能在1900-1-1~2010-1-1之间。
(7)邮箱地址必须为合法的邮箱地址。
通过以上校验规则,编写校验规则文件,代码如下所示。
<? xml version="1.0" encoding="UTF-8"? > <! DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <validator type="requiredstring"> <param name="fieldName">username</param> <param name="trim">true</param> <message>必须输入用户名</message> </validator> <validator type="regex"> <param name="fieldName">username</param> <param name="expression"><! [CDATA[(\w{6,20})]]></param> <message>用户名长度必须在6~20之间</message> </validator> <validator type="requiredstring"> <param name="fieldName">password</param> <param name="trim">true</param> <message>必须输入密码</message> </validator> <validator type="regex"> <param name="fieldName">password</param> <param name="expression"><! [CDATA[(\w{6,20})]]></param> <message>密码长度必须在6~20之间</message> </validator> <validator type="int"> <param name="fieldName">age</param> <param name="min">1</param> <param name="max">120</param> <message>年龄必须在${min}~${max}之间</message> </validator> <validator type="date"> <param name="fieldName">birth</param> <param name="min">1900-01-01</param> <param name="max">2010-01-01</param> <message>出生日期必须在1900-01-01~2010-01-01之间</message> </validator> <validator type="email"> <param name="fieldName">email</param> <message>请输入有效的电子邮箱地址</message> </validator> </validators>
16.9.5 测试更新用户
在用户列表页中,单击相应用户中的“更新”链接即可跳转到用户信息更新页,如图16.8所示。
在页面中输入需要更新的用户信息,单击“更新”按钮进行更新。更新完成后,页面将跳转回用户列表页,通过单击该用户ID的链接跳转到用户详细信息页,如图16.9所示,从页面中可以看出,用户的信息已经被更新了。
图16.8 注册用户更新页
图16.9 用户详细信息页