二十一 Struts的数据校验两种方式:手动编码和xml校验
Posted Island
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十一 Struts的数据校验两种方式:手动编码和xml校验相关的知识,希望对你有一定的参考价值。
数据的校验:
一、前台校验:JS校验
- JS的校验不是必须的,JS可以被绕行,可以提升用户体验
二、后台校验:编码校验
- 必须的校验
三、校验的方式:
- 手动编码(不建议使用)
- 配置文件(支持)
手动编码的校验方式:
- 继承ActionSupport,在这个类中写校验方式。
- 重写validate方法,validate方法在其他业务方法之前执行
- 针对某个方法校验,需要在方法名应为:validate+方法名,如validateAdd() validateModify() validateExecute()
前端JSP:
Action类:
1 public class LoginAction1 extends ActionSupport { 2 private String username; 3 private String password; 4 5 public void setUsername(String username) { 6 this.username = username; 7 } 8 9 public void setPassword(String password) { 10 this.password = password; 11 } 12 13 @Override 14 public String execute() throws Exception { 15 System.out.println(username); 16 System.out.println(password); 17 return NONE; 18 } 19 20 //数据校验的方法 21 @Override 22 public void validate() { 23 //判断用户名不为空,把左右两边空格去掉字符串长度为0(说明用户名全是空格) 24 if( username== null || username.trim().length() == 0){ 25 //阻止execute方法执行 26 this.addFieldError("username","用户名不能为空"); 27 } 28 //判断密码不为空 29 if(password == null || password.trim().length() == 0 ){ 30 this.addFieldError("password","密码不能为空"); 31 } 32 } 33 public void validateExecute(){//针对某个方法校验 34 if(password.length() <6 || password.length()>12){ 35 this.addFieldError("password", "密码应该在6到12位之间"); 36 } 37 } 38 }
效果:
配置文件xml的校验方式(建议使用):必须提供所有属性的get方法
- 针对所有方法的校验:
- 针对某一个方法校验:
针对所有方法的校验:
1 在action所在包下创建一个与action类名相同的 LoginAction2-validation.xml:
<field-validator type=""> type属性依据源码:/com/opensymphony/xwork2/validator/validators/default.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!DOCTYPE validators PUBLIC 4 "-//Apache Struts//XWork Validator 1.0.3//EN" 5 "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> 6 <!-- 约束在xworkjar包下面,type参考default.xml --> 7 <validators> 8 <field name="username"> 9 <field-validator type="requiredstring"> 10 <message>用户名不能为空!(XML)</message> 11 </field-validator> 12 </field> 13 14 <field name="password"> 15 <field-validator type="requiredstring"> 16 <message>密码不能为空!(XML)</message> 17 </field-validator> 18 </field> 19 </validators>
2 Action类:
1 package com.itheima.struts2.demo4; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class LoginAction2 extends ActionSupport { 6 private String username; 7 private String password; 8 //提供get方法,用于XML的调用 9 public void setUsername(String username) { 10 this.username = username; 11 } 12 public String getUsername() { 13 return username; 14 } 15 public String getPassword() { 16 return password; 17 } 18 public void setPassword(String password) { 19 this.password = password; 20 } 21 22 23 @Override 24 public String execute() throws Exception { 25 System.out.println(username); 26 System.out.println(password); 27 return NONE; 28 } 29 }
前端JSP同上所述
效果页面:
针对Action某一个方法校验:
在Action所有包下创建一个文件与Action类名-要访问的方法对应的Action名称-validation.xml
例如:<action name="login2" class="com.itheima.struts2.demo4.LoginAction2" method="execute"></action>
创建校验execute的文件:
LoginAction2-login2-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="password"> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">12</param> <message>密码需要在6-12位之间</message> </field-validator> </field> </validators>
效果如下:
:
以上是关于二十一 Struts的数据校验两种方式:手动编码和xml校验的主要内容,如果未能解决你的问题,请参考以下文章