在本教程中,我们将展示如何验证用户在 Web 应用中输入的数据。 验证是一项常见的任务,并包含在 Java Web 框架(如 Stripes,Ninja 框架或 Play 框架)中。 在本教程中,我们将使用简单的自定义验证过滤器来验证数据。 来源可从作者的 Github 存储库中获得。
过滤器是一个对象,它对对资源的请求或对资源的响应(或两者)执行过滤任务。 过滤器以doFilter()
方法执行过滤。
筛选器可用于各种任务,例如身份验证,日志记录,数据压缩,图像转换或加密。 在我们的示例中,我们使用过滤器来验证输入数据。
在我们的应用中,我们有一个 HTML 表单,该表单接受用户的输入。 该表单具有两个输入标签:用户名和电子邮件。 输入正在使用过滤器进行验证。 为了验证电子邮件格式,我们使用 Apache Commons Validator。 该项目是使用 NetBeans IDE 中的 Maven 构建的。 我们将应用部署在 Tomcat 上。
Figure: Structure
该图显示了 NetBeans 中的项目结构。 我们有三个 JSP 页面,两个 Java 类和两个 XML 配置文件。
pom.xml
这是pom.xml
构建文件。 它包含 JSTL 和 Apache Commons Validator 依赖关系的依赖关系。
context.xml
在context.xml
文件中,我们指定应用的上下文路径。 它用于唯一标识应用。
index.jsp
index.jsp
是应用的入口点。 它具有带有两个字段的 HTML 表单。 在这些字段中输入的值将由应用验证。
提交表单后,将调用Greet
Servlet。 在到达 Servlet 之前,过滤器将处理请求。
hello.jsp
当输入数据通过验证测试时,将显示hello.jsp
页面。 显示输入的数据。
valError.jsp
如果验证失败,则显示valError.jsp
。 它显示了存储在errMsg
属性中的错误消息。 该属性在验证过滤器中设置。
ValidationFilter.java
数据验证在ValidationFilter
类中执行。
@WebFilter
注释声明一个 servlet 过滤器。 过滤器将应用于指定的 URL 模式。 在我们的例子中,它在Greet
servlet 调用之前被调用。
过滤器实现Filter
接口。
实际工作以doFilter()
方法完成。
通过getParameter()
方法,我们获得了 HTML 表单发送的数据。
使用 Apache Commons Validator 的EmailValidator
,我们检查电子邮件格式的有效性。
如果数据未能通过验证,则使用RequestDispatcher
将处理分派到错误页面。 否则,请求将继续其行进到目的地 servlet。
Greeting.java
Greeting
servlet 仅将请求与RequestDispatcher
一起调度到hello.jsp
页面。
Figure: Error message
如果电子邮件格式不正确,则应用将以错误消息响应。
这是验证过滤器教程。 我们已经使用 JSTL,JSP,Apache Commons Validator,Tomcat 和 Maven 构建了一个 Web 应用。