`
lovehui0228
  • 浏览: 101367 次
  • 性别: 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
分享到:
评论

相关推荐

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    而自动验证则是利用Struts2的内置验证框架,根据配置文件自动进行数据校验。 **手动验证**: 1. 创建自定义拦截器:首先,我们需要创建一个继承自`com.opensymphony.xwork2.interceptor.AbstractInterceptor`的类,...

    Struts验证框架

    Struts验证框架是Java开发中常用的MVC框架Struts的核心组成部分,主要用于处理用户输入的数据验证。这个框架使得开发者能够方便地定义验证规则,并在用户提交数据时进行验证,确保数据的有效性和完整性,防止非法或...

    Struts2开发用户管理后台系统源代码

    Struts2是一个强大的Java web应用框架,用于构建和维护可扩展、结构清晰的MVC(模型-视图-控制器)应用程序。在这个用户管理后台系统源代码中,开发者可以深入理解Struts2的核心概念和实现机制。 1. **Struts2框架...

    电影后台管理系统基于Struts2和Hibernate框架实现(包含数据库)

    电影后台管理系统是一个典型的JavaWeb应用,它利用了Struts2和Hibernate这两个强大的开源框架来构建。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理用户请求和控制应用程序流程,而Hibernate...

    sysUser S2SH 框架+分页+ajax用户时实验证

    在IT行业中,S2SH框架是指Struts2、Spring和Hibernate三个开源框架的组合,它在Web应用开发中被广泛使用。本项目标题"sysUser S2SH 框架+分页+ajax用户时实验证"揭示了几个关键的技术点,我们将详细探讨这些知识点。...

    struts2 MVC 三大框架登陆注册 用户分页

    总结来说,"struts2 MVC 三大框架登陆注册 用户分页"这个主题涵盖了Struts2框架的使用、用户登录注册的实现、以及用户分页的处理,特别是对于管理员权限的控制。通过学习这些知识点,开发者能够构建出高效、安全且易...

    Struts2做的登陆注册及用户信息管理系统

    8. **表单验证**:在用户注册时,Struts2可以通过ActionForm或注解实现表单数据的验证,防止无效或恶意数据进入数据库。 9. **异常处理**:Struts2提供了一套完善的异常处理机制,可以在全局范围内捕获和处理异常,...

    自己编写的一个struts2.1 基于dojo的ajax标签的即时验证小程序

    即时验证通常涉及在用户输入时调用后台服务进行验证,例如检查用户名是否已存在,或者电子邮件格式是否正确。 在这个示例中,开发者可能创建了一个Action,处理Ajax请求并返回验证结果。Action通常会有一个特定的...

    基于struts2商品管理项目

    【基于Struts2的商品管理项目】是一个典型的Java Web应用程序,主要使用了Struts2框架来构建后台控制逻辑,实现管理员和用户对商品的多种操作。Struts2是Apache软件基金会的一个开源项目,它是一个用于构建MVC(模型...

    基于Struts2、hibernate、spring实现的新闻后台管理系统

    本项目"基于SSH框架实现的新闻后台管理系统"是一个典型的Java Web项目,旨在提供新闻信息的发布、管理、查询等功能,同时也包含了用户注册与登录的权限控制。 **Struts2** 是一个用于构建MVC(Model-View-...

    基于Java S2SH框架开发的网上订餐管理系统 (struts2,hibernate4,spring3)

    - 用户模块:包括用户注册、登录、个人信息管理等功能,可能需要实现身份验证和授权机制。 - 餐厅模块:展示餐厅列表、详细信息,支持餐厅的添加、删除和编辑。 - 菜品模块:展示菜品信息,支持菜品的搜索、分类和...

    Ajax+struts用户验证

    本主题主要探讨如何利用Ajax和Struts进行用户验证,特别是针对用户注册时的用户名查重功能。 **Ajax基础** Ajax的核心是通过JavaScript异步地向服务器发送请求并处理返回的数据,无需刷新整个页面。这使得用户可以...

    Struts2.0框架技术详解

    通过引入第三方验证框架(如Hibernate Validator),可以在Action类中使用注解来实现数据验证。 **示例代码**: ```java public class MyAction { @NotNull(message = "Username cannot be empty") private ...

    struts2+ajax 无刷新验证身份证号是否已注册,身份证号是否正确

    ### Struts2 + AJAX 实现无刷新验证身份证号是否已注册及正确性的技术解析 #### 一、背景介绍 在Web应用开发中,确保用户输入数据的有效性和安全性是非常重要的环节。尤其是在涉及到敏感信息如身份证号时,需要...

    Struts2-网上投票系统

    Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用的解决方案。在"Struts2-网上投票系统"中,我们可以看到这个项目利用了Struts...

    struts2 做的用户登陆注册系统

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,用于构建可维护性高、结构清晰的企业级应用。在这个"Struts2做的用户登录注册系统"中,我们可以看到开发者利用Struts2...

    struts2-ebook 网上购书系统

    Struts2-ebook网上购书系统是一个基于Struts2框架实现的典型Web应用程序,它涵盖了用户管理、图书展示、购物车处理以及订单处理等核心功能。这个系统展示了如何利用Struts2的强大特性和MVC(Model-View-Controller)...

    struts用户注册系统

    Struts 2 用户注册系统是基于Java Web技术构建的一个经典应用,主要利用Struts 2框架来实现用户管理和权限控制。Struts 2是Apache软件基金会的开源项目,它是一个强大的MVC(Model-View-Controller)框架,用于构建...

    struts2 课程设计

    Struts2结合Hibernate ORM框架可以方便地处理这些事务,通过Action调用Service层方法获取和更新订单状态,再通过JSP将结果展示给用户。 4. **用户管理**:注册、登录、密码找回、权限控制等用户管理功能是系统的...

    使用Struts2框架完成一个简单的留言板(包含完整源代码+数据库+程序截图+中文显示数据)

    在这个项目中,我们将深入探讨如何使用Struts2框架来实现一个简单的留言板系统,涵盖用户登录、注册、发布主题、浏览主题、编辑主题以及发表评论等功能。 首先,我们需要搭建Struts2的基础环境。这包括在项目中引入...

Global site tag (gtag.js) - Google Analytics