【问题标题】:Design question: Serverside form validation using ajax and Servlet [closed]设计问题:使用 ajax 和 Servlet 的服务器端表单验证 [关闭]
【发布时间】:2011-09-14 15:52:29
【问题描述】:

目前正在编写一个非常简单的 Web 应用程序,我正在从头开始构建框架(MVC 设计)。 我的代码没有问题,我的问题与设计有关。

我将解释我正在尝试做的场景。

计划执行以下操作:

在 JSP 中,我有一个用于用户输入的 html 表单和一个提交它的按钮。

点击提交按钮:

将对初始处理 Servlet 进行 ajax 调用,其任务是检查每个输入参数并验证它们(服务器端验证)。
我想使用 ajax 的原因是因为我希望能够在不实际刷新页面的情况下显示“输入验证后的错误消息”

在初始处理 Servlet 中:

如果有任何输入验证错误(例如:错误的电子邮件格式、无效日期等),则将响应与错误消息一起发送回父 JSP。

如果没有遇到验证错误,则将请求转发到下一个 Servlet,后者将依次处理请求并显示下一个 JSP。

我的问题:
假设表单输入中没有验证错误。 (这就是我的困境出现的地方)。

  1. 难道不会让第一个 JSP 的 ajax 调用等待某种响应吗?
  2. 我们不打算发回对 ajax 调用的响应可以吗? (我假设这些请求最终可能会超时。但我对此感到不舒服。)

  3. 有没有更好的方法来做我想做的事情?

PS:
单击提交按钮时,我不想对服务器进行两次单独的调用。下面解释

  1. Ajax 调用 1:验证表单。 (发回成功或错误消息)
  2. 如果 ajax 调用返回成功则正常提交表单。 (如果我使用这种效率低下的方法,我将不得不进行两次验证。)

【问题讨论】:

  • 我希望能安全地登录。 :)

标签: java ajax model-view-controller servlets


【解决方案1】:

别再造轮子了,别人已经解决了这个问题并且做得很好。

您可以使用jQuery to perform form validation;它支持基于浏览器的验证(数字/alpha/长度/正则表达式等),您还可以让它执行服务器端验证,例如通过将表单内容发送到 Web 服务并监听响应。

强烈建议在提交表单时在服务器端执行相同的验证,因为所有基于浏览器的/ajax 验证都可以通过简单地禁用 javascript 或手动构建 POST 请求来绕过表格。

【讨论】:

  • 是的,我这样做只是为了教育目的和编码的乐趣。 :) 感谢您的回复。
【解决方案2】:
  1. 是的,它将被挂起。从 Ajax 调用中返回 1 或其他内容,以为其继续开绿灯

  2. 从服务器资源的角度来看是可以的,但是您的用户将被挂起,直到达到超时。非常糟糕的做法。

  3. Struts 或 Spring 验证层将完全按照您的意愿行事。大多数主要框架都提供此功能

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2012-04-15
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多