- 浏览: 27446 次
- 性别:
- 来自: 潍坊
文章分类
最新评论
-
赤木晴子:
垃圾 没有jar包
struts2 velocity -
duronshi:
弱弱问下,如果我不用struts的标签<s:form而用 ...
struts2 基本校验 -
java_vm:
hyx0914 写道呵呵,这样写的话为什么不在前台页面就验证了 ...
struts2 基本校验 -
hyx0914:
呵呵,这样写的话为什么不在前台页面就验证了呢?
struts2 基本校验 -
chrislee1982:
还用这种方式验证?难道不知道可以使用xml配置或者annota ...
struts2 基本校验
Struts2对输入校验这方面采用的最基本方法是在每个Action里继承ActionSupport类,并且重写它的输入校验方法validate()。本示例中的RegisterAction代码中也显示,根据页面上输入的各种校验将所有不符合输入校验规则的错误信息都由ActionSupport类中另一个方法addFieldError方法将错误信息加入到表单错误信息,并且在输入数据的页面显示,而不会再由Action导航到注册成功页面。struts.xml也定义了1个名字为“input”的result,它表明将所有输入失败的错误信息导航到一个特定页面。还是将这个特定页面定义为数据输入的页面!
package com.example.struts.action; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { // Action类公用私有变量,用来做页面导航标志 private static String FORWARD = null; // 用户名属性 private String username; // 年龄属性 private int age; private String password; private String repassword; private String mobile; private Date birthday; // 取得用户名值 public String getUsername() { return username; } // 设置用户名值 public void setUsername(String username) { this.username = username; } // 取得年龄值 public int getAge() { return age; } // 设置年龄值 public void setAge(int age) { this.age = age; } // 执行注册方法 public String execute() throws Exception { FORWARD = "success"; return FORWARD; } // 校验方法,用来输入校验 public void validate() { // 校验是否输入用户名 if (getUsername() == null || getUsername().trim().equals("")) { addFieldError("username", "请输入用户名"); } // 校验是否输入生日 if(getBirthday()==null){ addFieldError("birthday", "请输入生日日期"); }else // 校验是否输入正确的生日日期 if(getBirthday().after(new Date())){ addFieldError("birthday", "请不要输入未来日期"); } // 校验是否输入密码 if (getPassword() == null || getPassword().trim().equals("")) { addFieldError("password", "请输入密码"); } // 校验是否输入确认密码 if (getRepassword() == null || getRepassword().trim().equals("")) { addFieldError("repassword", "请输入确认密码"); } // 校验输入的密码和确认密码是否一致 if (!getPassword().equals(getRepassword())) { addFieldError("repassword", "确认密码和密码输入不一致"); } // 校验输入的手机号码长度是否正确 if (getMobile().length()!=11) { addFieldError("mobile", "请输入正确的手机号码"); } // 校验输入的年龄是否正确 if (getAge()<1||getAge()>99) { addFieldError("age", "请输入您的真实年龄"); } } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
<struts> <!-- Action所在包定义 --> <package name="C08.1.1" extends="struts-default"> <!-- Action名字,类以及导航页面定义 --> <!-- 通过Action类处理才导航的的Action定义 --> <action name="Register" class="action.RegisterAction"> <result name="input">/jsp/register.jsp</result> <result name="success">/jsp/success.jsp</result> </action> <!-- 直接导航的的Action定义 --> <action name="index" > <result >/jsp/register.jsp</result> </action> </package> </struts>
输入校验的数据输入JSP文件:
validateXXX方法进行输入校验 <!-- 用户信息注册form表单 -->
<s:form action="Register">
<table width="60%" height="76" border="0">
<!-- 各标签定义 -->
<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密 码" />
<s:password name="repassword" label="密 码确认" />
<s:textfield name="birthday" label="生日"/>
<s:textfield name="mobile" label="手机号码"/>
<s:textfield name="age" label="年龄"/>
<s:submit value="注册" align="center"/>
</table>
</s:form>
// 执行注册方法
public String Register() throws Exception {
FORWARD = "success";
return FORWARD;
}
// 校验方法,用来输入校验
public void validateRegister() {
// 校验是否输入用户名
if (getUsername() == null || getUsername().trim().equals("")) {
addFieldError("username", "请输入用户名");
}
// 校验是否输入生日
if(getBirthday()==null){
addFieldError("birthday", "请输入生日日期");
}else
// 校验是否输入正确的生日日期
if(getBirthday().after(new Date())){
addFieldError("birthday", "请不要输入未来日期");
}
// 校验是否输入密码
if (getPassword() == null || getPassword().trim().equals("")) {
addFieldError("password", "请输入密码");
}
// 校验是否输入确认密码
if (getRepassword() == null || getRepassword().trim().equals("")) {
addFieldError("repassword", "请输入确认密码");
}
// 校验输入的密码和确认密码是否一致
if (!getPassword().equals(getRepassword())) {
addFieldError("repassword", "确认密码和密码输入不一致");
}
// 校验输入的手机号码长度是否正确
if (getMobile().length()!=11) {
addFieldError("mobile", "请输入正确的手机号码");
}
// 校验输入的年龄是否正确
if (getAge()<1||getAge()>99) {
addFieldError("age", "请输入您的真实年龄");
}
}
<!-- fielderror标签显示所有校验错误信息 --> <s:fielderror></s:fielderror> <!-- 用户信息注册form表单 --> <s:form action="Register!Register.action"> <table width="60%" height="76" border="0"> <!-- 各标签定义 --> <s:textfield name="username" label="用户名"/> <s:password name="password" label="密 码" /> <s:password name="repassword" label="密 码确认" /> <s:textfield name="birthday" label="生日"/> <s:textfield name="mobile" label="手机号码"/> <s:textfield name="age" label="年龄"/> <s:submit value="注册" align="center"/> </table> </s:form>
validate方法是对所有Action中方法的输入校验都进行校验,validateRegister方法只对Register方法进行校验。因此两者不能重复使用,都使用会造成两个方法都进行了校验的结果。执行顺序是先validateRegister后validate。如果validateRegister方法有特殊的输入校验则就会被validate方法“覆盖
首先第1个“Register”是RegisterAction中的方法名,一定要和方法名写成一样。而在“!”后的“Register”则是在struts.xml配置文件中定义的RegisterAction的映射里的“name”内容。黑体的内容表明该表单的Action是执行RegisterAction中的Register方法。如果在页面中直接写“!”后面的内容则表示执行的是RegisterAction中的execute方法
l 查找Action中是否有validateXXX方法。如果有则执行该方法。将校验产生的错误信息放置到ActionContext对象中。 l 查找Action中是否有validate方法。如果有则执行该方法。将校验产生的错误信息放置到ActionContext对象中。 l 查找视图界面是否有fielderror标签定义。如果有则返回到result为“input”的视图。同时ActionContext对象中有关的输入校验的错误信息也显示在该视图中。
- Struts2_18_validation_.rar (9.5 KB)
- 下载次数: 142
- Struts2_19_validateXXX_.rar (9.6 KB)
- 下载次数: 130
评论
前台页面验证始终是有弊端的。。。。
JS是可以被关闭的,不安全~
actionName!methodName.action
发表评论
-
struts2 与 jfreechart的整合
2010-07-26 09:00 1430显示效果: 先引入相关的jar包: jcommon- ... -
struts2 以注解的形式实现拦截器
2010-07-26 08:48 867package com.example.struts.acti ... -
struts2 国际化(中英文切换 占位符)
2010-07-26 08:13 2150package com.example.struts.acti ... -
struts2 基本校验(配置文件形式)
2010-07-26 07:56 1254利用配置文件进行校验主要是增加了一些xml文件来对具体表单 ... -
struts2 全局异常提示定义属性文件使用
2010-07-25 15:30 1218#类型转换提示 xwork.default.invalid. ... -
struts2 类型转换
2010-07-25 15:05 1064在Web项目开发中由于很多数据在页面上显示时候都是 ... -
struts2 freemarker
2010-07-25 14:32 1824freemarker和velocity一样也是一种可以 ... -
struts2 velocity
2010-07-25 14:00 1897velocity翻译成中文就是“速度”的意思,它 ... -
struts2 表单标签的使用
2010-07-25 13:39 1315combobox标签 ... -
struts2 OGNL 表达式及各种标签的使用
2010-07-25 13:24 2109Struts2中将 ... -
struts2 文件的上传和下载
2010-07-25 12:54 2124在Web项目中导入支持文件上传下载和IO输入输出的两个 ... -
struts2 拦截器的使用(继承方法拦截器)
2010-07-24 16:02 1906import com.opensymphony.xwork2. ... -
struts2 拦截器的使用(继承抽象拦截器)
2010-07-24 15:51 1146import com.opensymphony.xwork2. ... -
struts2 type 常量
2010-07-24 15:43 891Type类型值 作用说明 对应类 ... -
struts2学习总结( 使用ActionSupport进行校验)
2010-07-24 15:29 1501= Action类中ActionSupport使用 ... -
Strut2 学习总结(1)基本配置
2010-07-24 11:05 903开发所必备的基本jar包: struts2- ...
相关推荐
这篇博客“Struts2 基本校验(配置文件形式)”探讨了如何通过配置文件进行数据校验。 在Struts2中,数据校验可以采用编程式校验和声明式校验两种方式。声明式校验更易于维护,因为它将校验逻辑与业务逻辑分离,...
综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。
在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...
3. **拦截器校验**:Struts2提供了一系列的预定义拦截器,如Params拦截器,它可以执行基本的数据校验。开发者还可以自定义拦截器实现特定的校验逻辑。 数据校验后的错误信息处理也是关键。Struts2将错误信息存储在...
"04校验框架.doc"可能涵盖了Struts2校验框架的基本用法,包括XML配置、自定义校验规则、错误处理等方面的内容。而"03输入校验.doc"则可能侧重于实际的用户输入验证,探讨如何通过校验器确保用户提交的数据符合预期。...
除了上述基本的校验配置之外,Struts2校验框架还支持许多高级用法,如动态校验、自定义校验器等,以满足更加复杂的业务需求。 ##### 4.1 动态校验 动态校验是指根据运行时的数据来决定是否执行校验逻辑。例如,...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。在Struts2中,表单验证是非常重要的一个环节,它确保了用户输入的数据符合预设的规则,从而保证了应用程序的数据质量和安全性。本示例...
Struts2是一个流行的Java Web框架,它为开发者提供了一种结构化的MVC...通过深入研究“Struts2_1100_SimpleDataValiation”源码,你可以掌握Struts2数据校验的基本原理和实践技巧,为构建更健壮的Web应用打下坚实基础。
这个"struts2基本类库"可能包含了Struts2框架的核心组件、拦截器、动作类、配置文件和其他相关资源。下面我们将详细探讨Struts2框架中的关键知识点。 1. **Action接口与ActionSupport类**: Struts2的动作类通常...
在Struts2中,类型转换和数据校验是两个关键的特性,它们确保了用户输入的数据能够准确无误地被处理和验证,从而提高了应用的安全性和可靠性。 **类型转换(Type Conversion)** 在Struts2中,类型转换是自动进行...
2. Struts的校验框架,如何通过`validation.xml`定义和实现数据验证规则。 3. 数据库交互,可能涉及到JDBC或ORM框架如Hibernate来操作用户数据。 4. 用户注册和登录的业务逻辑,包括数据验证、错误处理以及成功后的...
这个项目可能包含了Action编写、视图渲染、用户交互、数据验证等基本功能,是学习和理解Struts2框架的一个很好的实践案例。通过分析和运行这个项目,可以深入理解Struts2的工作原理及其在实际应用中的运用。
通过学习和实践这个“struts2简单例子”,开发者可以逐步掌握Struts2的基本用法,为更复杂的Web应用开发打下坚实基础。记得不断探索Struts2的高级特性,如OGNL表达式、插件扩展等,以提升应用的灵活性和可维护性。
Struts2的校验分为两个阶段:字段校验和动作校验。字段校验在Action实例创建后立即执行,验证单个字段的值;动作校验则在所有字段都设置好之后进行,通常用于验证多个字段之间的关联关系。 七、包的总结 Struts2的...
首先,了解Struts2的基本架构至关重要。Struts2的核心是Action类,它是业务逻辑处理的入口点。在实现增删改查(CRUD)操作时,每个Action通常对应一种特定的数据操作,例如CreateAction、ReadAction、UpdateAction和...
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...
这个"struts2登录,以及输入校验的demo"是一个基础的实例,它展示了如何在Struts2中实现用户登录功能,并进行输入验证,确保数据的正确性和安全性。 首先,我们来看Struts2的核心组成部分: 1. **Action类**:这是...