欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts的校验方式

程序员文章站 2022-04-29 12:33:28
...

Struts的校验
Struts验证:JS,框架验证,Actionsupport验证
JS验证不用多说,要注意的是使用Struts标签时注意该赋值ID,name什么的别忘记。
框架验证,通过对类写一个对应的校验XML配置文件,文件中把条件限制写进去还有对应的提示语
Actionsupport验证,struts有对应的validate()和validateXXX()来代码校验,他会先执行对应的validate方法,再执行对应的业务方法(validateXXX()是校验XXX方法比validate优先级别高且也是最常用,例如:validateConfirm()对应校验的是Confirm(),也就是说执行Confirm方法前先进行校验)

  1. 前台校验

    这事靠JS来实现的,但我们这边探讨的是struts2这边,页面会使用到struts
    标签甚至是自定义的标签(有的时候将项目样式统一风格,会自定义标签使用,我们项目就使用了自己定义的标签对head,body,form进行风格统一。),其实差别很小很小的的,只不过你有时候用的是那种简单的HTML时间长不了解struts标签可能会有点没头绪。
    这张截图是我们自定义标签(你也可以自己去定义属于你自己的标签,网上一大堆方法,我是个渣审美也不高,所以只知道定义但是没有去完善自己的标签)
    Struts的校验方式

    我们选择一个关于checkbox的校验js来做例子(就是一个声明点击checkbox,表示以看完声明,同意点击checkbox,如果不点击会弹框提示),首先我们写两个触发事件,一个是reset,一个是提交,由提交来处理checkbox校验
    Struts的校验方式

    对应的写好对应的checkbox(用到了struts标签)
    Struts的校验方式

    Id很重要因为用到了struts标签会有影响,跟一般的HTML,JSP不同,我有一同事因为没定义对应的js没反应。
    Struts的校验方式

    还有就是js书写,注意写法

2框架验证

根据Action类写对应的配置文件,命名方式如下:Action,对应的配置文件ActionName-validate.xml


Struts的校验方式

Action:
    package com.pb.web.action;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    import com.opensymphony.xwork2.ActionSupport;
    import com.pb.entity.User;
    public class UserAction3 extends ActionSupport {
    private User user;

    public String register() throws Exception {
        System.out.println("=========完成注册信息======");
        return SUCCESS;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
    }

对应的配置文件(在同一级目录下配置文件)

    <?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="user.username">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>用户名不能为空!</message>
    </field-validator>
    <field-validator type="stringlength">
    <param name="minLength">4</param>
    <param name="maxLength">16</param>
    <param name="trim">true</param>
    <message>用户名必须为${minLength}至${maxLength}个字符!,当前为${user.username}</message>
    </field-validator>
    </field>
    <!--密码  -->
    <field name="user.password">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>密码不能为空!</message>
    </field-validator>
    <field-validator type="stringlength">
    <!--去掉前后的空格  -->
    <param name="trim">true</param>
    <param name="minLength">6</param>
    <param name="maxLength">20</param>
    <message>密码必须为${minLength}至${maxLength}个字符,当前为${user.password}</message>
    </field-validator>
    </field>
    <!--年龄  -->
    <field name="user.age">
    <field-validator type="required">
    <param name="trim">true</param>
    <message>年龄不能为空</message>
    </field-validator>
    <field-validator type="int">
    <param name="trim">true</param>
    <param name="min">1</param>
    <param name="max">200</param>
    <message>年龄为${min}---${max}岁之间</message>
    </field-validator>
    </field>
    <field name="user.email">
    <field-validator type="requiredstring">
    <param name="trim">true</param>
    <message>邮箱不能为空</message>
    </field-validator>
    <field-validator type="email">
    <param name="trim">true</param>
    <message>邮箱格式不正确!</message>
    </field-validator>
    </field>
    </validators>
对应的jsp
    `这里写代码片`<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>

<!--  判断字段是否有错误信息-->
<s:if test="hasFieldErrors()">
<h1 align="center">输出错误字段信息</h1>
<div align="center" style="color:blue;">
使用s:fielderror输出全部的错误信息
<s:fielderror />
</div>
</s:if>
<h1>ActionName-validation.xml较验</h1>
<!-- 必须加上namespace不然不起作用-->
<s:form action="register3.action" method="post" namespace="/" >
<s:textfield label="用户名"  name="user.username"/>
<s:password  label="密码" name="user.password"/>
<s:textfield label="年龄" name="user.age" />
<s:textfield  label="邮箱" name="user.email"/>
<s:submit  value="提交" /><s:reset value="重置" /><br/>
</s:form>
<s:debug/>
</body>
</html>

3ActionSupport
Struts支持这种验证validateXXX()和validate(),觉得还是validateXXX()这种更好看起来更直观。
来看一下JSP,注意validate=’true’,这样针对Confirm验证方法ValidateConfirm就可以生效

Struts的校验方式
Struts的校验方式

太长了就不贴了(注意一下struts标签的select写法)

Struts的校验方式

顺便贴一下工具类inputchecker工具类里面的方法

Struts的校验方式
Struts的校验方式
Struts的校验方式
里面方法太多了,有很多值得看一下,比如检查是否是输入的只有字母大小写等,这些都很有用。
(这个博客太不友好,我已经都把东西写好放在word上,竟然不能弄过来,图片必须先上传无语。影响体验,希望能改进直接贴图上去。)