零基础学Struts
上QQ阅读APP看书,第一时间看更新

16.7 完成添加用户模块

新建用户详细信息显示页,页面中包含一个用来输入用户信息的表单,代码如下所示。

        <%@page contentType="text/html; charset=gb2312"%>
        <%@taglib prefix="s" uri="/struts-tags"%>
        <html>
        <head>
              <title>添加用户</title>
        </head>
        <body>
        <center>
              <h2>添加用户</h2>
              <s:form action="add">
                    <s:actionerror/>
                    <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.7.2 创建用户添加控制器

新建业务控制器AddAction,该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 AddAction extends ActionSupport{
              //用户名
              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 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 user = new User();
                user.setUsername(username);
                user.setPassword(password);
                user.setAge(age);
                user.setBirth(birth);
                user.setEmail(email);
                //调用业务逻辑组件保存该用户
                if(userService.addUser(user)){
                      return SUCCESS;
                }else{
                      addActionError("添加用户失败!");
                      return ERROR;
                }
          }
    }

16.7.3 配置用户添加控制器

在Spring配置文件中配置业务控制器addAction,并为其注入业务逻辑组件,代码如下所示。

    <! -- 创建addAction实例 -->
    <bean id="addAction" class="net.hncu.action.AddAction" scope="prototype">
        <property name="userService" ref="userService"></property>
    </bean>

在“struts.xml”文件中配置addAction,并定义处理结果与视图资源之间的关系,代码如下所示。

    <action name="add" class="addAction">
          <! -- 定义处理结果与视图资源之间的关系-->
          <result name="success" type="redirect">/showAll.action</result>
          <result name="input">/add.jsp</result>
          <result name="error">/add.jsp</result>
    </action>

16.7.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>用户名长度必须在620之间</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>密码长度必须在620之间</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-012010-01-01之间</message>
          </validator>
          <validator type="email">
                <param name="fieldName">email</param>
                <message>请输入有效的电子邮箱地址</message>
        </validator>
    </validators>

16.7.5 测试添加用户

在用户列表中单击“添加新用户”链接,页面将跳转到用户添加页,如图16.4所示。

在页面中输入需要添加的用户信息,单击“提交”按钮进行添加,如图16.5所示。

图16.4 添加注册用户页

图16.5 填写用户信息

用户添加完成后,页面将跳转回用户列表页,如图16.6所示。由图16.6可以看出,用户信息已成功添加。

图16.6 用户列表页