在本教程中,我们将展示如何验证用户在 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 应用。