2

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

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

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

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

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

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

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

4

2 回答 2

5

如果 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 以获取应用程序的简单示例。

于 2009-01-29T03:40:42.310 回答
0

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

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

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

于 2009-01-29T20:16:12.263 回答