Struts2验证框架验证用户注册

来源:互联网 发布:贷款软件泄露个人资料 编辑:程序博客网 时间:2024/05/22 08:13

核心代码如下:
1.
用户注册页面register.jsp

Java代码

  1. <form action="register.action" method="post">   
  2.     <I><font face="楷体_GB2312" color="#FF0000"><s:fielderror />   
  3.     </font>   
  4.     </I>   
  5.     <!-- 读取显示提示信息 -->   
  6.     <table>   
  7.      <tr>   
  8.       <td>   
  9.        用户名:   
  10.       </td>   
  11.       <td>   
  12.        <input type="text" name="user.userName">   
  13.       </td>   
  14.      </tr>   
  15.      <tr>   
  16.       <td>   
  17.        密码:   
  18.       </td>   
  19.       <td>   
  20.        <input type="password" name="user.password">   
  21.       </td>   
  22.      </tr>   
  23.      <tr>   
  24.       <td>   
  25.        确认密码:   
  26.       </td>   
  27.       <td>   
  28.        <input type="password" name="user.rePassword">   
  29.       </td>   
  30.      </tr>   
  31.   
  32.      <tr>   
  33.       <td>   
  34.        年龄:   
  35.       </td>   
  36.       <td>   
  37.        <input type="text" name="user.age">   
  38.       </td>   
  39.      </tr>   
  40.      <tr>   
  41.       <td>   
  42.        生日:   
  43.       </td>   
  44.       <td>   
  45.        <input type="text" name="user.birthday">   
  46.       </td>   
  47.      </tr>   
  48.      <tr>   
  49.       <td colspan="2">   
  50.        <s:submit value="注册"></s:submit>   
  51.       </td>   
  52.      </tr>   
  53.     </table>   
  54.    </form>  

<form action="register.action" method="post">

    <I><font face="楷体_GB2312" color="#FF0000"><s:fielderror />

    </font>

    </I>

    <!-- 读取显示提示信息 -->

    <table>

     <tr>

      <td>

       用户名:

      </td>

      <td>

       <input type="text" name="user.userName">

      </td>

     </tr>

     <tr>

      <td>

       密码:

      </td>

      <td>

       <input type="password" name="user.password">

      </td>

     </tr>

     <tr>

      <td>

       确认密码:

      </td>

      <td>

       <input type="password" name="user.rePassword">

      </td>

     </tr>

 

     <tr>

      <td>

       年龄:

      </td>

      <td>

       <input type="text" name="user.age">

      </td>

     </tr>

     <tr>

      <td>

       生日:

      </td>

      <td>

       <input type="text" name="user.birthday">

      </td>

     </tr>

     <tr>

      <td colspan="2">

       <s:submit value="注册"></s:submit>

      </td>

     </tr>

    </table>

   </form>


2.
注册成功欢迎页面welcome.jsp

Java代码

  1. congratulations!${user.userName} <br>  

congratulations!${user.userName} <br>


3.
注册处理action RegisterAction

Java代码

  1. package org.kingtoon.action;   
  2. import javax.servlet.http.HttpServletRequest;   
  3. import org.apache.struts2.ServletActionContext;   
  4. import org.kingtoon.bean.User;   
  5. import com.opensymphony.xwork2.ActionSupport;   
  6. public class RegisterAction extends ActionSupport {   
  7.   
  8.   
  9. private User user;   
  10. @Override  
  11. public String execute() throws Exception {   
  12.    if(!(user.getPassword().equals(user.getRePassword()))){   
  13.       this.addFieldError("password", "请输入相同的密码");   
  14.       return "input";   
  15.    }    
  16.    else  
  17.    {    
  18.     HttpServletRequest request = ServletActionContext.getRequest ();   
  19.     request.setAttribute("user", user);   
  20.     return SUCCESS;   
  21.    }   
  22.      
  23. }   
  24. public User getUser() {   
  25.    return user;   
  26. }   
  27. public void setUser(User user) {   
  28.    this.user = user;   
  29. }   
  30. }  

package org.kingtoon.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import org.kingtoon.bean.User;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {

 

 

private User user;

@Override

public String execute() throws Exception {

   if(!(user.getPassword().equals(user.getRePassword()))){

      this.addFieldError("password", "请输入相同的密码");

      return "input";

   }

   else

   {

    HttpServletRequest request = ServletActionContext.getRequest ();

    request.setAttribute("user", user);

    return SUCCESS;

   }

 

}

public User getUser() {

   return user;

}

public void setUser(User user) {

   this.user = user;

}

}


4.
用户Bean User.java

Java代码

  1. package org.kingtoon.bean;   
  2. import java.util.Date;   
  3. public class User {   
  4. private String userName;   
  5. private String password;   
  6. private String rePassword;   
  7. private Integer age;   
  8. private Date birthday;   
  9. public Integer getAge() {   
  10.    return age;   
  11. }   
  12. public void setAge(Integer age) {   
  13.    this.age = age;   
  14. }   
  15. public Date getBirthday() {   
  16.    return birthday;   
  17. }   
  18. public void setBirthday(Date birthday) {   
  19.    this.birthday = birthday;   
  20. }   
  21. public String getPassword() {   
  22.    return password;   
  23. }   
  24. public void setPassword(String password) {   
  25.    this.password = password;   
  26. }   
  27. public String getRePassword() {   
  28.    return rePassword;   
  29. }   
  30. public void setRePassword(String rePassword) {   
  31.    this.rePassword = rePassword;   
  32. }   
  33. public String getUserName() {   
  34.    return userName;   
  35. }   
  36. public void setUserName(String userName) {   
  37.    this.userName = userName;   
  38. }   
  39.   
  40. }  

package org.kingtoon.bean;

import java.util.Date;

public class User {

private String userName;

private String password;

private String rePassword;

private Integer age;

private Date birthday;

public Integer getAge() {

   return age;

}

public void setAge(Integer age) {

   this.age = age;

}

public Date getBirthday() {

   return birthday;

}

public void setBirthday(Date birthday) {

   this.birthday = birthday;

}

public String getPassword() {

   return password;

}

public void setPassword(String password) {

   this.password = password;

}

public String getRePassword() {

   return rePassword;

}

public void setRePassword(String rePassword) {

   this.rePassword = rePassword;

}

public String getUserName() {

   return userName;

}

public void setUserName(String userName) {

   this.userName = userName;

}

 

}


5.
配置验证文件RegisterAction-validation.xml

Java代码

  1. <validators>   
  2. <field name="user.userName">   
  3.    <!-- 验证字符串不能为空 -->   
  4.    <field-validator type="requiredstring">   
  5.     <!-- 去空格 -->   
  6.     <param name="trim">true</param>   
  7.     <!-- 错误提示信息 -->   
  8.     <message>用户名不能为空</message>   
  9.    </field-validator>   
  10.      
  11.    <!-- 验证字符串长度 -->   
  12.    <field-validator type="stringlength">   
  13.     <param name="minLength">2</param>   
  14.     <param name="maxLength">20</param>   
  15.     <message>用户名长度应在218个字符间</message>   
  16.    </field-validator>   
  17. </field>   
  18.   
  19. <field name="user.password">   
  20.    <field-validator type="requiredstring">   
  21.     <param name="trim">true</param>   
  22.     <message>密码不能为空</message>   
  23.    </field-validator>   
  24.      
  25.    <field-validator type="stringlength">   
  26.     <param name="minLength">6</param>   
  27.     <param name="maxLength">18</param>   
  28.     <message>密码长度应在618个字符之间</message>   
  29.    </field-validator>   
  30. </field>   
  31.   
  32. <field name="user.age">   
  33.    <field-validator type="int">   
  34.     <param name="min">1</param>   
  35.     <param name="max">150</param>   
  36.     <message>年龄应在1150之间</message>   
  37.    </field-validator>   
  38. </field>   
  39. <!-- 验证字符串为日期类型 -->   
  40. <field name="user.birthday">   
  41.    <field-validator type="date">   
  42.     <param name="min">1900-01-01</param>   
  43.     <param name="max">2008-10-16</param>   
  44.     <message>出生日期应在1900-01-012008-10-16</message>   
  45.    </field-validator>   
  46. </field>   
  47. </validators>  

<validators>

<field name="user.userName">

   <!-- 验证字符串不能为空 -->

   <field-validator type="requiredstring">

    <!-- 去空格 -->

    <param name="trim">true</param>

    <!-- 错误提示信息 -->

    <message>用户名不能为空</message>

   </field-validator>

 

   <!-- 验证字符串长度 -->

   <field-validator type="stringlength">

    <param name="minLength">2</param>

    <param name="maxLength">20</param>

    <message>用户名长度应在218个字符间</message>

   </field-validator>

</field>

 

<field name="user.password">

   <field-validator type="requiredstring">

    <param name="trim">true</param>

    <message>密码不能为空</message>

   </field-validator>

 

   <field-validator type="stringlength">

    <param name="minLength">6</param>

    <param name="maxLength">18</param>

    <message>密码长度应在618个字符之间</message>

   </field-validator>

</field>

 

<field name="user.age">

   <field-validator type="int">

    <param name="min">1</param>

    <param name="max">150</param>

    <message>年龄应在1150之间</message>

   </field-validator>

</field>

<!-- 验证字符串为日期类型 -->

<field name="user.birthday">

   <field-validator type="date">

    <param name="min">1900-01-01</param>

    <param name="max">2008-10-16</param>

    <message>出生日期应在1900-01-012008-10-16</message>

   </field-validator>

</field>

</validators>


6.struts2
框架默认加载的配置文件struts.xml

Java代码

  1. <struts>    
  2.     <constant name="struts.custom.i18n.resources" value="messageResource"></constant>   
  3.        
  4.     <package name="user" extends="struts-default">   
  5.     <action name="register" class="org.kingtoon.action.RegisterAction">   
  6.        <result name="success">/welcome.jsp</result>   
  7.        <result name="input">/register.jsp</result>   
  8.     </action>   
  9.     </package>   
  10. </struts>  

<struts>

    <constant name="struts.custom.i18n.resources" value="messageResource"></constant>

   

    <package name="user" extends="struts-default">

    <action name="register" class="org.kingtoon.action.RegisterAction">

       <result name="success">/welcome.jsp</result>

       <result name="input">/register.jsp</result>

    </action>

    </package>

</struts>


7.web
服务器启动时加载Struts 配置文件 web.xml

Java代码

  1. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  4. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
  5. <filter>   
  6.    <filter-name>struts-cleanup</filter-name>   
  7.    <filter-class>   
  8.     org.apache.struts2.dispatcher.ActionContextCleanUp   
  9.    </filter-class>   
  10. </filter>   
  11. <filter>   
  12.    <filter-name>struts2</filter-name>   
  13.    <filter-class>   
  14.     org.apache.struts2.dispatcher.FilterDispatcher   
  15.    </filter-class>   
  16. </filter>   
  17. <filter-mapping>   
  18.    <filter-name>struts-cleanup</filter-name>   
  19.    <url-pattern>/*</url-pattern>   
  20. </filter-mapping>   
  21. <filter-mapping>   
  22.    <filter-name>struts2</filter-name>   
  23.    <url-pattern>/*</url-pattern>   
  24. </filter-mapping>   
  25.   
  26. <welcome-file-list>   
  27.    <welcome-file>register.jsp</welcome-file>   
  28. </welcome-file-list>   
  29. </web-app>  

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<filter>

   <filter-name>struts-cleanup</filter-name>

   <filter-class>

    org.apache.struts2.dispatcher.ActionContextCleanUp

   </filter-class>

</filter>

<filter>

   <filter-name>struts2</filter-name>

   <filter-class>

    org.apache.struts2.dispatcher.FilterDispatcher

   </filter-class>

</filter>

<filter-mapping>

   <filter-name>struts-cleanup</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

   <filter-name>struts2</filter-name>

   <url-pattern>/*</url-pattern>

</filter-mapping>

 

<welcome-file-list>

   <welcome-file>register.jsp</welcome-file>

</welcome-file-list>

</web-app>



至此,完毕.不过需要注意:
1.
配置验证xml文档的名字有讲究:格式为:Action名字()-validation.xml,与类在同一包中;
2.
验证文档里的<field-validator type="">中的type类型要和VO中的User属性类型一致,否则会报类型转换错误