手动编码方式:
1.数据校验包含两种方式,第一种是手动编码完成数据校验方式,第二种是通过配置文件完成数据校验方式(重点掌握这种方式)。 2.手动编码校验方式 * 开发的步骤 > 步骤一: 封装数据 > 步骤二: 实现校验Action ,必须继承ActionSupport 类 > 步骤三: 覆盖validate方法,完成对Action的业务方法 数据校验 this.addFieldError (ActionSupport提供) > 步骤四: 在jsp中 通过 <s:fieldError/> 显示错误信息 * 针对的是Action中所有的方法进行校验。 > 让Action继承ActionSupport类,重写ActionSupport类中的validate()方法,在该方法中完成数据校验。 * 针对的是Action中某个方法完成校验。 > 手动在Action中编写一个方法,方法名称是validate7要校验的方法的名称() 例如:public void validateAdd(){ } * Action中有一个save的方法,只校验save方法。 * validateSave() -- 使用该方法去校验save的方法 * 数据校验测试的JSP页面代码 <h3>手动数据校验</h3> <form action="${ pageContext.request.contextPath }/reg1.action" method="post"> 用户名:<input type="text" name="username" /><br/> 密 码:<input type="password" name="password" /><br/> <input type="submit" value="注册"/><br/> </form> 3.总结手动的校验的方式 * 手动校验分成两种 * 针对的是Action类中的所有的方法 * 重写validate()方法,该方法是属于ActionSupport类,必须要继承该类。 * 针对的是Action类中的某一个方法的校验。 * 要继承ActionSupport类,校验某个方法,需要自己定义一个新的方法 * 方法名称是规定:public void validateRegist(){ } * 编写的是Action都需要继承ActionSupport类 * 注意:代码校验 不适用于 大型项目, 流程数据复杂时,开发量和维护量 都会很大
demo3.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h3>手动数据校验</h3> <s:fielderror/> <form action="${ pageContext.request.contextPath }/reg4.action" method="post"> 用户名:<input type="text" name="username" /><br/> 密 码:<input type="password" name="password" /><br/> <input type="submit" value="注册"/><br/> </form> </body> </html>
RegistAction:
package demo3; import com.opensymphony.xwork2.ActionSupport; /** * 手动的校验方式 * @author mjl * */ public class RegistAction extends ActionSupport{ //获取到表单输入的数据 private String username; private String password; public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } /** * 手动校验数据的方法 * 校验Action类中的所有的方法(不符合开发的需求) */ /*public void validate() { //判断用户名是否为空 if(username==null || username.trim().isEmpty()){ //需要提示信息 this.addFieldError("username", "用户名不能为空"); } }*/ /** * 手动校验,只校验add方法 */ public void validateAdd(){ if(username==null || username.trim().isEmpty()){ //需要提示信息 this.addFieldError("username", "用户名不能为空"); } } //添加用户 public String add(){ System.out.println("执行了"); return NONE; } //查询用户 public String sel(){ System.out.println("查询了"); return NONE; } }
xml文件方式:
RegistAction2:
package demo3; import com.opensymphony.xwork2.ActionSupport; /** * 使用xml的方式进行数据的校验 * @author mjl * */ public class RegistAction2 extends ActionSupport{ private String username; private String password; //获取值(拦截器想数据校验,获取到数据) 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 add(){ System.out.println("执行了。。。"); return NONE; } }
RegistAction2-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"> <!-- 校验的规则 type要选择的规则:用户名是不能为空的,空格也不行 --> <field-validator type="requiredstring"> <!-- 提示的信息 --> <message>亲,用户名是不能为空的2!</message> </field-validator> </field> <!-- 校验密码 --> <field name="password"> <field-validator type="stringlength"> <!-- 规定密码的长度 --> <param name="minLength">4</param> <param name="maxLength">8</param> <message>亲,密码的长度需要在4到8位2!</message> </field-validator> </field> </validators>