- 전체경로와 Servlet기반 경로 매칭 설정
우리는 지금까지 확장자 기반으로 servlet을 실행시켜왔다
ex)
1 2 3 4 | <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> | cs |
근데 확장자 기반이 아닌 디렉토리로 정하는 기법도 사용되는데
1 2 3 4 | <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/game/*</url-pattern> </servlet-mapping> | cs |
폴더명or디렉토리명의 경로로 이렇게 사용할 수 있다.
근데 단점이,
예를들어 우리가 요청하는것은 "/game/info" 경로인데,
1 2 3 4 5 | @RequestMapping("/game/info") public String info(..){ ... } | cs |
<url-pattern>의 값으로 디렉터리를 포함한 패턴을 지정하게 되면
Servlet 경로는 "/game"이 되며, Servlet 경로를 제외한 나머지 경로를 이용해서
@RequestMapping Annotation의 값과 매칭 여부를 판단하게 되므로,
실제 비교할 때 사용되는 요청 URI는 "/info"가 된다.
/game/info로 요청해야 우리가 원하는 작업이 시작이 되는데 /info로 찾아지게되는것이다
그걸 해결하기위해선
1 2 3 4 | <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:alwaysUseFullPath="true"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:alwaysUseFullPath="true"/> | cs |
라고 걸어주어야 서블릿경로가 짤리지않고 우리가 원하는 경로대로 시작이 된다.
디렉토리 기반으로 경로 매칭을 쓰는 이유는
레스트풀(?)에서 확장자 기반이 아닌,
디렉토리 기반으로 해서 데이터를 같이 전송하는(?) 방식으로 많이 쓰이기때문에 알아두어야한다.
== 아직 써보지않아 무슨 이야긴지 이해를 못했지만, 나중에 쓰게될것같다. 일단 정리.....
'JAVA > Spring' 카테고리의 다른 글
@ModelAttribute 추가 공부내용. (0) | 2018.09.12 |
---|---|
Spring - @ModelAttribute + @Controller (0) | 2018.09.12 |
Spring MVC - 뷰 이름 자동지정법 (0) | 2018.09.12 |
Spring MVC - 파라미터 저장법②(파라미터이름==매개변수명) (0) | 2018.09.12 |
Spring MVC - 예제(List로 출력) (2) | 2018.09.12 |