Struts2输入验证学习笔记.docx
- 文档编号:25270892
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:13
- 大小:115.37KB
Struts2输入验证学习笔记.docx
《Struts2输入验证学习笔记.docx》由会员分享,可在线阅读,更多相关《Struts2输入验证学习笔记.docx(13页珍藏版)》请在冰豆网上搜索。
Struts2输入验证学习笔记
Struts2输入检验
在请求将表单数据提交到服务器的时候,首先Struts2会对表单的String类型的数据进行类型转换,转换时若发生错误,则会被记录到Struts2的Action中的FiledError中。
可以在页面里增加struts2的标签:
<%@taglibprefix=”s”uri=”/struts-tags”%>然后, fielderror/>就可以取出错误了。 当然你也可以让处理请求的Action去继承ActionSupport类,因为里面提供了一个validate()方法,你可以在你的Action中override这个方法,然后将你自己的数据检验写在validate()方法内。 下面,就以一个小例子来说明: 首先,写一个register.jsp页面 代码如下: <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@taglibprefix="s"uri="/struts-tags"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http: //www.w3.org/TR/html4/loose.dtd">
fielderror/>
页面的效果图如下:
然后,写RegisterAction,燃气继承ActionSupport类:
代码如下:
packagecom.test.action;
importjava.util.Calendar;
importjava.util.Date;
importcom.opensymphony.xwork2.ActionSupport;
publicclassRegisterActionextendsActionSupport{
privateStringusername;
privateStringpassword;
privateStringrepassword;
privateintage;
privateDatebirthday;
privateDategraduate;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetRepassword(){
returnrepassword;
}
publicvoidsetRepassword(Stringrepassword){
this.repassword=repassword;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicDategetBirthday(){
returnbirthday;
}
publicvoidsetBirthday(Datebirthday){
this.birthday=birthday;
}
publicDategetGraduate(){
returngraduate;
}
publicvoidsetGraduate(Dategraduate){
this.graduate=graduate;
}
@Override
publicStringexecute()throwsException{
returnSUCCESS;
}
@Override
publicvoidvalidate(){
if(null==username||username.length()<6||username.length()>10){
this.addFieldError("username","usernameinvalid");
}
if(null==password||password.length()<6||password.length()>10){
this.addFieldError("password","passwordinvalid");
}elseif(!
repassword.equals(password)){
this.addFieldError("password","twopasswordshouldbesame.");
}
if(age<0||age>150){
this.addFieldError("age","ageinvalid");
}
if(null==birthday){
this.addFieldError("birthday","birthdayinvalid");
}
if(null==graduate){
this.addFieldError("graduate","graduateinvalid");
}
if(null!
=birthday&&null!
=graduate){
Calendarcbirthday=Calendar.getInstance();
cbirthday.setTime(birthday);
Calendarcgraduate=Calendar.getInstance();
cgraduate.setTime(graduate);
if(!
cbirthday.before(cgraduate)){
this.addFieldError("graduate","birthdayshouldbebeforegraduate");
}
}
}
}
接下来,我们在struts.xml文件中去配置action:
最后,我们写出success.jsp
代码如下:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
运行的截图如下:
注:
现在看到的都是我们自己写的验证,系统当然也是有验证的,假如我们填入如下数据
结果:
其中Invalidfieldvaleforfield“birthday”.
Invalidfieldvaleforfield“graduate”.
这两个错误信息,是struts2在进行类型转换时,自动进行的验证信息。
现在,我们想把系统的验证错误信息替换掉,让其更加友好
①全局配置
首先,我们在struts.xml文件中加入如下信息:
然后,我们在struts.xml文件同路径目录下建立message.properties。
文件里加入如下内容:
xwork.default.invalid.fieldvalue={0}\u8FD9\u662F\u5168\u5C40\u914D\u7F6E
②局部配置
首先,在RegisterAction.java相同目录下,建立同名属性文件——RegisterAction.properties文件,在文件中添加如下内容:
invalid.fieldvalue.age=\u8FD9\u662F\u5C40\u90E8\u9519\u8BEF\u914D\u7F6E\uFF0C\u5168\u5C40\u662F\u5426\u88AB\u66FF\u6362
invalid.fieldvalue.birthday=\u8FD9\u662F\u5C40\u90E8\u9519\u8BEF\u914D\u7F6E\uFF0C\u5168\u5C40\u662F\u5426\u88AB\u66FF\u6362
运行时截图:
输入如下信息:
结果:
小结:
遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面
类型转换与输入校验的流程
1.首先Struts2对客户端传来的数据进行类型转换
2.类型转换完毕后再进行输入校验
3.如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)
注意:
如果类型转换不成功,也同样要进行输入校验
Struts2中使用struts标签时,struts会默认地生成表格布局
如果我们布局时,不想使用struts2的默认布局,可以将 form>标签的theme属性改为simple,这时,struts2,就会采用类似与HTML的布局。 Struts2中也提供了类似与struts1提供的dispatcherAction的功能。 只需在struts.xml文件中的action属性配置: 这时,生成的RegisterAction实例就会调用abc()方法 当然,不同的处理方法,struts2为其对应不同的验证方法,如: abc()方法的验证方法为validateAbc()方法,调用时,会先调用validateAbc()方法,然后调用validate()方法(如果validate方法存在),最后执行abc()方法。 addFieldError()方法,添加Map对象 addActionError()方法,添加的是Collection对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 输入 验证 学习 笔记