1、新建一个UserRegAction,为了方便编程,继承于ActionSupport
public class UserRegAction extends ActionSupport{
private static final long serialVersionUID = -3132955950082594812L;
private User user;//不用初始化
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
//这里其实返回的是一个小写的字符串"success"
return Action.SUCCESS;
}
@Override
public void validate() {
//执行完validate,一旦FieldError不为空,就会返回input视图给用户,不再执行业务逻辑方法
if(null==user.getUsername()||"".equals(user.getUsername().trim())){
this.addFieldError("user.username", "用户名不能不空!");
}else if(user.getUsername().length()<6||user.getUsername().length()>15){
this.addFieldError("user.username", "用户名长度必需在6~15之间!!");
}else if(!user.getUsername().matches("[\\w]+")){
this.addFieldError("user.username", "用户名只能是字母、数字或_符号!");
}
if(null==user.getPassword()||"".equals(user.getPassword().trim())){
this.addFieldError("user.password", "密码不能不空!");
}else if(user.getPassword().length()<6||user.getPassword().length()>15){
this.addFieldError("user.password", "密码长度必需在6~15之间!");
}
if(null==user.getRepassword()||"".equals(user.getRepassword().trim())){
this.addFieldError("user.repassword", "重复密码不能不空!");
}else if(!user.getPassword().equals(user.getRepassword())){
this.addFieldError("user.repassword", "输入密码不一致!");
}
if(null==user.getEmail()||"".equals(user.getEmail().trim())){
this.addFieldError("user.email", "邮箱不能不空!");
}else if(!user.getEmail().matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+")){
this.addFieldError("user.email", "邮箱格式有误!");
}
}
}
知识提示:addFieldError方法属于ActionSupport类,其实里面是使用Map把错误信息以键值的方式存储。当执行完 validate方法后,接着会调用ActionSupport的hasErrors()方法,一旦存在错误信息,就返回input视图给用户,不再执行execute方法.最后在页面显示出这些信息给用户.
2、在struts.xml里配置
<!-- 测试数据校验 -->
<package name="testvalidate" namespace="/test3" extends="struts-default">
<!-- 用户注册界面 -->
<action name="registerUI">
<result>/WEB-INF/jsp/register.jsp</result>
</action>
<!-- 用户注册 -->
<action name="register" class="cn.gkit.action.UserRegAction">
<result name="input">/WEB-INF/jsp/register.jsp</result>
<result name="success">/WEB-INF/jsp/welcome.jsp</result>
</action>
</package>
3、新建register.jsp页面,为了简洁,这里不对页面进行布局.
<s:form action="register" namespace="/test3">
用户名:<s:textfield name="user.username" />
<s:fielderror cssStyle="color:red;" >
<s:param>user.username</s:param>
</s:fielderror><br/>
密码:<s:password name="user.password"/>
<s:fielderror cssStyle="color:red;">
<s:param>user.password</s:param>
</s:fielderror><br/>
重复密码:<s:password name="user.repassword"/>
<s:fielderror cssStyle="color:red;" >
<s:param>user.repassword</s:param>
</s:fielderror><br/>
电子邮箱:<s:textfield name="user.email"/>
<s:fielderror cssStyle="color:red;" >
<s:param>user.email</s:param>
</s:fielderror><br/>
<s:submit value="提交"/>
</s:form>
知识提示:<s:fielderror />是从fielderror里面取出错误信息,<s:param />是取出指定key的错误消息.
4、validate方法会对action里面的所有业务方法进行校验,但如何只对指定的方法进行校验呢?
如增加一个reg方法:
public String reg(){
return Action.SUCCESS;
}
写一个只对reg业务方法进行校验的方法:
public void validateReg(){
//写验证代码,类似之前写的validate方法
}
知识提示:如果一个action里面有多个业务方法,指定要校验的方法名的定义规则:validate+业务方法名(首字母要大写).
执行流程: 封装表单数据后-->先调用validateReg方法-->再调用validate方法. validate方法最终还是会被调用的。所以当action里面有多个业务方法时,我们不会去重写validate方法,而是对应每一个业务方法都写一个验证方法. 如果要写一个只对execute方法校验的方法,一样方法名可以写成validateExecute方法.
下一节:改成基于框架的校验方式.
分享到:
相关推荐
### Struts2输入校验深度解析 #### 一、手动输入完成校验 在Struts2框架中,输入校验是确保数据完整性和安全性的重要环节。对于手动输入完成校验,Struts2提供了灵活的机制。 1. **普通处理方式**:在Action类中...
在Struts2中,输入校验通常分为两种方式:客户端校验和服务器端校验。客户端校验主要通过JavaScript在用户端进行,可以提供即时反馈,但安全性较低,因为用户可以禁用JavaScript或绕过校验。服务器端校验则是在...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
在Struts2中,校验器(Validator)是处理用户输入验证的核心组件,确保提交到服务器的数据符合预设的业务规则。这篇博客文章可能是关于如何使用Struts2的内置校验机制以及自定义校验规则的探讨。 Struts2的校验框架...
总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...
在Struts2中,输入校验是确保用户提交的数据符合预设规范的重要环节,可以防止非法数据进入系统,保护数据的完整性和安全性。本文将详细探讨Struts2中的输入校验机制。 首先,Struts2提供了两种主要的校验方式:...
本篇文章将详细介绍如何在Struts2中进行输入校验,包括两种主要实现方式:使用Action中的`validate()`方法和使用XML文件。 1. 使用Action中的`validate()`方法: 在Struts2中,每个Action类都可以包含一个名为`...
Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...
Struts 2 输入校验
Struts2作为一款流行的Java Web开发框架,提供了一套强大的校验框架,使得开发者能够方便地对用户输入数据进行验证,确保数据的准确性和安全性。本文将深入探讨Struts2校验框架的应用,包括其核心概念、配置方式、...
struts2校验器,字段,非字段校验器的语法规则……
总结起来,Struts2的用户输入验证涉及客户端和服务器端两个层面,通过编程或配置两种方式实现。为了确保系统的健壮性,通常需要结合两者,提供多层防线。在编写验证代码时,应注重错误信息的友好性和安全性,以提供...
这个"Struts2 最基础快速入门"教程是初学者学习该框架的理想起点。 首先,让我们深入了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑主要由Action类执行。Action类是处理用户请求的中心组件,...
总结,Struts2的数据校验机制提供了强大的工具来确保用户输入的有效性,通过注解、XML配置或自定义校验器实现灵活的校验规则。通过正确处理校验错误并利用国际化功能,开发者可以创建出健壮且用户体验良好的Web应用...