二十一 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:

 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>

效果如下:

原文地址:https://www.cnblogs.com/ltfxy/p/9846448.html

时间: 2024-10-01 03:02:49

二十一 Struts的数据校验两种方式:手动编码和xml校验的相关文章

【代码笔记】向服务器传JSON数据的两种方式

一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数组合成一个数组,然后由JSONKit把字典转为字符串 NSDictionary* jsonDic = [NSDictionary dictionaryWithObjectsAndKeys:@"李华",@"name",@"女&quo

[微信小程序] 微信小程序下拉滚动选择器picker绑定数据的两种方式

微信小程序下拉滚动选择器picker绑定数据的两种方式  本地数据绑定和wx.request(OBJECT) json数据绑定 1.本地数据绑定 (对象数组) Page({ data:{ //户型 这是一个本地的对象,然后绑定到页面上 pic_array: [ { id: 13, name: '1室1厅1卫' }, { id: 14, name: '1室2厅1卫' }, { id: 15, name: '2室1厅1卫' }, { id: 16, name: '3室1厅2卫' }, { id: 1

关于Mysql删除表数据的两种方式对比

1.delete from table_name 一行一行删除,只删除表数据,auto_increament仍停留在最后一天数据的下一个值. 2.truncate table_name 快捷删除表数据.先删除整个表,然后重新建表结构.auto_increament从1开始. 关于Mysql删除表数据的两种方式对比,布布扣,bubuko.com

向服务器传json数据的两种方式

接触到了向服务器传JSON数据,那么怎么把参数以JSON的形式,传到服务器呢.下面来说说,json字符串的得到方法.一共有两种方式来得到Json的字符串.当然,向服务器上传,不能传字符串,是要转成NSData的,也就是二进制的形式.这个在此不讨论,只说,怎么得到json的字符串. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数

php处理无限极分类数据的两种方式

开发过程中,经常会遇到处理无限分类数据,这里就介绍一下处理无限分类数据的两种方式,有不对的地方,还望多多指正. //测试数据 $array=array( ['id'=>1,'parent_id'=>0,'name'=>1], ['id'=>2,'parent_id'=>0,'name'=>2], ['id'=>3,'parent_id'=>1,'name'=>3], ['id'=>4,'parent_id'=>1,'name'=>4]

oracle数据库删除数据的两种方式

当表中的数据不需要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有delete和truncate两种方式,下面分别介绍: 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为'001'的数据:delete from users where userid='001'; (2)无条件删除整个表数据 语法格式:delete  table_name; 如:删除

Spark Streaming 读取 Kafka 数据的两种方式

在Spark1.3之前,默认的Spark接收Kafka数据的方式是基于Receiver的,在这之后的版本里,推出了Direct Approach,现在整理一下两种方式的异同. 1. Receiver-based Approach val kafkaStream = KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] ) 2. Direct Approach (No Receivers) v

oracle查询前N条数据的两种方式

在实际用途中,常常会要求取表中前几条纪录,就有以下两种方式来获取数据: 先排序后查询: SELECT * FROM (SELECT * FROM 表 m ORDER BY create_time DESC) WHERE ROWNUM <= 10 , 先查询后排序: SELECT *  FROM 表 m  WHERE ROWNUM <= 10 ORDER BY create_time DESC; 原文地址:https://www.cnblogs.com/zoushiyu/p/9746550.ht

浏览器原生 form 表单POST 数据的两种方式

我们在提交表单的时候,form表单参数中会有一个enctype的参数.enctype指定了HTTP请求的Content-Type. 常用有两种:application/x-www-form-urlencoded和multipart/form-data. application/x-www-form-urlencoded: 窗体数据被编码为名称/值对,并且将提交的数据进行urlencode.默认情况下,我们所有的表单提交都是通过这种默认的方式实现的. multipart/form-data: 窗体