在Spring MVC网站中验证URL参数的最佳方法是什么?

时间:2009-01-29 03:03:38

标签: validation spring spring-mvc

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

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

  

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

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

  1. id对象
  2. 获取request参数
  3. 从我的数据库加载UserProfile个对象
  4. UserProfile对象添加到模型
  5. 使用我的模型和“查看用户配置文件”JSP构建ModelAndView
  6. 如果用户输入有效的ID号,那该工作正常。我的UserProfile对象使用JSP加载并完美显示。但是如果有人将用户ID -30294传递到我的页面会怎么样?如果ID无效,我的数据访问层将只返回null对象,但我想向用户显示友好的错误消息。在JSP代码中检查null UserProfile对象真的是最好的解决方案吗?

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

2 个答案:

答案 0 :(得分: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发行版中,检查samples目录中的jpetstore应用程序。查找org.springframework.samples.jpetstore.web.spring.SignonController以获取应用程序的简单示例。

答案 1 :(得分:0)

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

但这实际上取决于您的域名和要求。我写的最近的一个应用程序是一个简单的社交网络,用户无法选择停用他们的帐户或更改他们的用户名。因此,他们可以请求无效个人资料的唯一方法是使用URL进行调整。我不打算创建一个更具体的错误页面,只是为了向他们表明他们正在纠缠错误。

但是,如果您允许用户停用其帐户,则可能需要采用yawmark方式,并显示更具体的错误消息。

相关问题