生活随笔
收集整理的這篇文章主要介紹了
struts2 数据校验
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
通過struts2中延續(xù)自xwork框架的validation.xml配置方式進(jìn)行數(shù)據(jù)校驗,因struts2 下存在三種請求參數(shù)的注入方式,固按照不同注入方式對validation.xml的配置進(jìn)行總結(jié)。
?
一、Action類下直接參數(shù)的校驗配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2
</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class></filter><filter-mapping><filter-name>struts2
</filter-name><url-pattern>/*
</url-pattern></filter-mapping> View Code - bean文件:因直接在action類下進(jìn)行注入及驗證,不涉及bean文件,固略;
- RegistServiceDao文件存儲注冊業(yè)務(wù)邏輯,略;
- Action文件:
package com.actionpublic class RegAction
extends ActionSupport{private String name;private String password;private String gender;private String email;private String address;private User userInfo;//setter和getter方法略;public User setInfo(){User info =
new User();info.setname(this.name);info.setpassword(this.password);info.setgender(this.gender);info.setemail(this.email);info.setaddress(this.address);return info;}public String regist(){RegistServiceDao rsd =
new RegistServiceDao();userInfo =
setInfo();if(rsd.regist(usrInfo)){return "success"
;}else{return "input"
;}}
} View Code <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="default" extends="struts-defualt"><action name="regist" class="com.action.RegistAction"><result name="success">success.jsp
</result><result name="INPUT">regist.jsp
</result></action></package>
</struts> View Code ****
- validation.xml文件配置校驗器,命名規(guī)則為<ActionClassName>-<aliasName>-validation.xml,文件必須放在action文件的同目錄下;
RegActoin-regiest-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><feild name="name"><feild-validator type="requiredString"><message>用戶名不能為空
</message></feild-validator></feild><feild name="password"><feild-validator type="requiredString"><message>密碼不能為空
</message></feild-validator></feild><feild name="gender"><feild-validator type="requiredString"><message>性別不能為空
</message></feild-validator></feild><feild name="email"><feild-validator type="email"><message>油箱格式不正確
</message></feild-validator></feild></validators> View Code ?
二、DomainModel的注入方式下的數(shù)據(jù)校驗:
- web.xml配置文件無變化,同第一種;
- bean文件,包含setter和getter的完整bean文件:
package com.entitypublic class User{private String name;private String password;private String gender;private String email;private String address;public User(){}public User(String name,String password,String gender,String email,String address){this.name =
name;this.password =
password;this.gender =
gender;this.email =
email;this.address =
address;}//setter和getter方法略
}
View Code - RegistServiceDao文件存儲注冊業(yè)務(wù)邏輯,略;
- Action文件,利用User對象注入數(shù)據(jù),添加user的getter和setter方法,同時調(diào)用字段值時亦通過對象(user.getName()):
package com.actionpublic class RegAction
extends ActionSupport{//無需實例化Userprivate User user;public User getUser(){return user;}public void setUser(User user){this.user =
user;}public String regist(){RegistServiceDao rsd =
new RegistServiceDao();if(rsd.regist(user)){return "success"
;}else{return "input"
;}}
} View Code - ?struts配置文件配置Action,同第一種;
********
- validation.xml文件配置配置校驗器,校驗user對象的字段需通過visitor校驗器,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><field name="user"><field-validator type="visitor"><param name="context">abc
</param><param name="appendPrefix">true
</param></field-validator></field>
</validators> View Code - User-abc-validation.xml文件配置visitor校驗,命名規(guī)則為類似Action的校驗配置文件,文件位置亦必須與實體類同一目錄下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><feild name="name"><feild-validator type="requiredString"><message>用戶名不能為空
</message></feild-validator></feild><feild name="password"><feild-validator type="requiredString"><message>密碼不能為空
</message></feild-validator></feild><feild name="gender"><feild-validator type="requiredString"><message>性別不能為空
</message></feild-validator></feild><feild name="email"><feild-validator type="email"><message>油箱格式不正確
</message></feild-validator></feild></validators> View Code !!
- jsp文件改動,因DomainModel下的注入方式,對參數(shù)設(shè)定的字段名稱需要加對象實例的前綴(user.name):
<s:form action = "regist" method = "post"><s:textfield name="user.name" label="用戶名"/><s:password name="user.password" label="密碼"/><s:texfield name="user.gender" label="性別"/><s:texfield name="user.email" label="油箱"/><s:texfield name="user.address" label="地址"/><s:submit/>
</s:form> View Code ?
三、ModelDriven注入下的數(shù)據(jù)校驗,與域模型相比,主要是Action及jsp注入?yún)?shù)發(fā)生變化,同時需要對visitor校驗器參數(shù)進(jìn)行調(diào)整:
- web.xml配置文件無變化;
- bean文件無變化;
- RegServiceDao文件無變化;
- Action文件,需做以下修改:
- 聲明ModelDriven接口(泛型接口);
- 需要聲明getModel方法,同時對User類進(jìn)行實例化;
- 無需添加bean對象的getter和setter方法;
package com.actionpublic class RegAction
extends ActionSupport
implements ModelDriven<User>
{//無需實例化Userprivate User user;public User getModel(){if(user!=
null){return user;}else{user =
new User();return user;}}public String regist(){RegistServiceDao rsd =
new RegistServiceDao();if(rsd.regist(user)){return "success"
;}else{return "input"
;}}
} View Code ********
- validation.xml文件配置校驗器,同第二種,使用visitor校驗器,需要修改如下兩個參數(shù):
- field標(biāo)簽的name屬性為:model;
- field下param標(biāo)簽的name為"appendPrefix" 屬性的值修改為false(字段不再需要添加bean對象前綴);
- User-abc-validation.xml配置校驗器無變化;
!!
- jsp頁面需做簡單修改,接收參數(shù)不需添加bean對象前綴
<s:form action = "regist" method = "post"><s:textfield name="name" label="用戶名"/><s:password name="password" label="密碼"/><s:texfield name="gender" label="性別"/><s:texfield name="email" label="油箱"/><s:texfield name="address" label="地址"/><s:submit/>
</s:form> View Code ?
轉(zhuǎn)載于:https://www.cnblogs.com/caden1225/p/5990977.html
總結(jié)
以上是生活随笔為你收集整理的struts2 数据校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。