Struts2中使用验证框架的简单例子
来源:互联网 发布:淘宝客加盟费多少 编辑:程序博客网 时间:2024/06/05 08:42
一、实体类和实体映射类
- package entity;
- /**
- * Users entity. @author MyEclipse Persistence Tools
- */
- public class Users implements java.io.Serializable {
- // Fields
- private Integer id;
- private String name;
- private String password;
- private String telephone;
- private String username;
- private String isadmin;
- // Constructors
- /** default constructor */
- public Users() {
- }
- /** full constructor */
- public Users(String name, String password, String telephone, String username, String isadmin) {
- this.name = name;
- this.password = password;
- this.telephone = telephone;
- this.username = username;
- this.isadmin = isadmin;
- }
- // Property accessors
- public Integer getId() {
- return this.id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return this.password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getTelephone() {
- return this.telephone;
- }
- public void setTelephone(String telephone) {
- this.telephone = telephone;
- }
- public String getUsername() {
- return this.username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getIsadmin() {
- return this.isadmin;
- }
- public void setIsadmin(String isadmin) {
- this.isadmin = isadmin;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="entity.Users" table="USERS" schema="HOUSE">
- <id name="id" type="java.lang.Integer">
- <column name="ID" precision="7" scale="0" />
- <generator class="sequence">
- <param name="sequence">user_seq</param>
- </generator>
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="50" />
- </property>
- <property name="password" type="java.lang.String">
- <column name="PASSWORD" length="50" />
- </property>
- <property name="telephone" type="java.lang.String">
- <column name="TELEPHONE" length="15" />
- </property>
- <property name="username" type="java.lang.String">
- <column name="USERNAME" length="50" />
- </property>
- <property name="isadmin" type="java.lang.String">
- <column name="ISADMIN" length="5" />
- </property>
- </class>
- </hibernate-mapping>
二、接口和接口实现类
公用的Hibernate
- package dao;
- import java.io.Serializable;
- import java.util.List;
- import org.hibernate.HibernateException;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.hibernate.criterion.Example;
- import util.HibernateSessionFactory;
- /**
- * 公用的Hibernate
- *
- * @author miao
- *
- */
- public class BaseHibernateDao<T> {
- /**
- * 获得会话
- *
- * @return
- */
- public Session getSession() {
- return HibernateSessionFactory.getSession();
- }
- /**
- * 关闭会话
- */
- public void closeSession() {
- HibernateSessionFactory.closeSession();
- }
- /**
- * 根据主键查询
- */
- @SuppressWarnings("unchecked")
- public T get(Class<T> clz, Serializable id) {
- T ret = null;
- Session session = this.getSession();
- try {
- ret = (T) session.get(clz, id);
- } catch (HibernateException e) {
- e.printStackTrace();
- } finally {
- closeSession();
- }
- return ret;
- }
- /**
- * 传HQL语句,并带参数,查询返回一个对象
- *
- * @param hql
- * @param param
- * @return
- */
- @SuppressWarnings("unchecked")
- public T findEntity(String hql, Object... param) {
- Query query = getSession().createQuery(hql);
- if (param != null) {
- for (int i = 0; i < param.length; i++) {
- query.setParameter(i, param[i]);
- }
- }
- return (T) query.uniqueResult();
- }
- /**
- * 添加一条记录
- *
- * @param entity
- */
- public boolean add(T entity) {
- boolean success = true;
- Transaction tx = null;
- Session session = getSession();
- try {
- tx = session.beginTransaction();
- session.save(entity);
- tx.commit();
- } catch (HibernateException e) {
- if (null != tx) {
- tx.rollback();
- }
- e.printStackTrace();
- } finally {
- closeSession();
- }
- return success;
- }
- /**
- * 更新记录
- *
- * @param entity
- * @return
- */
- public boolean update(T entity) {
- boolean success = true;
- Transaction tx = null;
- Session session = getSession();
- try {
- tx = session.beginTransaction();
- session.update(entity);
- tx.commit();
- } catch (HibernateException e) {
- if (null != tx) {
- tx.rollback();
- }
- e.printStackTrace();
- success = false;
- } finally {
- closeSession();
- }
- return success;
- }
- /**
- * 得到所有的记录
- *
- * @param clz
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> getAll(Class<T> clz) {
- Session session = getSession();
- List<T> items = null;
- try {
- items = session.createCriteria(clz).list();
- } catch (HibernateException e) {
- e.printStackTrace();
- } finally {
- closeSession();
- }
- return items;
- }
- /**
- * 传HQL语句,并带参数,查询 第二个参数可选
- *
- * @param hql
- * @param param
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> findByHql(String hql, Object... param) {
- Query query = getSession().createQuery(hql);
- if (param != null) {
- for (int i = 0; i < param.length; i++) {
- query.setParameter(i, param[i]);
- }
- }
- return query.list();
- }
- /**
- * 删除记录
- *
- * @param clz
- * @param id
- * @return 删除成功返回true,失败则返回false
- */
- public boolean delete(Class<T> clz, Serializable id) {
- boolean success = true;
- Transaction tx = null;
- Session session = getSession();
- try {
- tx = session.beginTransaction();
- @SuppressWarnings("unchecked")
- T obj = (T) session.get(clz, id);
- session.delete(obj);
- tx.commit();
- } catch (HibernateException e) {
- if (null != tx) {
- tx.rollback();
- }
- e.printStackTrace();
- success = false;
- } finally {
- closeSession();
- }
- return success;
- }
- /**
- * 默认的查询
- *
- * @param clazz
- * @param condition
- * @return
- */
- @SuppressWarnings("unchecked")
- public List<T> search(Class<T> clazz, T condition) {
- Session session = getSession();
- List<T> results = null;
- try {
- results = session.createCriteria(clazz).add(Example.create(condition)).list();
- } catch (RuntimeException re) {
- re.printStackTrace();
- } finally {
- closeSession();
- }
- return results;
- }
- }
dao
- package dao;
- import entity.Users;
- /**
- * 接口
- * @author miao
- *
- */
- public interface UsersDao {
- /**
- * 注册用户
- *
- * @param user
- * @return
- */
- public boolean register(Users user);
- }
daoImpl
- package dao.impl;
- import dao.BaseHibernateDao;
- import dao.UsersDao;
- import entity.Users;
- /**
- * 接口实现类
- *
- * @author miao
- *
- */
- public class UsersDaoImpl extends BaseHibernateDao<Users> implements UsersDao {
- /**
- * 注册用户
- */
- public boolean register(Users user) {
- return super.add(user);
- }
- }
三、业务类和业务实现类
- package biz;
- import entity.Users;
- /**
- * 业务
- *
- * @author miao
- *
- */
- public interface UsersBiz {
- /**
- * 注册用户
- *
- * @param user
- * @return
- */
- public boolean register(Users user);
- }
- package biz.impl;
- import dao.UsersDao;
- import dao.impl.UsersDaoImpl;
- import entity.Users;
- import biz.UsersBiz;
- /**
- * 业务实现类
- *
- * @author miao
- *
- */
- public class UsersBizImpl implements UsersBiz {
- // 调用dao
- UsersDao usersDao = new UsersDaoImpl();
- /**
- * 注册用户
- */
- public boolean register(Users user) {
- return usersDao.register(user);
- }
- }
四、Action
1.注册用的Action
2.验证框架xml文件
3.写配置的时候用到的提示文件 xwork-validator-1.0.2.dtd
action
- package action;
- import biz.UsersBiz;
- import biz.impl.UsersBizImpl;
- import com.opensymphony.xwork2.ActionSupport;
- import entity.Users;
- /**
- * 用户的Action
- *
- * @author miao
- *
- */
- public class UsersAction extends ActionSupport {
- UsersBiz usersBiz = new UsersBizImpl(); // 业务类
- private Users users; // 注册实体类
- private String name; // 名字
- private String password; // 密码
- private String message;// 返回的提示信息
- private String repassword;// 新加入的属性,用来接收确认密码
- public String getRepassword() {
- return repassword;
- }
- public void setRepassword(String repassword) {
- this.repassword = repassword;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- public Users getUsers() {
- return users;
- }
- public void setUsers(Users users) {
- this.users = users;
- }
- /**
- * 注册
- *
- * @return
- */
- public String register() {
- if (usersBiz.register(users)) {
- return SUCCESS;
- } else {
- super.addActionMessage("注册失败");
- return INPUT;
- }
- }
- }
验证框架,通过xml实现
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "xwork-validator-1.0.2.dtd">
- <validators>
- <!-- 验证用户名 -->
- <field name="users.name">
- <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">10</param>
- <message>用户名长度须在${minLength}和${maxLength}之间</message>
- </field-validator>
- </field>
- <!-- 验证密码 -->
- <field name="users.password">
- <field-validator type="requiredstring">
- <param name="trim">true</param>
- <message>密码不能为空</message>
- </field-validator>
- <field-validator type="stringlength">
- <param name="minLength">6</param>
- <message>密码长度必须大于等于${minLength}</message>
- </field-validator>
- </field>
- <!-- 验证密码确认 -->
- <field name="repassword">
- <field-validator type="fieldexpression">
- <param name="expression">users.password==repassword</param>
- <message>密码和确认密码必须相同</message>
- </field-validator>
- </field>
- <!-- 验证固话 -->
- <field name="users.telephone">
- <field-validator type="requiredstring">
- <message>电话号码不能为空</message>
- </field-validator>
- <field-validator type="regex">
- <param name="expression">^(\d{3,4})?(\d{7,8})$</param>
- <message>电话号码格式不正确</message>
- </field-validator>
- </field>
- <!-- 用户姓名的验证 -->
- <field name="users.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">4</param>
- <message>用户姓名长度须在${minLength}和${maxLength}之间</message>
- </field-validator>
- </field>
- </validators>
五、页面(注册页面和注册成功页面)
注册
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://" + request.getServerName() + ":"
- + request.getServerPort() + path + "/";
- %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <base href="<%=basePath%>" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>用户注册</title>
- </head>
- <body>
- <div id="regLogin" class="wrap">
- <div class="dialog">
- <dl class="clearfix">
- <dt>新用户注册</dt>
- <dd class="past">填写个人信息</dd>
- </dl>
- <div class="box">
- <s:form action="register" method="post" namespace="/">
- <div class="infos">
- <table class="field">
- <tr>
- <td class="field">用 户 名:</td>
- <td>
- <s:textfield name="users.name" cssClass="text" />
- <s:fielderror fieldName="users.name" />
- </td>
- </tr>
- <tr>
- <td class="field">密 码:</td>
- <td>
- <!-- 保留密码 -->
- <s:password name="users.password" cssClass="text" showPassword="true" />
- <s:fielderror fieldName="users.password" />
- </td>
- </tr>
- <tr>
- <td class="field">确认密码:</td>
- <td>
- <s:password name="repassword" cssClass="text" showPassword="true" />
- <s:fielderror fieldName="repassword" />
- </td>
- </tr>
- <tr>
- <td class="field">电 话:</td>
- <td>
- <s:textfield name="users.telephone" cssClass="text" />
- <s:fielderror fieldName="users.telephone" />
- </td>
- </tr>
- <tr>
- <td class="field">用户姓名:</td>
- <td>
- <s:textfield name="users.username" cssClass="text" />
- <s:fielderror fieldName="users.username" />
- </td>
- </tr>
- </table>
- <div class="buttons">
- <s:submit value="注册" />
- </div>
- </div>
- </s:form>
- </div>
- </div>
- </div>
- </body>
- </html>
注册成功
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://" + request.getServerName() + ":"
- + request.getServerPort() + path + "/";
- %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <base href="<%=basePath%>" />
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>注册成功</title>
- </head>
- <body>
- <div id="regLogin" class="wrap">
- <p>恭喜:注册成功!</p>
- </div>
- </body>
- </html>
- Struts2中使用验证框架的简单例子
- struts2---验证框架的简单例子及其疑问
- 使用Struts1.2 Validator验证框架的简单例子
- struts2中Jquery的json使用(最简单的例子)
- struts2中Jquery的Gson使用(最简单的例子)
- 搭建Struts2框架的简单例子
- 说一说struts2 验证框架使用过程中遇到的问题
- Struts2 内置验证器的使用例子
- Struts2中使用框架完成自动验证
- Struts2验证框架使用
- struts2 客户端验证+服务端验证 简单例子
- Struts2使用validator验证框架的问题
- Struts2验证框架的使用和扩展
- 在Struts2中最简单的验证
- struts2的验证框架
- struts2的框架验证
- struts2 的验证框架
- Struts2的验证框架
- aclocal、autoconf、automake、autoheader、configure 处理流程
- cocos2d-x节点(CCRenderTexture.h)API
- cocos2d-x节点(CCProgressTimer.h)API
- cocos2d-x节点(CCClippingNode.h)API
- sudo 提示命令找不到
- Struts2中使用验证框架的简单例子
- 判断奇偶数的方法
- asm.h
- linux 权限
- UIDevice类
- Android中APK的安装过程
- 黑马程序员_毕向东_Java基础视频教程学习笔记(十三)
- 小巫随笔14
- vi 操作 (持续更新)