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代码

3.验证框架


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


相关文章: