Struts2数据有效性的校验的两种方式,Struts2数据校验(案例+解析)
发布日期:2021-06-29 15:02:03 浏览次数:3 分类:技术文章

本文共 5238 字,大约阅读时间需要 17 分钟。

一、数据的校验,Struts2提供了两类数据校验

前台校验:JS校验、

JS的校验不是必须的,JS的校验是可以被绕行的、JS提升用户体验。

后台校验:编码校验。

必须的校验

在这里插入图片描述

执行拦截器的时候向FieldError当中添加错误信息

1、Struts2提供的第一种数据校验(手动编码的方式进行校验)

(1)JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %>
Insert title here

登录页面

用户名:
密码:
(2)struts.xml

在这里插入图片描述

(3)LoginAction1

继承ActionSupport类

抽象validate方法:针对Action当中所有的方法。
在这个方法当中可以编写校验代码。

package com.itzheng.web.action.demo1;import com.opensymphony.xwork2.ActionSupport;/* * 数据的校验 * 继承了ActionSupport之后才有一些功能:数据的校验,国际化,设置错误的信息! */public class LoginAction1 extends ActionSupport{
private String username; private String password; public void setUsername(String username) {
this.username = username; } public void setPassword(String password) {
this.password = password; } @Override public String execute() throws Exception {
// TODO Auto-generated method stub return NONE; } //数据校验的方法: @Override public void validate() {
// TODO Auto-generated method stub //判断用户名不能为空 username.trim() 去掉空格 if(username == null || username.trim().length() == 0 ) {
//阻止execute方法执行。 this.addFieldError("username", "用户名不能为空!"); } //判断密码不能为空 if(password == null || password.trim().length() == 0) {
this.addFieldError("password", "密码不能为空"); } }}

页面效果

在这里插入图片描述
当Action当中有很多方法的时候,以现在这种情况都会走validate,然后再执行这些方法,因此需要

(4)针对Action当中某个方法进行校验:例如Action当中的add方法或者modify的方法。

编写一个与validate 这个方法格式相同的方法,但是方法的名称要写validate+要校验的方法名称‘’

validateAdd();//校验add方法validateModify();//校验Modify方法

在这里插入图片描述

2、Struts2提供的第二种数据校验(XML配置文件的方式进行校验)

Action当中需要提供get方法

2.1针对Action当中所有的方法

(1)创建JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %>
Insert title here

登录页面

用户名:
密码:
(2)LoginAction2
package com.itzheng.web.action.demo1;import com.opensymphony.xwork2.ActionSupport;public class LoginAction2 extends ActionSupport {
private String username; private String password; public void setUsername(String username) {
this.username = username; } public void setPassword(String password) {
this.password = password; } // 为使XML当中username 和 password获得对应的值,需要get方法 public String getUsername() {
return username; } public String getPassword() {
return password; } @Override public String execute() throws Exception {
System.out.println(username); System.out.println(password); return super.execute(); }}

在Action所在的包下创建一个与Action类名相同的+(-validation.xml)

在这里插入图片描述

(3)在XML当中写入

首先找到对应的文件(头信息)在xwork-core-2.3.7.jar有一个xwork-validator-1.0.3.dtd

在这里插入图片描述
校验规则 requiredstring就是校验规则:从com.opensymphony.xwork2.validator.validators,default.xml当中可以查看校验的规则
在这里插入图片描述
在这里插入图片描述
进行配置

LoginAction2-validation.xml

用户名不能为空!(XML)
密码不能为空!(XML)
(4)配置

在这里插入图片描述

(5)测试

在这里插入图片描述

2.2针对Action当中某一个方法进行校验:

在Action所在订单包下创建一个文件与Action类名相同-要访问的方法所对应的action的名称-validation.xml

创建execute的文件

LoginAction2-login2-validation.xml

表示拦截的是LoginAction2当中的login2请求

LoginAction2-login2-validation.xml

6
12
密码需要在6-12位之间!

在这里插入图片描述

在这里插入图片描述

3、Struts2提供的校验器列表

在这里插入图片描述

4、综合案例

用户名不能为空!
密码不能为空!
6
12
密码需要在6-12位之间!
两次密码输入不一致
18
40
年龄输入不合法!必须是18-40岁之间的!
邮箱格式不正确
11}]]>
手机号格式有误
1974/01/01
2002/01/01
生日不合法!
package com.itzheng.web.action.demo5;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegistAction extends ActionSupport {
private String username; private String password; private String repassword; private int age; private String email; private String phone; private Date birthday; 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 getRepassword() {
return repassword; } public void setRepassword(String repassword) {
this.repassword = repassword; } public int getAge() {
return age; } public void setAge(int age) {
this.age = age; } public String getEmail() {
return email; } public void setEmail(String email) {
this.email = email; } public String getPhone() {
return phone; } public void setPhone(String phone) {
this.phone = phone; } public Date getBirthday() {
return birthday; } public void setBirthday(Date birthday) {
this.birthday = birthday; } @Override public String execute() throws Exception {
// TODO Auto-generated method stub return NONE; }}

转载地址:https://code100.blog.csdn.net/article/details/106993720 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Struts2的自定义校验规则
下一篇:Struts2的标签库大全(案例+用法+解析)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月02日 20时39分36秒