Struts2中使用验证框架的简单例子

来源:互联网 发布:淘宝客加盟费多少 编辑:程序博客网 时间:2024/06/05 08:42

一、实体类和实体映射类

Java代码  收藏代码
  1. package entity;  
  2.   
  3. /** 
  4.  * Users entity. @author MyEclipse Persistence Tools 
  5.  */  
  6.   
  7. public class Users implements java.io.Serializable {  
  8.   
  9.     // Fields  
  10.   
  11.     private Integer id;  
  12.     private String name;  
  13.     private String password;  
  14.     private String telephone;  
  15.     private String username;  
  16.     private String isadmin;  
  17.   
  18.     // Constructors  
  19.   
  20.     /** default constructor */  
  21.     public Users() {  
  22.     }  
  23.   
  24.     /** full constructor */  
  25.     public Users(String name, String password, String telephone, String username, String isadmin) {  
  26.         this.name = name;  
  27.         this.password = password;  
  28.         this.telephone = telephone;  
  29.         this.username = username;  
  30.         this.isadmin = isadmin;  
  31.     }  
  32.   
  33.     // Property accessors  
  34.   
  35.     public Integer getId() {  
  36.         return this.id;  
  37.     }  
  38.   
  39.     public void setId(Integer id) {  
  40.         this.id = id;  
  41.     }  
  42.   
  43.     public String getName() {  
  44.         return this.name;  
  45.     }  
  46.   
  47.     public void setName(String name) {  
  48.         this.name = name;  
  49.     }  
  50.   
  51.     public String getPassword() {  
  52.         return this.password;  
  53.     }  
  54.   
  55.     public void setPassword(String password) {  
  56.         this.password = password;  
  57.     }  
  58.   
  59.     public String getTelephone() {  
  60.         return this.telephone;  
  61.     }  
  62.   
  63.     public void setTelephone(String telephone) {  
  64.         this.telephone = telephone;  
  65.     }  
  66.   
  67.     public String getUsername() {  
  68.         return this.username;  
  69.     }  
  70.   
  71.     public void setUsername(String username) {  
  72.         this.username = username;  
  73.     }  
  74.   
  75.     public String getIsadmin() {  
  76.         return this.isadmin;  
  77.     }  
  78.   
  79.     public void setIsadmin(String isadmin) {  
  80.         this.isadmin = isadmin;  
  81.     }  
  82.   
  83. }  

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="entity.Users" table="USERS" schema="HOUSE">  
  9.         <id name="id" type="java.lang.Integer">  
  10.             <column name="ID" precision="7" scale="0" />  
  11.             <generator class="sequence">  
  12.                 <param name="sequence">user_seq</param>  
  13.             </generator>  
  14.         </id>  
  15.         <property name="name" type="java.lang.String">  
  16.             <column name="NAME" length="50" />  
  17.         </property>  
  18.         <property name="password" type="java.lang.String">  
  19.             <column name="PASSWORD" length="50" />  
  20.         </property>  
  21.         <property name="telephone" type="java.lang.String">  
  22.             <column name="TELEPHONE" length="15" />  
  23.         </property>  
  24.         <property name="username" type="java.lang.String">  
  25.             <column name="USERNAME" length="50" />  
  26.         </property>  
  27.         <property name="isadmin" type="java.lang.String">  
  28.             <column name="ISADMIN" length="5" />  
  29.         </property>  
  30.     </class>  
  31. </hibernate-mapping>  

 

 

二、接口和接口实现类

公用的Hibernate

Java代码  收藏代码
  1. package dao;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5. import org.hibernate.HibernateException;  
  6. import org.hibernate.Query;  
  7. import org.hibernate.Session;  
  8. import org.hibernate.Transaction;  
  9. import org.hibernate.criterion.Example;  
  10. import util.HibernateSessionFactory;  
  11.   
  12. /** 
  13.  * 公用的Hibernate 
  14.  *  
  15.  * @author miao 
  16.  *  
  17.  */  
  18. public class BaseHibernateDao<T> {  
  19.   
  20.     /** 
  21.      * 获得会话 
  22.      *  
  23.      * @return 
  24.      */  
  25.     public Session getSession() {  
  26.         return HibernateSessionFactory.getSession();  
  27.     }  
  28.   
  29.     /** 
  30.      * 关闭会话 
  31.      */  
  32.     public void closeSession() {  
  33.         HibernateSessionFactory.closeSession();  
  34.     }  
  35.   
  36.     /** 
  37.      * 根据主键查询 
  38.      */  
  39.     @SuppressWarnings("unchecked")  
  40.     public T get(Class<T> clz, Serializable id) {  
  41.         T ret = null;  
  42.         Session session = this.getSession();  
  43.         try {  
  44.             ret = (T) session.get(clz, id);  
  45.         } catch (HibernateException e) {  
  46.             e.printStackTrace();  
  47.         } finally {  
  48.             closeSession();  
  49.         }  
  50.         return ret;  
  51.     }  
  52.   
  53.     /** 
  54.      * 传HQL语句,并带参数,查询返回一个对象 
  55.      *  
  56.      * @param hql 
  57.      * @param param 
  58.      * @return 
  59.      */  
  60.     @SuppressWarnings("unchecked")  
  61.     public T findEntity(String hql, Object... param) {  
  62.         Query query = getSession().createQuery(hql);  
  63.         if (param != null) {  
  64.             for (int i = 0; i < param.length; i++) {  
  65.                 query.setParameter(i, param[i]);  
  66.             }  
  67.         }  
  68.         return (T) query.uniqueResult();  
  69.     }  
  70.   
  71.     /** 
  72.      * 添加一条记录 
  73.      *  
  74.      * @param entity 
  75.      */  
  76.     public boolean add(T entity) {  
  77.         boolean success = true;  
  78.         Transaction tx = null;  
  79.         Session session = getSession();  
  80.         try {  
  81.             tx = session.beginTransaction();  
  82.             session.save(entity);  
  83.             tx.commit();  
  84.         } catch (HibernateException e) {  
  85.             if (null != tx) {  
  86.                 tx.rollback();  
  87.             }  
  88.             e.printStackTrace();  
  89.         } finally {  
  90.             closeSession();  
  91.         }  
  92.         return success;  
  93.     }  
  94.   
  95.     /** 
  96.      * 更新记录 
  97.      *  
  98.      * @param entity 
  99.      * @return 
  100.      */  
  101.     public boolean update(T entity) {  
  102.         boolean success = true;  
  103.         Transaction tx = null;  
  104.         Session session = getSession();  
  105.         try {  
  106.             tx = session.beginTransaction();  
  107.             session.update(entity);  
  108.             tx.commit();  
  109.         } catch (HibernateException e) {  
  110.             if (null != tx) {  
  111.                 tx.rollback();  
  112.             }  
  113.             e.printStackTrace();  
  114.             success = false;  
  115.         } finally {  
  116.             closeSession();  
  117.         }  
  118.         return success;  
  119.     }  
  120.   
  121.     /** 
  122.      * 得到所有的记录 
  123.      *  
  124.      * @param clz 
  125.      * @return 
  126.      */  
  127.     @SuppressWarnings("unchecked")  
  128.     public List<T> getAll(Class<T> clz) {  
  129.         Session session = getSession();  
  130.         List<T> items = null;  
  131.         try {  
  132.             items = session.createCriteria(clz).list();  
  133.         } catch (HibernateException e) {  
  134.             e.printStackTrace();  
  135.         } finally {  
  136.             closeSession();  
  137.         }  
  138.         return items;  
  139.     }  
  140.   
  141.     /** 
  142.      * 传HQL语句,并带参数,查询 第二个参数可选 
  143.      *  
  144.      * @param hql 
  145.      * @param param 
  146.      * @return 
  147.      */  
  148.     @SuppressWarnings("unchecked")  
  149.     public List<T> findByHql(String hql, Object... param) {  
  150.         Query query = getSession().createQuery(hql);  
  151.         if (param != null) {  
  152.             for (int i = 0; i < param.length; i++) {  
  153.                 query.setParameter(i, param[i]);  
  154.             }  
  155.         }  
  156.         return query.list();  
  157.     }  
  158.   
  159.     /** 
  160.      * 删除记录 
  161.      *  
  162.      * @param clz 
  163.      * @param id 
  164.      * @return 删除成功返回true,失败则返回false 
  165.      */  
  166.     public boolean delete(Class<T> clz, Serializable id) {  
  167.         boolean success = true;  
  168.         Transaction tx = null;  
  169.         Session session = getSession();  
  170.         try {  
  171.             tx = session.beginTransaction();  
  172.             @SuppressWarnings("unchecked")  
  173.             T obj = (T) session.get(clz, id);  
  174.             session.delete(obj);  
  175.             tx.commit();  
  176.         } catch (HibernateException e) {  
  177.             if (null != tx) {  
  178.                 tx.rollback();  
  179.             }  
  180.             e.printStackTrace();  
  181.             success = false;  
  182.         } finally {  
  183.             closeSession();  
  184.         }  
  185.         return success;  
  186.     }  
  187.   
  188.     /** 
  189.      * 默认的查询 
  190.      *  
  191.      * @param clazz 
  192.      * @param condition 
  193.      * @return 
  194.      */  
  195.     @SuppressWarnings("unchecked")  
  196.     public List<T> search(Class<T> clazz, T condition) {  
  197.         Session session = getSession();  
  198.         List<T> results = null;  
  199.         try {  
  200.             results = session.createCriteria(clazz).add(Example.create(condition)).list();  
  201.         } catch (RuntimeException re) {  
  202.             re.printStackTrace();  
  203.         } finally {  
  204.             closeSession();  
  205.         }  
  206.         return results;  
  207.     }  
  208.   
  209. }  

 

dao

Java代码  收藏代码
  1. package dao;  
  2.   
  3. import entity.Users;  
  4. /** 
  5.  * 接口 
  6.  * @author miao 
  7.  * 
  8.  */  
  9. public interface UsersDao {  
  10.   
  11.     /** 
  12.      * 注册用户 
  13.      *  
  14.      * @param user 
  15.      * @return 
  16.      */  
  17.     public boolean register(Users user);  
  18.   
  19. }  

 

daoImpl

Java代码  收藏代码
  1. package dao.impl;  
  2.   
  3. import dao.BaseHibernateDao;  
  4. import dao.UsersDao;  
  5. import entity.Users;  
  6.   
  7. /** 
  8.  * 接口实现类 
  9.  *  
  10.  * @author miao 
  11.  *  
  12.  */  
  13. public class UsersDaoImpl extends BaseHibernateDao<Users> implements UsersDao {  
  14.   
  15.     /** 
  16.      * 注册用户 
  17.      */  
  18.     public boolean register(Users user) {  
  19.         return super.add(user);  
  20.     }  
  21.   
  22. }  

 

 

三、业务类和业务实现类

Java代码  收藏代码
  1. package biz;  
  2.   
  3. import entity.Users;  
  4.   
  5. /** 
  6.  * 业务 
  7.  *  
  8.  * @author miao 
  9.  *  
  10.  */  
  11. public interface UsersBiz {  
  12.   
  13.     /** 
  14.      * 注册用户 
  15.      *  
  16.      * @param user 
  17.      * @return 
  18.      */  
  19.     public boolean register(Users user);  
  20.   
  21. }  

 

Java代码  收藏代码
  1. package biz.impl;  
  2.   
  3. import dao.UsersDao;  
  4. import dao.impl.UsersDaoImpl;  
  5. import entity.Users;  
  6. import biz.UsersBiz;  
  7.   
  8. /** 
  9.  * 业务实现类 
  10.  *  
  11.  * @author miao 
  12.  *  
  13.  */  
  14. public class UsersBizImpl implements UsersBiz {  
  15.   
  16.     // 调用dao  
  17.     UsersDao usersDao = new UsersDaoImpl();  
  18.   
  19.     /** 
  20.      * 注册用户 
  21.      */  
  22.     public boolean register(Users user) {  
  23.         return usersDao.register(user);  
  24.     }  
  25.   
  26. }  

 

 

四、Action

1.注册用的Action

2.验证框架xml文件

3.写配置的时候用到的提示文件 xwork-validator-1.0.2.dtd 

 

action

Java代码  收藏代码
  1. package action;  
  2.   
  3. import biz.UsersBiz;  
  4. import biz.impl.UsersBizImpl;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import entity.Users;  
  7.   
  8. /** 
  9.  * 用户的Action 
  10.  *  
  11.  * @author miao 
  12.  *  
  13.  */  
  14. public class UsersAction extends ActionSupport {  
  15.   
  16.     UsersBiz usersBiz = new UsersBizImpl(); // 业务类  
  17.   
  18.     private Users users; // 注册实体类  
  19.   
  20.     private String name; // 名字  
  21.     private String password; // 密码  
  22.     private String message;// 返回的提示信息  
  23.     private String repassword;// 新加入的属性,用来接收确认密码  
  24.   
  25.     public String getRepassword() {  
  26.         return repassword;  
  27.     }  
  28.   
  29.     public void setRepassword(String repassword) {  
  30.         this.repassword = repassword;  
  31.     }  
  32.   
  33.     public String getName() {  
  34.         return name;  
  35.     }  
  36.   
  37.     public void setName(String name) {  
  38.         this.name = name;  
  39.     }  
  40.   
  41.     public String getPassword() {  
  42.         return password;  
  43.     }  
  44.   
  45.     public void setPassword(String password) {  
  46.         this.password = password;  
  47.     }  
  48.   
  49.     public String getMessage() {  
  50.         return message;  
  51.     }  
  52.   
  53.     public void setMessage(String message) {  
  54.         this.message = message;  
  55.     }  
  56.   
  57.     public Users getUsers() {  
  58.         return users;  
  59.     }  
  60.   
  61.     public void setUsers(Users users) {  
  62.         this.users = users;  
  63.     }  
  64.   
  65.     /** 
  66.      * 注册 
  67.      *  
  68.      * @return 
  69.      */  
  70.     public String register() {  
  71.         if (usersBiz.register(users)) {  
  72.             return SUCCESS;  
  73.         } else {  
  74.             super.addActionMessage("注册失败");  
  75.             return INPUT;  
  76.         }  
  77.     }  
  78. }  

 

验证框架,通过xml实现

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE validators PUBLIC   
  3.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  4.         "xwork-validator-1.0.2.dtd">  
  5. <validators>  
  6.   
  7.     <!-- 验证用户名 -->  
  8.     <field name="users.name">  
  9.         <field-validator type="requiredstring">  
  10.             <param name="trim">true</param>  
  11.             <message>用户名不能为空</message>  
  12.         </field-validator>  
  13.         <field-validator type="stringlength">  
  14.             <param name="minLength">6</param>  
  15.             <param name="maxLength">10</param>  
  16.             <message>用户名长度须在${minLength}和${maxLength}之间</message>  
  17.         </field-validator>  
  18.     </field>  
  19.   
  20.     <!-- 验证密码 -->  
  21.     <field name="users.password">  
  22.         <field-validator type="requiredstring">  
  23.             <param name="trim">true</param>  
  24.             <message>密码不能为空</message>  
  25.         </field-validator>  
  26.         <field-validator type="stringlength">  
  27.             <param name="minLength">6</param>  
  28.             <message>密码长度必须大于等于${minLength}</message>  
  29.         </field-validator>  
  30.     </field>  
  31.   
  32.     <!-- 验证密码确认 -->  
  33.     <field name="repassword">  
  34.         <field-validator type="fieldexpression">  
  35.             <param name="expression">users.password==repassword</param>  
  36.             <message>密码和确认密码必须相同</message>  
  37.         </field-validator>  
  38.     </field>  
  39.   
  40.     <!-- 验证固话 -->  
  41.     <field name="users.telephone">  
  42.         <field-validator type="requiredstring">  
  43.             <message>电话号码不能为空</message>  
  44.         </field-validator>  
  45.         <field-validator type="regex">  
  46.             <param name="expression">^(\d{3,4})?(\d{7,8})$</param>  
  47.             <message>电话号码格式不正确</message>  
  48.         </field-validator>  
  49.     </field>  
  50.   
  51.     <!-- 用户姓名的验证 -->  
  52.     <field name="users.username">  
  53.         <field-validator type="requiredstring">  
  54.             <param name="trim">true</param>  
  55.             <message>用户 姓名不能为空</message>  
  56.         </field-validator>  
  57.         <field-validator type="stringlength">  
  58.             <param name="minLength">2</param>  
  59.             <param name="maxLength">4</param>  
  60.             <message>用户姓名长度须在${minLength}和${maxLength}之间</message>  
  61.         </field-validator>  
  62.     </field>  
  63. </validators>  

 

 

五、页面(注册页面和注册成功页面)

注册

Html代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3. <%  
  4.     String path = request.getContextPath();  
  5.     String basePath = request.getScheme() + "://" + request.getServerName() + ":"  
  6.             + request.getServerPort() + path + "/";  
  7. %>  
  8.   
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  10. <html xmlns="http://www.w3.org/1999/xhtml">  
  11.     <head>  
  12.         <base href="<%=basePath%>" />  
  13.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  14.         <title>用户注册</title>  
  15.     </head>  
  16.     <body>  
  17.         <div id="regLogin" class="wrap">  
  18.             <div class="dialog">  
  19.                 <dl class="clearfix">  
  20.                     <dt>新用户注册</dt>  
  21.                     <dd class="past">填写个人信息</dd>  
  22.                 </dl>  
  23.                 <div class="box">  
  24.                     <s:form action="register" method="post" namespace="/">  
  25.                         <div class="infos">  
  26.                             <table class="field">  
  27.                                 <tr>  
  28.                                     <td class="field">用 户 名:</td>  
  29.                                     <td>  
  30.                                         <s:textfield name="users.name" cssClass="text" />  
  31.                                         <s:fielderror fieldName="users.name" />  
  32.                                     </td>  
  33.                                 </tr>  
  34.                                 <tr>  
  35.                                     <td class="field">密 码:</td>  
  36.                                     <td>  
  37.                                         <!-- 保留密码 -->  
  38.                                         <s:password name="users.password" cssClass="text" showPassword="true" />  
  39.                                         <s:fielderror fieldName="users.password" />  
  40.                                     </td>  
  41.                                 </tr>  
  42.                                 <tr>  
  43.                                     <td class="field">确认密码:</td>  
  44.                                     <td>  
  45.                                         <s:password name="repassword" cssClass="text" showPassword="true" />  
  46.                                         <s:fielderror fieldName="repassword" />  
  47.                                     </td>  
  48.                                 </tr>  
  49.                                 <tr>  
  50.                                     <td class="field">电 话:</td>  
  51.                                     <td>  
  52.                                         <s:textfield name="users.telephone" cssClass="text" />  
  53.                                         <s:fielderror fieldName="users.telephone" />  
  54.                                     </td>  
  55.                                 </tr>  
  56.                                 <tr>  
  57.                                     <td class="field">用户姓名:</td>  
  58.                                     <td>  
  59.                                         <s:textfield name="users.username" cssClass="text" />  
  60.                                         <s:fielderror fieldName="users.username" />  
  61.                                     </td>  
  62.                                 </tr>  
  63.                             </table>  
  64.                             <div class="buttons">  
  65.                                 <s:submit value="注册" />  
  66.                             </div>  
  67.                         </div>  
  68.                     </s:form>  
  69.                 </div>  
  70.             </div>  
  71.         </div>  
  72.     </body>  
  73. </html>  

 

注册成功

Html代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://" + request.getServerName() + ":"  
  5.             + request.getServerPort() + path + "/";  
  6. %>  
  7.   
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  9. <html xmlns="http://www.w3.org/1999/xhtml">  
  10.     <head>  
  11.         <base href="<%=basePath%>" />  
  12.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  13.         <title>注册成功</title>  
  14.     </head>  
  15.     <body>  
  16.         <div id="regLogin" class="wrap">  
  17.             <p>恭喜:注册成功!</p>  
  18.         </div>  
  19.     </body>  
  20. </html>  

 

原创粉丝点击