用分号弹出的java spring restful-url

问题描述:

我目前正在研究一个需要在我们的restful-url方案中使用分号的项目。你可以想象,我们遇到了问题 - 底层的Java HTTPServletRequest播放不好。用分号弹出的java spring restful-url

有没有办法解决这个问题?

例如restulf-URL:

http://service/BOB;MIKE/

看起来像春天只工作/服务/鲍勃 - 中; MIKE被截断。

我们试过%3B(或%3F这样的东西),它不起作用。

在此先感谢!

CT

+0

你期望有发生在这里? “MIKE”是否假设为“BOB”端点的参数,或者您是否期望此URL到达名为“BOB; MIKE”的端点?或者你是否试图将“BOB”和“MIKE”作为参数传递给服务/? – 2010-06-18 19:08:40

+0

我们正试图获得整个字符串BOB; MIKE现在,但是列表['bob','mike']也可以。 现在,java-spring只是'bob'。 – 2010-06-18 19:44:32

这一切你可以在一个URI合法使用的分隔符列表:

! $ & () * , ; = + ' : @/? 

尝试每个看看哪一种适合你。

显然春季盗用你的;。我不确定这是否是Servlet,但无论如何,它都很糟糕。 Web框架应该允许开发人员构建任何合法的URI。

+0

证明这是一个servlet的东西。 Java Servlet API中似乎存在错误。 – 2010-06-28 12:43:47

+0

你有参考吗?我遇到了同样的问题。 – Jason 2011-04-14 23:46:28

似乎这是Spring的一部分,但至少它是可配置的。

您需要告诉您的处理程序映射到setRemoveSemicolonContent(false)(默认为true)。有关更多详细信息,请参阅the Javadoc

这样做的原因是因为他们显然想从URI中获得remove the ;jsessionid=... suffix

虽然@Amos M.卡彭特的答案是正确的,这里是需要的配置,以关闭该行为:

@Configuration 
@EnableWebMvc 
public class WebMvcConfiguration extends WebMvcConfigurerAdapter 
{ 
    @Override 
    public void configurePathMatch(PathMatchConfigurer configurer) 
    { 
     configurer.getUrlPathHelper().setRemoveSemicolonContent(false); 
    } 
}