使用SpringMVC验证URL的最佳实践?
我正在为我的web应用程序使用SpringMVC。 我需要验证用户输入的URL是否有效,我想知道Spring中是否有什么东西可以为我做基本检查(例如以http/https开头,有域名等) ValidationUtils只包含非常基本的检查,我知道我可以在validate()方法中编写一个正则表达式,但是如果有人已经这样做了,我宁愿避免:)使用SpringMVC验证URL的最佳实践?,spring,spring-mvc,Spring,Spring Mvc,我正在为我的web应用程序使用SpringMVC。 我需要验证用户输入的URL是否有效,我想知道Spring中是否有什么东西可以为我做基本检查(例如以http/https开头,有域名等) ValidationUtils只包含非常基本的检查,我知道我可以在validate()方法中编写一个正则表达式,但是如果有人已经这样做了,我宁愿避免:) 谢谢使用spring拦截器: 过去,我一直在利用。只需在表单bean中用约束注释适当的字段 如果您以前从未使用过Hibernate的ORM部分,请不要让它吓到
谢谢使用spring拦截器:
过去,我一直在利用。只需在表单bean中用约束注释适当的字段 如果您以前从未使用过Hibernate的ORM部分,请不要让它吓到您。验证器部分不依赖于ORM的东西,将其集成到Spring中是非常困难的
如果由于某种原因您无法使用Hibernate验证程序。。。或者你只是想坚持你喜欢的,regex的好地方是RegExLib.com;几个可以匹配URI的模式。最终使用了来自ApacheCommons的
UrlValidator
我知道这个问题已经很老了,但我只需要相同的模式,我想我会使用SpringFramework中的属性编辑器
更准确地说,有一个URLEditor,您可以使用它将字符串表示形式转换为实际的URL对象
以下是相关文档的链接:
在我的例子中,我考虑在Spring验证器中使用以下代码来检查用户输入的字符串是否为有效URL:
try {
PropertyEditor urlEditor = new URLEditor();
urlEditor.setAsText(field.getValue());
} catch (IllegalArgumentException ex) {
errors.rejectValue("nameOfTheFieldToBeValidated", "url_is_invalid");
}
然而,就目前而言,我不确定是否可以配置哪个协议将被接受为有效协议(即URLEditor似乎也接受以“classpath:”开头的URL)据我所知,Spring拦截器允许您修改HttpRequest和HttpResponse。当然,您可以在那里应用URL有效性检查,但如果是这种情况,我更喜欢使用验证器接口。我的问题更多的是关于在Spring中是否有什么东西可以为我验证URL,而不是使用凌乱的regexp。类似“雨篷熊”的东西在上面用Hibernate显示了,只有纯Spring。这真的很糟糕,这是对Spring拦截器的滥用,这不是它的用例。好吧,让你知道,我也使用apache commons的UrlValidator。所以基本上你说的是,Spring没有URL验证器。如果我们不使用Hibernate而使用MyBatis呢?这不是SpringMVC解决方案。