经过这两天的摸索,对验证框架还是有了一定的认识,纠正一下之前的错误,不管验证正确与否,都一定会执行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的名号,相当无语~~~
分享到:
相关推荐
而自动验证则是利用Struts2的内置验证框架,根据配置文件自动进行数据校验。 **手动验证**: 1. 创建自定义拦截器:首先,我们需要创建一个继承自`com.opensymphony.xwork2.interceptor.AbstractInterceptor`的类,...
Struts验证框架是Java开发中常用的MVC框架Struts的核心组成部分,主要用于处理用户输入的数据验证。这个框架使得开发者能够方便地定义验证规则,并在用户提交数据时进行验证,确保数据的有效性和完整性,防止非法或...
Struts2是一个强大的Java web应用框架,用于构建和维护可扩展、结构清晰的MVC(模型-视图-控制器)应用程序。在这个用户管理后台系统源代码中,开发者可以深入理解Struts2的核心概念和实现机制。 1. **Struts2框架...
电影后台管理系统是一个典型的JavaWeb应用,它利用了Struts2和Hibernate这两个强大的开源框架来构建。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理用户请求和控制应用程序流程,而Hibernate...
在IT行业中,S2SH框架是指Struts2、Spring和Hibernate三个开源框架的组合,它在Web应用开发中被广泛使用。本项目标题"sysUser S2SH 框架+分页+ajax用户时实验证"揭示了几个关键的技术点,我们将详细探讨这些知识点。...
总结来说,"struts2 MVC 三大框架登陆注册 用户分页"这个主题涵盖了Struts2框架的使用、用户登录注册的实现、以及用户分页的处理,特别是对于管理员权限的控制。通过学习这些知识点,开发者能够构建出高效、安全且易...
8. **表单验证**:在用户注册时,Struts2可以通过ActionForm或注解实现表单数据的验证,防止无效或恶意数据进入数据库。 9. **异常处理**:Struts2提供了一套完善的异常处理机制,可以在全局范围内捕获和处理异常,...
即时验证通常涉及在用户输入时调用后台服务进行验证,例如检查用户名是否已存在,或者电子邮件格式是否正确。 在这个示例中,开发者可能创建了一个Action,处理Ajax请求并返回验证结果。Action通常会有一个特定的...
【基于Struts2的商品管理项目】是一个典型的Java Web应用程序,主要使用了Struts2框架来构建后台控制逻辑,实现管理员和用户对商品的多种操作。Struts2是Apache软件基金会的一个开源项目,它是一个用于构建MVC(模型...
本项目"基于SSH框架实现的新闻后台管理系统"是一个典型的Java Web项目,旨在提供新闻信息的发布、管理、查询等功能,同时也包含了用户注册与登录的权限控制。 **Struts2** 是一个用于构建MVC(Model-View-...
- 用户模块:包括用户注册、登录、个人信息管理等功能,可能需要实现身份验证和授权机制。 - 餐厅模块:展示餐厅列表、详细信息,支持餐厅的添加、删除和编辑。 - 菜品模块:展示菜品信息,支持菜品的搜索、分类和...
本主题主要探讨如何利用Ajax和Struts进行用户验证,特别是针对用户注册时的用户名查重功能。 **Ajax基础** Ajax的核心是通过JavaScript异步地向服务器发送请求并处理返回的数据,无需刷新整个页面。这使得用户可以...
通过引入第三方验证框架(如Hibernate Validator),可以在Action类中使用注解来实现数据验证。 **示例代码**: ```java public class MyAction { @NotNull(message = "Username cannot be empty") private ...
### Struts2 + AJAX 实现无刷新验证身份证号是否已注册及正确性的技术解析 #### 一、背景介绍 在Web应用开发中,确保用户输入数据的有效性和安全性是非常重要的环节。尤其是在涉及到敏感信息如身份证号时,需要...
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用的解决方案。在"Struts2-网上投票系统"中,我们可以看到这个项目利用了Struts...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,用于构建可维护性高、结构清晰的企业级应用。在这个"Struts2做的用户登录注册系统"中,我们可以看到开发者利用Struts2...
Struts2-ebook网上购书系统是一个基于Struts2框架实现的典型Web应用程序,它涵盖了用户管理、图书展示、购物车处理以及订单处理等核心功能。这个系统展示了如何利用Struts2的强大特性和MVC(Model-View-Controller)...
Struts 2 用户注册系统是基于Java Web技术构建的一个经典应用,主要利用Struts 2框架来实现用户管理和权限控制。Struts 2是Apache软件基金会的开源项目,它是一个强大的MVC(Model-View-Controller)框架,用于构建...
Struts2结合Hibernate ORM框架可以方便地处理这些事务,通过Action调用Service层方法获取和更新订单状态,再通过JSP将结果展示给用户。 4. **用户管理**:注册、登录、密码找回、权限控制等用户管理功能是系统的...
在这个项目中,我们将深入探讨如何使用Struts2框架来实现一个简单的留言板系统,涵盖用户登录、注册、发布主题、浏览主题、编辑主题以及发表评论等功能。 首先,我们需要搭建Struts2的基础环境。这包括在项目中引入...