`
lovehui0228
  • 浏览: 100420 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2验证框架后台验证用户注册

阅读更多

经过这两天的摸索,对验证框架还是有了一定的认识,纠正一下之前的错误,不管验证正确与否,都一定会执行action中的validate函数,把完整的后台验证用户注册贴出来了:

 

在项目根目录,也就是struts.xml相同的位置添加一个validators.xml,用来添加自定义规则.我只添加了一条自定义的规则,用来验证密码提示问题是否存在与相关数据库中,避免恶意提交(虽然我觉得也可能没有必要,但为了学一下怎么自定义验证规则,我就多此一举了):

 

自定义规则的配置文件:validators.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
        
<validators>  	
  	<validator name="valueintable" class="com.validators.ValueInSpecificTable"/>
</validators>

 

相应的类:ValueInSpecificTable

 

package com.validators;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class ValueInSpecificTable extends FieldValidatorSupport{
	
	private String table;
	
	public String getTable() {
		return table;
	}

	public void setTable(String table) {
		this.table = table;
	}

	public void validate(Object object) throws ValidationException {	
		String fieldName = getFieldName();
		String value = (String)this.getFieldValue(fieldName, object);
		
		SessionFactory factory = new Configuration().configure().buildSessionFactory();
		Session session = factory.openSession();
		Transaction transaction = session.beginTransaction();
		Query query = session.createQuery("from " + table + " where problemContent = '" + value + "'");
		transaction.commit();
		
		if(query.list().isEmpty())
		{
			System.out.println("WARN: " + value + "is not in table: " + table);
			addFieldError(fieldName, object);
		}
		
		session.close();
    }
}

 

Action的验证配置文件(和Action放在相同目录下):UserRegisterSaveAction-vaidation.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
	"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" 
	"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

	<validators>  
    	<field name="register.user_id"> 
    		<field-validator type="requiredstring">  
    			<param name="trim">true</param>  
    			<message>用户名不能为空</message>  
   			</field-validator>
    		
        	<field-validator type="stringlength">
  				<param name="minLength">4</param>  
    			<param name="maxLength">16</param>
  				<message>用户名长度应在4到16之间</message>
 			</field-validator>
    	</field>
    	
    	<field name="register.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>密码长度应在6到18个字符之间</message>  
   			</field-validator>   
    	</field>      
    	
    	<field name="register.pwd_repeat">   
        	<field-validator type="fieldexpression">
        		<param name="fieldName">register.password</param>
        		<param name="fieldName">register.pwd_repeat</param>
        		<param name="expression"><![CDATA[register.password == register.pwd_repeat]]></param>
         		<message>密码必须和确认密码相等</message>
   			</field-validator> 
    	</field> 
    	
    	<field name="register.problem_content">   
        	<field-validator type="valueintable">   
        		<param name="table">PromptProblem</param>
            	<message>请输入信息</message>   
        	</field-validator>
    	</field>      
    	
    	<field name="register.answer">   
        	<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">10</param>
  				<message>密码提示答案长度应在2到10之间</message>
 			</field-validator>   
    	</field>      
    	
    	<field name="register.nickname">   
        	<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">10</param>
  				<message>昵称长度应在2到10之间</message>
 			</field-validator>   
    	</field>      
    	
    	<field name="register.phone">   
        	<field-validator type="regex">   
        		<param name="fieldName">register.phone</param>
        		<param name="trim">true</param>
            	<param name="expression"><![CDATA[(((13[0-9]{1})|159|186|188|189|(15[0-9]{1}))+\d{8})]]></param>
            	<message>请输入正确的手机号码</message>  
        	</field-validator>
    	</field>  
    	
    	<field name="register.email">   
        	<field-validator type="email">   
            	<message>请输入正确的邮箱地址</message>                        
        	</field-validator>   
    	</field>          
    	
	</validators>      
	

 

 感觉Struts2的验证框架还是蛮好用的,就是刚开始学的时候会比较烦一点,网上很多Struts1框架的配置方法堂而皇之地冠以Struts2的名号,相当无语~~~

2
0
分享到:
评论

相关推荐

    SSH实现简单的后台管理系统

    此后台管理系统采用了SSH框架,前端采用Struts2的S标签进行表单提交,采用JS进行简单的输入验证。后台与mysql数据库进行连接,dao-service-action都是一一对应,便于理解。此后台管理系统,一共有三个表,用户注册表...

    java_jsp项目源码_网上书店(struts+hibernate+css+mysql).rar

    该系统具有完整的用户注册、登录、浏览、搜索、购物车、订单管理、后台管理等功能,可以满足大部分网上书店的基本需求。 **主要功能:** 1. **用户注册与登录:** 用户可以通过注册功能创建账号,并通过登录功能...

    基于J2EE框架的个人博客系统项目毕业设计(代码及论文)

     因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    低清版 大型门户网站是这样炼成的.pdf

    6.4.2 spring 2.5集成mvc框架struts 2 411 6.4.3 ssh 2组合框架的基本开发步骤—eportal启程 414 6.5 小结 423 第2篇 实践篇 第7章 ssh 2热身——构建新闻发布系统 427 7.1 门户网站新闻资讯基本分类 427 7.2 ...

    Eclipse开发入门与项目实践 源代码

    案例5-5 使用动态ActionForm实现身份验证中的新用户注册 193 5.4.3 Validator验证框架 197 案例5-6 使用Validator验证框架实现注册表单的数据验证 201 5.4.4 Struts标记库 206 案例5-7 采用Struts标记库...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    网上购物系统答辩PPT学习教案.pptx

    前台模块:用户注册、登录、商品信息的浏览、购物车、订单和修改个人信息的功能 后台模块:管理员操作,包括图书的添加、图书信息的显示、修改和删除、会员列表、订单列表 Struts2 工作流程: 1. 读取并解析...

    基于J2EE框架的个人博客系统项目毕业设计论...

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    JAVA程序开发大全---上半部分

    20.5.2 用户注册页面register.jsp 354 20.5.3 负责用户注册的Servlet类reg 356 20.5.4 生成随机验证码的imgNum类 358 20.5.5 用户登录页面index.jsp 359 20.5.6 验证用户登录信息的Servlet类login 360 20.6 显示宠物...

    jsp429ssh在线拼车系统mjm0106程序.java源码论文

    系统采用javaweb,基于B/S模式,Myeclipse为开发工具,mysql数据库进行数据存储.MVC三层思想,并且采用了ssh(struts2+spring+hibernate))框架进行开发,。本系统是独立的运行,不依附于其他系统,可移植,可扩展。代码的...

    JspRun!社区论坛系统 v6.0 bulid 090423 GBK 源码版.rar

    25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 ...

    JspRun!社区论坛系统 v6.0 bulid 090424 GBK 安装版.rar

    25、修复了新用户注册无法保存个性签名等若干bug 26、修复了三元运算符以兼容更多的web服务器(如jboss、resin等) 27、修复了广告数量不能整除时无法显示广告的问题 28、修复了“系统错误记录”无法写入的问题 ...

    Lerx 网站内容管理系统 v5.5.zip

    Lerx CMS V5版(以下简称V5版)采用了基于Java的SpringMVC框架,抛弃了V2-V3版本使用的Struts 2。SpringMVC框架更加安全、稳定。ORM持久化框架依旧使用Hibernate,版本为5.4。开发时采用的数据库为MySQL。是一个能快速...

    JAVA项目开发全程实录(含电子书和所有源代码)

    第9章 BBS系统(Struts+MySQL实现) 403 教学视频:1小时46分 9.1 开发背景 404 9.2 需求分析 404 9.3 系统设计 404 9.3.1 系统目标 404 9.3.2 系统功能结构 405 9.3.3 业务流程图 405 9.3.4 系统预览 406 9.3.5 ...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics