2010-06-18 3 views
2

현재 restful-url 스키마에서 세미콜론을 사용해야하는 프로젝트를 진행 중입니다.자바 스프링 restful-url with semi-colon

상상할 수있는 것처럼, 우리는이 문제를 해결하는 데 문제가 있습니다. 기본 Java HTTPServletRequest가 훌륭하게 재생되지 않습니다.

이 문제를 해결할 방법이 있습니까?

예를 들어 restulf - URL :

http://service/BOB;MIKE/

은 봄처럼 보이는 단지/서비스/밥을 작업합니다 -; MIKE가 잘립니다.

우리는 % 3B (또는 % 3F와 비슷한)를 시도했지만 작동하지 않습니다. 사전에

감사합니다!

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

각을 시도하고 당신을 위해 작동하는 참조 :

CT

+0

당신이 여기 일이 무엇을 기대 : –

+0

우리는 전체 문자열 BOB, MIKE를 얻으려고하지만 목록 [ 'bob', 'mike']도 괜찮습니다. 지금 java-spring은 'bob'을 가져옵니다. –

답변

2

이 당신이 법적으로 URI에 사용할 수있는 모든 구분 기호의 목록입니다.

분명히 스프링은 ;을 털어 버립니다. 서블릿 일지는 모르겠지만, 어쨌든, 그것은 짜증나. 웹 프레임 워크는 개발자로 하여금 합법적 인 URI를 만들도록 허용해야합니다.

+0

은 서블릿 일인 것으로 밝혀졌습니다. 자바 서블릿 API에 오류가있는 것 같습니다. –

+0

그것에 대한 참조가 있습니까? 나는 같은 문제를 겪고있다. – Jason

0

이것은 Spring의 의도적 인 것으로 보이지만 적어도 설정 가능합니다.

처리기 매핑을 setRemoveSemicolonContent(false) (기본값 : true)으로 지정해야합니다. 자세한 내용은 the Javadoc을 참조하십시오.

이유는 분명히 URI에서 remove the ;jsessionid=... suffix이 필요했기 때문입니다.

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

@Amos M. 목수의 대답은 정확하지만

, 여기에이 동작을 해제하는 데 필요한 구성은? "MIKE"가 "BOB"엔드 포인트에 대한 인수로 간주되거나이 URL이 "BOB; MIKE"라는 엔드 포인트에 도달 할 것으로 예상됩니까? 아니면 서비스에 인수로 "BOB"와 "MIKE"를 전달하려고합니까?
관련 문제