标签:
一、为什么要使用struts2的validate验证框架
:使用struts2的验证框架,能够提高客户端提交的数据的安全性。通过验证,确保保存进数据库的信息是正确的
二、使用struts2的validate框架?
: 1.我们需要配置struts2项目的最基本的jar包。(validate验证框架是有"xwork-core"包提供的)
: 2.使用struts2自带的validate验证有两种方法
a):使用代码实现 验证功能 (也就是重写ActionSupport中的validate()方法) 在validate方法中进行编写我们需
要的验证功能 这里需要提几点的就是:
1.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate
2.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉 (这是为了避免
引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之
后再调用它 这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)
3.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的
action中的 执行方法名称(首字母大写)
附上一段代码:
- struts.xml:
- <action name="*/*" class="*" method="test">
-
-
- </action>
-
- 对应的action类中的片段:
- public String test(){
-
- return "";
- }
-
- public void validateTest()
-
- {
-
- }
-
- @override
- Public String execute()
- {
-
- return "";
- }
-
- @override
- public void validate()
-
- {
-
- }
b):使用xml文件进行配置验证功能(建议使用xml配置文件进行validate的验证)
: 1.需要使用到xwork-core包下的 xwork-validate.dtd(版本根据项目进行选择,不过大体相同)
: 2.关于使用Xml进行验证 的两种情况: 全局验证 和局部验证
a):关于全局验证
全局就是针对整个action对象进行xml验证
当我们使用全局验证时候需要在 action对象的同目录下创建一个xml配置文件
文件名是由 : action对象的名称+(-validation.xml)
b):关于局部验证
局部验证是针对action对象中的某一个方法进行xml验证
使用局部验证的时候同样要在 action对象的同目录下创建一个xml配置文件
不过使用局部验证需要在struts.xml 中进行配置
代码如下:(struts.xml)
- <constant name="struts.enable.DynamicMethodInvocation" value="false" />
-
- <package name="struts2" extends="struts-default">
-
- <action name="register"class="org.viancent.action.RegisterAction">
- <result name="success">/show.jsp</result>
- <result name="input"> /register.jsp</result>
- </action>
-
- <action name="register_*" class="org.viancent.action.RegisterAction"method="{1}">
- <result name="success">/show.jsp</result>
- <result name="input"> /register.jsp</result>
- </action>
- </package>
//如果我们需要访问action类中的test方法 则表单上可以这样写 <s:action="register_test">
所以该validate框架的xml配置文件名就是:action对象名+(-register_test-validation.properties)
:3.使用struts2的validate框架有两种验证类型
a):在服务端进行验证。
b):在客户端进行验证。
: 1.如果需要使用validate框架在客户端进行验证的话,一定要使用 struts2 的s标签
并且<s:form> 表单的theme不能为:simple
- 下面给出一个实例:
- action对象:
- package org.viancent.action;
- 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 String users;
- public String getUsers() {
- return users;
- }
-
- public void setUsers(String users) {
- this.users = users;
- }
-
- 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;
- }
-
- @Override
- public String execute() throws Exception {
-
- return super.execute();
- }
-
-
- public String test() throws Exception {
- System.out.println("test method invoked!");
-
- return super.execute();
- }
-
-
- public void validateTest() {
- System.out.println("validateTest method invoked!");
- }
-
- @Override
- public void validate() {
- System.out.println("validate method invoked!");
- if (null == this.getPassword()
- || "".equals(this.getPassword()) || null ==
- this.getRepassword()
- || "".equals(this.getRepassword())) {
- return;
- }
-
- if (!this.getPassword().equals(this.getRepassword())) {
- this.addFieldError("repassword",
- "repassword should be same password");
- }
- }
- }
struts.xml的信息:
-
- <struts>
- <constant name="struts.enable.DynamicMethodInvocation" value="false" />
-
- <package name="struts2" extends="struts-default">
- <action name="register" class="org.viancent.action.RegisterAction">
- <result name="success">/show.jsp</result>
- <result name="input"> /register.jsp</result>
- </action>
- <action name="register_*" class="org.viancent.action.RegisterAction"
- method="{1}">
- <result name="success">/show.jsp</result>
- <result name="input"> /register.jsp</result>
- </action>
- </package>
- </struts>
局部validate框架的xml配置信息(RegisterAction-register_test-validation.xml)
-
- <validators>
-
- <field name="username">
- <field-validator type="requiredstring">
- <param name="trim">true</param>
- <message>username should be notblank!</message>
-
- </field-validator>
- <field-validator type="stringlength">
- <param name="minLength">6</param>
- <param name="maxLength">10</param>
- <message>username should be not between${minLength} and ${maxLength}</message>
- </field-validator>
- </field>
-
- <field name="age">
- <field-validator type="required">
- <message>age should be not blank!</message>
- </field-validator>
-
- <field-validator type="int">
- <param name="min">1</param>
- <param name="max">150</param>
- <message>age should be between ${min} and ${max}</message>
- </field-validator>
- </field>
-
- <field name="birthday">
- <field-validator type="required">
- <message>birthday should be not blank!</message>
- </field-validator>
-
- <field-validator type="date">
- <param name="min">1990-10-10</param>
- <param name="max">2011-3-14</param>
- <message>birthday should be between ${min} and ${max} </message>
- </field-validator>
- </field>
- </validators>
全局validate框架的xml配置信息(RegisterAction-validation.xml)
-
- <validators>
- <field name="users">
- <field-validator type="requiredstring">
- <message>users should be not blank!</message>
- </field-validator>
-
- <field-validator type="stringlength">
- <param name="minLength">6</param>
- <param name="maxLength">10</param>
- <message>users should be between ${minLength} and ${maxLength}</message>
- </field-validator>
- </field>
- </validators>
view 界面的jsp信息:
- register.jsp:
-
- <body style="text-align: center">
- <s:form action="register_test">
- <s:textfield name="username" id="username" label="username"></s:textfield>
- <s:password name="password" id="password" label="password"></s:password>
- <s:password name="repassword" id="repassword" label="repassword"></s:password>
- <s:textfield name="age" id="age" label="age"></s:textfield>
- <s:textfield name="birthday" id="birthday" label="birthday"></s:textfield>
- <s:submit></s:submit>
- <s:reset></s:reset>
- </s:form>
-
- <s:form action="register" validate="true">
- <s:textfield name="users" label="users" id="users"></s:textfield>
- <s:submit></s:submit>
- </s:form>
- </body>
show.jsp:
-
- <body>
- <s:property value="username"/>
- <s:property value="password"/>
- <s:property value="age"/>
- <s:property value="birthday"/>
- <s:property value="users"/>
- </body>
这里说明一下 validate xml验证的规则
<field name=""></field> //自动校验器
<validator type=""></validator> //非自动校验器
验证规则:
requiredstring 验证是属性是否为("") 不需要设置参数
required 验证是属性是否为(null) 不需要设置参数
int 验证属性是否为整数 可以这是在什么数之间 需要参数 (min,max)
stringlength 验证字符串的长度 可以设置字符串需要的长度 需要参数(minLength,maxLength)
date 验证对象是否在某时段 可以设置时间段 需要参数(min,max)
regex 使用正则验证
其他具体可以参看xwork-core包中的com.opensymphony.xwork2.validator.validators 下面的类以及
xwork-default.xml
struts2:字段校验和非字段校验代码示例
标签:
原文地址:http://www.cnblogs.com/Coolkaka/p/5966764.html