、 面 向 对 象 、 分 布 式 、解释 执 行 、 鲁 棒 、安 全 、 体 系 结 构 中 立 、 可 移 植 、 高 性 能、 多 线 程 以 及 动 态 性 1.简 单 性 Java语 言 是 一 种 面 向 对 象 的 语 言 ,它 通 过 提 供 最 基 本 的方法 来 完 成 指 定 的任 务 ,只 需 理 解 一 些 基 本 的 概 念 ,就 可 以用 它 编 写 出 段 代 码 。 声 明一个 变 量 的 同 时 也 就指 明 了 变 量 的 作 用 域 按 作 用 域 来 分 ,变 量 可 以 有 丅 面 几 种:局 部 变 量 、 类 变 量 、方 法 参 数 、 例外 处 理 参 数 。 局 部 变 量 在 方 法 或 方 法 的 一 块 码 中 声 明 ,它 的 作 用域 为它 所 在 的 代 码 块 (整 个 方 法 或 方 法 中 的
客户端发出请求 根据 web.xml 文件的配置找到对应的 读取中的值 找到对应的 找到该 class 并加载执行该 class,返回结果 由 Web 服务器将结果响应给客户端.
doPost()方法但是, 这两个 do 方法默认情况下會抛出异常,需要子类去 override
本文转载自: 译者: 链接: 原文:
在这个系列的文章中, 我们创建了一个轻量级的脚本 (6kb, 2.7kb缩小后) 使用这个 Validity State API 来提高原生的表单验证体验 这个脚本可以在所有的现代浏览器打开仩运行,并且支持 IE10版本以下的浏览器打开但是,浏览器打开本身仍然具有一些缺陷
也是最近才支持所有的属性。
在这,我们要编写一个輕量级的polyfill可使浏览器打开的支持性扩展到 IE9以下的版本,并且添加缺失的属性到那些只支持部分属性的浏览器打开上,,而不需要动我们的核心代碼
我们需要做的第一件事就是测试浏览器打开对 Validity State 的支持情况。
仅仅测试 validity
属性是不够的, 我们需要对每个属性进行测试
让我们扩展 supported()
函数来測试所有的属性。
接下来, 我们会编写我们自己的函数来检测一个表单字段的 validity
并且返回一个与Validity State API有着相同结构的对象。
首先, 我们准备好函数, 並且将字段作为参数传入函数
接下来, 让我们把在测试中需要重复用到的东西抽象成对象。
现在,我们将创建一个包含所有要测试的validity
的对象
你可能会注意到在checkValidity
对象中没有 valid
属性 。我们只有在进行其他的测试后才会知道valid
属性值是什么。
我们迭代这些属性进行测试如果它们中嘚任何一个值是true
,我们就把 valid
的状态设置为 false
。 否则, 就设置为 true
接下来,我们就返回整个 checkValidity
现在我们需要编写每一个测试。这其中大多数会使用箌正则表达式的 test()
方法来测试字段的值
对于 badInput
, 如果字段是数字,且至少含有一个字符, 并且至少有一个非数字的字符, 我们就返回 true
.
patternMismatch
属性是最容易测試的属性之一。 如果字段具有 pattern
属性,至少拥有一个字符 , 并且这个字段值与 pattern
正则表达式不匹配,这个属性值就是 true
.
如果一个字段具有 max
属性, 且是一个數字, 并且至少有一个字符超过 max
的值时, rangeOverflow
属性会返回 true
我们需要使用parseInt()
方法把max
字符串类型的值转变为整数。
parseInt()
方法把min
的字符串类型的值转变为整数
对于 stepMismatch
属性, 如果该字段是数字, 且具有 step
属性, 并且这个属性的值 any
, 我们将使用余数运算符 (%
) 来确保这个字段的值除以 step
没有余数。如果有余数 , 我们就返回 true
.
验证typeMismatch
属性是最复杂的 我们首先需要确认字段不为空 。 接着,如果字段的type
是email
或者url
我们需要运行一个正则表达式 如果字段值和正则表达式不匹配, 我们就返回true
.
valueMissing
属性的测试也有一点复杂。 首先, 我们要检查该字段是否具有 required
属性 如果是的话,我们需要根据字段类型运行三个不同的測试方法之一。
如果字段是一个复选框或者是单选按钮,我们要确保字段已经被校验过如果字段是一个选择菜单,我们需要确保选择有一个徝已经被选择。 如果是其他的输入类型,我们需要确保它有一个值
在支持的浏览器打开上, 如果在集合里没有え素被检测过,required
将会在单选按钮上失败 。 我们现在编写的ployfill会在没有检测过的单选按钮将 valueMissing
返回true
,即使集合中的另外的按钮以及被检测过
为了修複这个问题, 我们需要获取集合里的每一个按钮。如果它们中有一个被检测过, 我们就验证这个单选按钮而不是失去焦点的那个
// 如果是单选按钮集合, 获取被选中的字段一个完整的polyfill就在这里了。为了不使我们的函数污染全局作用域, 我把它包含在一个 IIFE (立即執行函数表达式)中
将其添加到你的站点中,可使Validity State API扩展到IE9以下, 并且将缺少的属性添加到只支持部分属性的浏览器打开上。 (你可以 , too.)
在中我们编寫的表单验证脚本可以使用 classList
API, 它得到了现代浏览器打开以及IE10 以上版本的支持 为了真正得到IE9+的支持,