Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SpringMVC验证URL的最佳实践?_Spring_Spring Mvc - Fatal编程技术网

使用SpringMVC验证URL的最佳实践?

使用SpringMVC验证URL的最佳实践?,spring,spring-mvc,Spring,Spring Mvc,我正在为我的web应用程序使用SpringMVC。 我需要验证用户输入的URL是否有效,我想知道Spring中是否有什么东西可以为我做基本检查(例如以http/https开头,有域名等) ValidationUtils只包含非常基本的检查,我知道我可以在validate()方法中编写一个正则表达式,但是如果有人已经这样做了,我宁愿避免:) 谢谢使用spring拦截器: 过去,我一直在利用。只需在表单bean中用约束注释适当的字段 如果您以前从未使用过Hibernate的ORM部分,请不要让它吓到

我正在为我的web应用程序使用SpringMVC。 我需要验证用户输入的URL是否有效,我想知道Spring中是否有什么东西可以为我做基本检查(例如以http/https开头,有域名等)

ValidationUtils只包含非常基本的检查,我知道我可以在validate()方法中编写一个正则表达式,但是如果有人已经这样做了,我宁愿避免:)


谢谢使用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解决方案。