【问题标题】:Best way to validate URL parameters in Spring MVC website?在 Spring MVC 网站中验证 URL 参数的最佳方法?
【发布时间】:2009-01-29 03:03:37
【问题描述】:

我正在使用 Spring MVC 构建我的 Web 应用程序,并且我有一个关于验证我在 URL 中收到的参数的问题。 检测无效参数并向用户显示错误的最佳方法是什么?

假设我有一个“查看用户资料”页面。显示的配置文件基于 URL 中指定的用户 ID 参数。我可能会去以下地址查看 ID 为 92 的用户的个人资料:

http://www.somedomain.com/profile.html?id=92

我创建了一个ProfileControlller 对象,它将执行以下操作:

  1. request对象中获取id参数
  2. 从我的数据库中加载一个UserProfile 对象
  3. UserProfile 对象添加到模型中
  4. 使用我的模型和“查看用户配置文件”JSP 构造一个ModelAndView

如果用户输入了有效的 ID 号,则可以正常工作。我的UserProfile 对象使用JSP 完美加载和显示。但是如果有人将用户 ID -30294 传递到我的页面怎么办?如果 ID 无效,我的数据访问层将简单地返回一个 null 对象,但我想向用户显示一条友好的错误消息。在 JSP 代码中检查 null UserProfile 对象真的是最好的解决方案吗?

由于我是 Spring 新手,我不确定。我喜欢 Validator 类可以与 FormController 对象一起使用的方式,如果这有帮助的话。

【问题讨论】:

    标签: validation spring spring-mvc


    【解决方案1】:

    如果 DAO 返回 null,则只需为错误页面返回 ModelAndView。

    例子:

    UserProfile profile = userProfileDao.findUserProfileById(userId);
    if (profile == null) {
        return new ModelAndView("Error", "message", "Invalid user ID");
    } else {
        // process accordingly.
    }
    

    在 Spring 2.5 发行版中,检查示例目录中的 jpetstore 应用程序。找到 org.springframework.samples.jpetstore.web.spring.SignonController 以获取应用程序的简单示例。

    【讨论】:

      【解决方案2】:

      出于避免编写大量代码的愿望,我这样做的方式是让数据访问层或服务层抛出异常。然后它由 Web 控制器抛出,并转到已在 web.xml 文件中配置的一般错误页面,该页面会显示“找不到页面”之类的内容。

      但这真的取决于您的领域和要求。我最近写的一个应用程序是一个简单的社交网络,用户无法选择停用他们的帐户或更改他们的用户名。因此,他们可以请求无效配置文件的唯一方法是使用 URL。我不打算创建一个更具体的错误页面,只是为了向他们展示他们是在胡闹。

      但是,如果您确实允许用户,例如,停用他们的帐户,您可能需要采取类似 yawmark 的方法并显示更具体的错误消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 2018-05-16
        • 2010-12-02
        相关资源
        最近更新 更多