2012-10-03 3 views
12

Spring MVC를 사용하면 모든 컨트롤러와 메소드/액션에 RequestMapping을 설정하는 방법을 알고 있습니다.스프링 MVC 요청 매핑이 동적/구성 가능합니까?

그러나 나는이, 구성 할 수 원한다면 그래서 예를 들어 나는 다음과 같은 컨트롤러 : 내 응용 프로그램에서 이제

BlogController 
- with methods for listing blogs entries, single entry, new, update, etc. 
ArticleController 
- with methods for listing articles entries, single entry, new, update, etc. 

, 소위 관리자가 설정 할 수의 webiste 2 개 블로그, 1 개 기사 섹션 URL은 것 같은 :

www.example.com/article_section1/ - uses ArticleController 
www.example.com/blog1/ - uses BlogController 
www.example.com/blog2/ - uses BlogController 

어쩌면 후 관리자가 다른 기사 섹션을 원하는, 그래서 그들은 단지와 같은 새로운 섹션이를 구성하는 동안 :

www.example.com/article_section2/ 

물론 응용 프로그램을 다시 시작하지 않아도 동적으로/작동 중에 작동해야합니다.

내 질문은 컨트롤러에 URL 매핑을 처리하는 방법과 관련이 있습니다.

스프링 MVC로 어떻게 가능합니까?

컨트롤러 또는 메서드 수준에서 @RequestMapping("/helloWorld")을 사용하는 컨트롤러에 URL을 매핑하는 방법 만 알고 있지만 URL 매핑이 고정되어 있으며 원하는대로 구성 할 수 없습니다.

업데이트 :

내가 같은 컨트롤러의 유형으로 매핑하고, 데이터베이스의 경로를 저장한다 : 나는 어떻게 파견 할 수 위의 정보와

path     controller 
/article_section1/ article 
/blog1/    blog 
/blog2/    blog 
.. 

, 올바른 컨트롤러에 대한 요청입니까?

다시,/다시로드 재배치를 찾고, 나는이 더 많은 작업 만이 필요합니다 깨닫지의 사양 :

+1

어떻게 구현 했습니까? 나는 비슷한 상황에 처해있다. – DairyLea

답변

5

에서와 당신을 위해 URL 매핑 작업의 종류?

www.example.com/blog/1/ 
www.example.com/blog/2/ 

예, 그 다음은 쉽게 경우 : 당신이 설정 파일을 읽어 일반적인 요청 매핑과 자신의 하위 디스패처를 만들 수 있습니다, 또는 http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html#mvc-ann-requestmapping-advanced

,하지만 난 그 생각 : 봄 (3)는 경로 변수를 지원합니다 아마도 가치보다 더 많은 일이있을 것입니다.

+3

URL을 완전히 제어하고 싶습니다. 경로 변수 감사에 대해 알고 있습니다. 실제로 데이터베이스에서 경로를 읽은 다음 요청을 올바른 컨트롤러로 전달하지만 방법은 확실하지 않습니다. – loyalflow

0

이 기능이 작동하지 않습니까? @RequestMapping ("/ helloWorld *")

2

런타임에 요청 매핑을 변경하면 어려울 수 있습니다. 작은 오류가 쉽게 발생하기 때문에 권장하지 않습니다. 여전히 JRebel을하고 싶다면 좀 더 구체적으로 LiveRebel은 코드 및 구성을 실시간으로 재배포 할 수 있습니다.

그렇지 않으면 다른 게시물과 마찬가지로 RequestMappings도 와일드 카드를 지원하므로 공식 문서를 빨리 ​​읽은 후에는 제한 사항을 명확히해야합니다.

+2

아니요 URL을 완벽하게 제어하려는 경우 작동하지 않으며 모든 코드를 다시로드하거나 다시 배포하지 않으려합니다. 어떻게 든 올바른 컨트롤러에 요청을 전달할 수 있기를 바랬습니다. – loyalflow

+3

HandlerMapping을 직접 작성하는 것은 흥미로울 것입니다. http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/HandlerMapping.html –

+0

그 링크를 이용해 주셔서 감사합니다. 요구 사항을 받아 들여야 할 방향이되어야합니다. – loyalflow

1

는 다음과 같이 와일드 카드를 @RequestMapping과 함께 사용해보십시오 :

@RequestMapping(value="/article_section*/"} 
public void getArticle(....){ 
//TODO implementation 
} 

@RequestMapping(value="/blog*/"} 
public void getBlog(....){ 
//TODO implementation 
} 

희망이 도움이!