728x90
http://egloos.zum.com/schoolor/v/5671625
SpringMVC를 이용하여 Controller를 구현하였다.
이 Controller는 web context의 모든 action을 받아들이는 controller로, 요청된 action url에 따라 분기처리 등을 해주는 역할을 수행한다. (뭐, 보통 controller를 action mapping별로 여러개 만드는게 일반적이지만, 이 프로젝트에서는 대표 controller를 이용하고 있다.)
일반적인 호출에 대해서는 문제가 되지 않았지만, c:import나 jsp:include를 이용한 호출이 들어올 경우, request.getRequestURI() 등등의 method들의 호출값이, c:import 등에 기술된 action url이 아니라, c:import를 포함하고 있는 jsp page의 uri가 넘어왔다.
debug 상태에서 request객체의 정보들을 뒤져보았는데, request._attributes 에 원하는 정보가 기록되어 있었다. (그런데 이 정보를 접근하기 위한 method가 없다!!)
구글링을 통해 해당 정보를 조회할 수 있는 방법을 찾을 수 있었다.
javax.servlet.forward.request_uri
javax.servlet.forward.context_path
javax.servlet.forward.servlet_path
javax.servlet.forward.path_info
javax.servlet.forward.query_string
AND
javax.servlet.include.request_uri
javax.servlet.include.context_path
javax.servlet.include.servlet_path
javax.servlet.include.path_info
javax.servlet.include.query_string
javax.servlet.forward.context_path
javax.servlet.forward.servlet_path
javax.servlet.forward.path_info
javax.servlet.forward.query_string
AND
javax.servlet.include.request_uri
javax.servlet.include.context_path
javax.servlet.include.servlet_path
javax.servlet.include.path_info
javax.servlet.include.query_string
서블릿 구현체에서는 forward와 include에 대하여 각각 5개씩, 원 호출정보를 얻을 수 있는 방법을 제공하고 있다.
request.getAttribute("javax.servlet.include.request_uri") 와 같은 방법으로 정보를 얻을 수 있다.
Spring 이용 시
System.out.println( request.getAttribute("org.springframework.web.servlet.HandlerMapping.bestMatchingPattern") );
System.out.println( request.getAttribute("org.springframework.web.servlet.HandlerMapping.pathWithinHandlerMapping") );
728x90
'Java' 카테고리의 다른 글
java version (0) | 2016.01.27 |
---|---|
정규식 while 검사 (0) | 2016.01.27 |
StringBuilder replaceAll (0) | 2016.01.08 |
MS office 하이퍼링크 세션 버그 문제 (0) | 2015.12.30 |
Gson DateFormat (0) | 2015.12.22 |