1.客户端校验
可以绕过客户端跳转;:地址栏中直接输入JavaScript:myForm.submit()
不安全,代码在客户端执行,降低了服务器的压力
2.服务端校验:
1.编程式验证:
1.1要继承ActionSupport:
1.2.重写validate方法 该方法会在action业务方法之前调用该方法
方式一:编程式
* 重写validate方法,校验不通过使用addActionError方法传递提示信息
* 在不需要数据校验的方法上面加@SkipValidation注解,可以跳过验证
@Override
public void validate() {
if(user.getUsername() == null || "".equals(user.getUsername())){
System.out.println("用户名不能为空");
// 阻断继续提交 返回一个 input 对应action中的input的跳转页面
this.addActionError("用户名不能为空");
this.addFieldError("msg", "用户名不能为空");
}
}
在xml文件中要加上input字符串
<result name="input">/jsp/userlist.jsp</result>
3.让特定方法跳过validate方法验证
数据校验
* 方式二:配置文件方式校验
* 1.继承ActionSupport
* 2.创建XML文件,命名按照规范 【需要验证的类名 + '-validation'】
注解:
@SkipValidation
public String delete(){
System.out.println("delete");
return "list";
}
2.修改validate方法的名称
单独对某个方法进行数据校验
* 方法名的命名规范必须是 validate + 需要校验的方法名首字母大写
4.JSP页面获取校验信息:
<%@ taglib uri="/struts-tags" prefix="s" %>
<!-- 将addActionError方法中的信息输出 -->
<s:actionerror/>
用户名:<input name="userName" type="text"/>
<!-- 输出指定的错误信息,java中使用addFieldError设置错误信息 -->
<s:fielderror fieldName="userName"></s:fielderror><br/>
密码:<input name="password" type="password"/>
<!-- 输出指定的错误信息,java中使用addFieldError设置错误信息 -->
<s:fielderror fieldName="password"></s:fielderror><br/>
<input type="submit" value="提交"/>1.添加需要验证的配置文件:
命名规则:Action类名+'-validation'
2.拷贝对应的dtd代码
2.验证例子:
<validators>
<field name="userName">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="password">
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>密码长度只能在6-12位</message>
</field-validator>
</field>
</validators>3.验证特定方法:
1.注解:指定不需要验证的方法 //@SkipValidation
2.修改配置文件的名称 struts.xml文件中action中的name