首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring框架HttpRequestHandler失败

Spring框架HttpRequestHandler失败
EN

Stack Overflow用户
提问于 2010-03-29 17:56:33
回答 3查看 958关注 0票数 0

我们有一个应用程序,它通过客户端发出的REST请求进行通信。

REST请求包含"region name“和"ID”作为参数

因此,请求将类似于(对于DELETE)

代码语言:javascript
复制
http://host:port/regionnameID  

联合中区域之间的这些REST请求经过适当的URL编码

我发现如果区域名称中有斜杠("/"),这些请求就会失败。

然后,请求将如下所示

代码语言:javascript
复制
http://host:port/region/nameID  

这是由于当区域名称中有一个'/‘时,HttpRequesthandler错误地解释了Rest URL。

现在,我们无法控制客户端发送REST请求,区域名称中包含"/“。

是否有任何方法/配置/变通方法可以防止HttpRequestHandler返回404

EN

回答 3

Stack Overflow用户

发布于 2010-03-30 00:51:04

您应该使用urlrwrite重写urls,并在内部使用查询参数。

代码语言:javascript
复制
<rule>
 <name>Inbound:</name>
 <from>^(.*)ID$</from>
 <to last="true">delete?regionName=$1</to>
</rule>

将您的all重写过滤器添加到web.xml中所有其他过滤器的前面

票数 1
EN

Stack Overflow用户

发布于 2010-03-29 19:55:30

这是一个有点脏的问题。我在这里尝试做的是使用Spring @RequestMapping注释。这里有一些文档:http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html

您可以在传递给@RequestMapping的值中指定ant通配符。如果您的区域数量有限,则可以将它们全部映射到一个方法,如下所示:@RequestMapping(value={"/region1**","/region2**","/region3**")

在您的控制器方法中,您必须添加额外的逻辑以解析出nameID。

如果您有大量的区域,那么我将创建一个单独的Spring Web应用程序(servlet)来处理这些请求。该应用程序将有一个缓存的区域查询表。

票数 0
EN

Stack Overflow用户

发布于 2010-03-29 18:33:08

配置您自己的handlerMapping bean (可能基于AbstractUrlHandlerMapping)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2537033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档