数据验证:
客户端验证,服务器端验证,今天我们主要说服务器端验证
服务器端验证:
1:编程式验证:写代码验证:写死了,硬编码
package com.qianfeng.web.action;
import org.apache.commons.lang3.StringUtils;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.qianfeng.domain.User;
import com.qianfeng.service.UserService;
import com.qianfeng.service.impl.UserServiceImpl;
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user=new User();
private UserService userService = new UserServiceImpl();
/**
* 编程式验证:重写ActionSupport中的public void validate()方法
* Struts2内部封装了一个Map,Map的键就是表单上的name值
* 值就是错误信息
* 注意:动作类必须继承ActionSupport
* 默认validate()方法在所有动作方法执行之前执行
* 为了让不需要验证的不去执行validate()方法,解决方式有两种:
* 1:使用注解:@SkipValidation
* 2: 如果只有一个方法需要验证,其他的很多个方法都不需要验证,这时候可以
* 验证的方法名:validate+动作方法名(首字母要大写)(注意这里是动作方法名而不是动作名)
* @return
*/
@Override
public void validate() {
//验证用户名不能为空
if(StringUtils.isEmpty(user.getUsername())){
addFieldError("username","用户名不能为空");
}
}
//public void validateRegist() {
//验证用户名不能为空
//if(StringUtils.isEmpty(user.getUsername())){
//addFieldError("username","用户名不能为空");
//}
//}
public String regist(){
//判断用户是否存在
User user1=userService .finUserByUserName(user.getUsername());
if(user1!=null){
return "exists";}
//把用户添加到数据库
int result = userService.register(user);
if(result>0){
return "success";
}
return null;
}
@Override
public User getModel() {
return user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
2:声明式验证:写xml文件验证
声明式验证:通过xml文件实现验证
* 在动作类所在的包下创建xml文件
* 文件名有命名规则:动作类名-validation.xml,默认验证所有动作方法
* 希望某些方法不被验证:
* 1:加注释@SkipValidition
* 2:xml文件名改成 动作类名-动作名-validition.xml,注意这里是动作名而不是动作方法名
*
* 在xml文件中加入dtd约束 在E:\daliyuan\10-17\day52\struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib
* 中找到xwork-core.jar中找到xwork-validator-1.0.3.dtd找到
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
UserAction-regist-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- 基于字段的验证 -->
<field name="username">
<!-- 怎么验证 , struts内部已经定义了很多的验证器
requiredstring判断是否为null,或空字符串,去除空格
-->
<field-validator type="requiredstring">
<message>用户名不能为空</message><!-- -->
</field-validator>
</field>
<!-- 基于验证器的验证 -->
<validator type="requiredstring">
<!-- 使用注入的方式指明验证谁
private String actionName;
setActionName("action1");
验证器的位置:xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators
-->
<param name="fieldName">password</param>
<message>密码不能为空</message>
</validator>
</validators>