我正在使用Spring MVC来构建我的Web应用程序,我有一个关于验证我在URL中收到的参数的问题。 检测无效参数并向用户显示错误的最佳方法是什么?
假设我有一个“查看用户个人资料”页面。显示的配置文件基于URL中指定的用户ID参数。我可能会转到以下地址查看ID为92的用户的个人资料:
我创建了一个ProfileControlller
对象,它将执行以下操作:
id
对象request
参数
UserProfile
个对象UserProfile
对象添加到模型ModelAndView
如果用户输入有效的ID号,那该工作正常。我的UserProfile
对象使用JSP加载并完美显示。但是如果有人将用户ID -30294
传递到我的页面会怎么样?如果ID无效,我的数据访问层将只返回null
对象,但我想向用户显示友好的错误消息。在JSP代码中检查null
UserProfile
对象真的是最好的解决方案吗?
因为我是Spring的新手,所以我不确定。我喜欢Validator
类可以与FormController
个对象一起使用的方式,如果有任何帮助的话。
答案 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方式,并显示更具体的错误消息。