- 浏览: 97443 次
- 性别:
- 来自: 北京
最新评论
-
zhaolianyang:
leftcopychenhx 写道&是在什么情况作为逻 ...
JAVA 面试32问 -
zhaolianyang:
Mybeautiful 写道第二十六,当一个线程进入一个对象的 ...
JAVA 面试32问 -
leftcopychenhx:
&是在什么情况作为逻辑运算符呢
JAVA 面试32问 -
Mybeautiful:
第二十六,当一个线程进入一个对象的一个synchronized ...
JAVA 面试32问 -
zhaolianyang:
dayaolili 写道 那就换个有激情有动力的工作吧!换个适 ...
如何在工作中保持旺盛的状态???
Struts2的输入校验续一
说明:
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面。
类型转换与输入校验的流程:
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验
一、修改注册页面register.jsp:
说明:年龄输入的为字母格式的字符是,struts2会无法进行自动的类型转换,所以会提示“Invalid field value for field "age". ”这样的错误,这种提示信息是struts2默认的提示错误信息,是不够友好的,所以要自己定义新的提示信息,把struts默认的替换掉:
二、在src根目录下创建一个全局性的国际化的文件message.properties(这种方法还是有缺陷的):
其中:xwork.default.invalid.fieldvalue是固定的,0表示的是哪个属性发生类型转化错误就显示哪个的属性。
三、在struts.xml文件中进行配置,代码如下:
四、要在对应的Action的目录com.test.Action下创建局部的国际化的验证文件RegisterAction.properties:
注意:在正式的项目开发中一般使用的都是局部的类型转化验证。
五、用struts2标签来创建注册页面,重新创建一个struts2标签的注册页面register2.jsp:
六、修改下struts.xml的文件:
七、完善验证的信息RegisterAction.properties:
八、因为验证有不合适的地方(重复),所以修改一下RegisterAction.java的验证:
最终的文件如下:
说明:
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面。
类型转换与输入校验的流程:
1. 首先Struts2对客户端传来的数据进行类型转换
2. 类型转换完毕后再进行输入校验
3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:如果类型转换不成功,也同样要进行输入校验
一、修改注册页面register.jsp:
<body> <table align="center" width="40%"> <tr> <td style="color:red"> <s:fielderror></s:fielderror> </td> </tr> </table> <form action="register.action" method="post"> <table align="center" width="40%" border="1"> <tr> <td>username:</td> <td><input type="text" name="username" value="${username}"></td> </tr> <tr> <td>password:</td> <td><input type="password" name="password"></td> </tr> <tr> <td>repassword:</td> <td><input type="password" name="repassword"></td> </tr> <tr> <td>age:</td> <td><input type="text" name="age"></td> </tr> <tr> <td>birthday:</td> <td><input type="text" name="birthday"></td> </tr> <tr> <td>graduation:</td> <td><input type="text" name="graduation"></td> </tr> <tr> <td><input type="submit" value=" submit "></td> <td><input type="reset" value=" reset "></td> </tr> </table> </form> </body>
说明:年龄输入的为字母格式的字符是,struts2会无法进行自动的类型转换,所以会提示“Invalid field value for field "age". ”这样的错误,这种提示信息是struts2默认的提示错误信息,是不够友好的,所以要自己定义新的提示信息,把struts默认的替换掉:
二、在src根目录下创建一个全局性的国际化的文件message.properties(这种方法还是有缺陷的):
xwork.default.invalid.fieldvalue={0} error
其中:xwork.default.invalid.fieldvalue是固定的,0表示的是哪个属性发生类型转化错误就显示哪个的属性。
三、在struts.xml文件中进行配置,代码如下:
<constant name="struts.custom.i18n.resources" value="message"> </constant>这里的message就是上面定义的message.properties文件。
四、要在对应的Action的目录com.test.Action下创建局部的国际化的验证文件RegisterAction.properties:
invalid.fieldvalue.age=age conversion error还是age的类型转化为例的。
注意:在正式的项目开发中一般使用的都是局部的类型转化验证。
五、用struts2标签来创建注册页面,重新创建一个struts2标签的注册页面register2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'register2.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:form action="register"> <s:textfield name="username" label="username"></s:textfield> <s:password name="password" label="password"></s:password> <s:password name="repassword" label="repassword"></s:password> <s:textfield name="age" label="age"></s:textfield> <s:textfield name="birthday" label="birthday"></s:textfield> <s:textfield name="graduation" label="graduation"></s:textfield> <s:submit value=" submit "></s:submit> </s:form> </body> </html>
六、修改下struts.xml的文件:
<action name="register" class="com.test.action.RegisterAction"> <result name="success">/success.jsp</result> <result name="input">/register2.jsp</result> </action>
七、完善验证的信息RegisterAction.properties:
invalid.fieldvalue.age=\u5e74\u9f84\u4fe1\u606f\u8f93\u5165\u4e0d\u6b63\u786e invalid.fieldvalue.birthday=\u751f\u65e5\u65e5\u671f\u8f93\u5165\u9519\u8bef invalid.fieldvalue.graduation=\u6bd5\u4e1a\u65f6\u95f4\u65e5\u671f\u8f93\u5165\u9519\u8bef
八、因为验证有不合适的地方(重复),所以修改一下RegisterAction.java的验证:
package com.test.action; import java.util.Calendar; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private String username; private String password; private String repassword; private int age; private Date birthday; private Date graduation; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getGraduation() { return graduation; } public void setGraduation(Date graduation) { this.graduation = graduation; } @Override public String execute() throws Exception { return SUCCESS; } @Override public void validate() { if(null == username || username.length() < 6 || username.length() > 10){ this.addFieldError("username", "username invalid"); } if(null == password || password.length() <6 || password.length() > 10){ this.addFieldError("password", "password invalid"); } else if(null == repassword || repassword.length() < 6 || repassword.length() > 10){ this.addFieldError("repassword", "repassword invalid"); } else if(!password.equals(repassword)){ this.addFieldError("password", "two passwords not the same"); } if(age <= 0 || age > 150){ this.addFieldError("age", "age should be between 1 and 150"); } // if(null == birthday){ // this.addFieldError("birthday", "birthday invalid"); // } // if(null == graduation){ // this.addFieldError("graduation", "graduation invalid"); // } if(null != birthday && null != graduation){ Calendar c1 = Calendar.getInstance(); c1.setTime(birthday); Calendar c2 = Calendar.getInstance(); c2.setTime(graduation); if(!c1.before(c2)){ this.addFieldError("birthday", "birthday should be before graduation"); } } } }
最终的文件如下:
- struts2.rar (3.2 MB)
- 下载次数: 5
发表评论
-
struts2学习笔记十九(第19讲.Struts2深入探索 续)
2013-01-31 01:26 829Struts2应用开发详解 第十九讲 Struts2 深入 ... -
struts2学习笔记十八(第18讲.Struts2深入探索)
2013-01-26 00:23 8301、在src目录下创建属性文件名struts.propert ... -
struts2学习笔记十七(第17讲.Struts2的国际化续)
2012-06-01 00:46 1262struts2的国际化: 1.页面的国际化,也就是jsp的国际 ... -
struts2学习笔记十六(第16讲.Struts2的国际化)
2012-05-24 23:35 854struts2学习笔记十六(第16讲.Struts2的国际化) ... -
struts2学习笔记十五(第15讲.Struts2的文件上传和下载续三)
2011-02-11 16:56 949Struts2的文件上传和下载续三 功能:用户可以自定义上传文 ... -
struts2学习笔记十四(第14讲.Struts2的文件上传和下载续二)
2011-01-21 16:00 1372Struts2的文件上传和下载续二 说明:使用struts2的 ... -
struts2学习笔记十三(第13讲.Struts2的文件上传和下载续)
2011-01-19 18:04 988Struts2的文件上传和下载续 接上面未完成的功能。 一、首 ... -
struts2学习笔记十二(第12讲.Struts2的文件上传和下载)
2011-01-18 14:57 1353Struts2的文件上传和下载 ... -
struts2学习笔记十一(第11讲.Struts2的核心 拦截器续)
2011-01-14 16:33 1054Struts2的核心 拦截器续 说明:拦截器的主要作用就是拦截 ... -
struts2学习笔记十(第10讲.Struts2的核心 拦截器)
2011-01-13 17:47 1003Struts2的核心 拦截器 一、修改RegisterAct ... -
struts2学习笔记九(第9讲.Struts2的校验框架 续)
2011-01-12 18:11 1115Struts2的校验框架 续 struts2同样支持客户端的 ... -
struts2学习笔记八(第8讲.Struts2的校验框架)
2011-01-12 15:44 960第8讲.Struts2的校验框架 之前的验证方式是stru ... -
struts2学习笔记七(第7讲.Struts2的输入校验续二)
2011-01-11 18:07 1086Struts2的输入校验续二 主要介绍addActionErr ... -
struts2学习笔记五(第5讲.Struts2的输入校验)
2011-01-07 18:36 1072Struts2的输入校验 数据校验是建立在类型转换的基础之上的 ... -
struts2学习笔记四(第4讲.Struts2的类型转换续)
2011-01-06 23:25 1067struts2中的局部类型转换 新的需求:用户需要同时增加三 ... -
struts2学习笔记三(第3讲.Struts2的类型转换)
2011-01-05 17:31 1095struts2中的局部类型转换 其中一个主要的就是使用逗号将 ... -
struts2学习笔记二(第2讲.Struts2入门与配置续)
2011-01-05 16:36 966接上面未完成的功能:判断输入的用户名和密码是否正确。 一、创建 ... -
struts2学习笔记一(第1讲.Struts2入门与配置)
2011-01-05 00:12 1405struts2学习笔记一(第1讲.Struts2入门与配置) ...
相关推荐
在第九讲中,我们将深入探讨Struts2的校验框架,这是一个非常重要的功能,它有助于确保输入数据的准确性和完整性,防止非法数据导致的系统异常。 在传统的Java web开发中,数据验证通常在服务器端进行,如Servlet或...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
在Struts2的学习过程中,第五讲主要探讨的是输入验证,这是确保应用程序数据安全和准确性的关键步骤。输入验证通常发生在客户端和服务器端,防止恶意数据的提交,并确保用户输入的数据符合预设的格式和规则。 首先...
本讲主要探讨Struts2的校验框架,它提供了对用户输入数据进行验证的功能,确保数据的有效性和安全性。 在传统的MVC模式中,数据验证通常在控制器或模型层进行,但在Struts2中,校验逻辑被移到了专门的校验框架中,...
在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...
**六.Struts2的属性驱动和模型驱动** 1. **属性驱动**:Action类中的字段直接对应请求参数,Struts2自动将请求参数值填充到Action字段。 2. **模型驱动**:使用一个公共对象作为模型,Action类持有这个模型的引用,...
### 传智播客Struts2全程学习笔记 #### Struts2的优点 1. **无侵入式设计**:与Struts1相比,Struts2的设计更为先进,它不依赖于Servlet API或Struts API,这使得Struts2更加灵活且易于集成到其他环境中。在代码...
本学习笔记主要探讨了Struts2中的校验器(Validator)和校验框架,帮助开发者理解如何有效地实现数据验证,确保应用程序的健壮性。 首先,我们来看Struts2的校验框架。这个框架提供了强大的功能,可以对用户输入...
- **lib**: 包含 Struts2 框架的核心库和第三方插件库。 - **src**: 包含 Struts2 框架的全部源代码。 #### 五、深入理解 Struts2 - **灵活度**: - Struts2 的知识点虽然分散,但其灵活性和扩展性非常强。 - **...
这个"Struts2_学习笔记"包含了关于Struts2框架的深入学习资料,是理解并掌握Struts2核心概念和技术的关键。 Struts2的核心设计理念是模型-视图-控制器(MVC)架构模式,它简化了Java Web开发,将业务逻辑、数据展示...
本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...
Struts2是一个强大的MVC框架,它在Java Web开发中被广泛应用。相比于它的前身Struts1.x,Struts2提供了一系列改进和增强的功能。在本文中,我们将深入探讨Struts2的核心组件——Action,以及如何配置和使用它来构建...
Action校验则确保用户输入符合预期,可以通过编程方式或XML配置实现,Struts2提供了丰富的校验器来简化这一过程。 #### 文件上传与国际化支持 文件上传在Web应用中十分常见,Struts2提供了内置的支持,可以轻松...
Struts2是Java开发中的一个强大的MVC(Model-View-Controller)框架,它极大地简化了基于Java的企业级应用程序的构建过程。作为Apache软件基金会的开源项目,Struts2是在Struts1的基础上,结合WebWork的技术发展起来...