二十一 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校验的主要内容,如果未能解决你的问题,请参考以下文章

Struts2之数据校验

Struts2输入校验(编码方式)

Struts(二十一):类型转换与复杂属性集合属性配合使用

(二十一)Struts2 数据标签

struts2 之 struts2数据校验

(转)struts2:数据校验,通过XWork校验框架实现(validation.xml)