Struts的校验方式

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标签可能会有点没头绪。
    这张截图是我们自定义标签(你也可以自己去定义属于你自己的标签,网上一大堆方法,我是个渣审美也不高,所以只知道定义但是没有去完善自己的标签)
    这里写图片描述

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

    对应的写好对应的checkbox(用到了struts标签)
    这里写图片描述

    Id很重要因为用到了struts标签会有影响,跟一般的HTML,JSP不同,我有一同事因为没定义对应的js没反应。
    这里写图片描述

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

2框架验证

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


这里写图片描述

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标签的select写法)

这里写图片描述

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

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

猜你喜欢

转载自blog.csdn.net/feichangwurao/article/details/71391741
今日推荐