ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 레거시 프로젝트 톰캣 구동시 시작 url 설정
    http 웹기본지식 2024. 9. 4. 15:32

    보통 스프링 프로젝트를 생성한 후 톰캣으로 구동하면 프로젝트명이 시작 url 로 설정되어있다.

    만약 프로젝트를 springTest으로 생성하고 해당 프로젝트를 톰켓으로 구동하면 http://localhost:8080/springTest 으로 url 이 설정된다.

     

    이유가 뭘까?

    그 이유는 톰캣의 path 에 프로젝트명이 자동으로 설정되기 때문이다.

    만약 저 부분을 /로 변경하면 http://localhost:8080/ 으로 url 이 설정된다.

     

    그럼 의문이 들수있다. 저게 변경되면 controller url 매핑도 다 / -> /springTest 로 변경해야하는거 아닌가?

    아래 url 접근 원리를 보면 url 매핑을 변경하지 않아도 된다는 것을 알 수 있다.

     

    url 접근 원리

    스프링의 URL 매핑이 톰캣의 컨텍스트 경로를 인식하는 방식은 다음과 같습니다:

    • 스프링 컨트롤러는 URL 패턴을 정의합니다.
    • 톰캣의 컨텍스트 경로는 애플리케이션의 루트 URL을 정의합니다.
    • 실제 요청 URL은 http://localhost:8080/{context-path}/{controller-path} 형태로 결합되어 처리됩니다.

    즉 /springTest 는 루트 url 을 의미하는것이기 때문에 controller mapping url 과는 관계가 없다.

     

    만약 톰캣의 컨텍스트 경로가 아닌 컨트롤러 경로를 제어하려면?

    <servlet-mapping>
      	<servlet-name>dispatcherServlet</servlet-name>
      	<url-pattern>/spring/</url-pattern>
      </servlet-mapping>
    • 다음과 같이 dispatcherServlet 경로를 / 에서 원하는 시작경로로 변경하면된다.
    • 해당 태그의 의미는 dispatcherServlet 이 /spring 으로 시작하는 경로의 요청만 수행할 수 있다 라는 의미이다.
    • dispatcherServlet 경로를 변경하면 컨트롤러 매핑부분도 아래와 같이 모두 변경시켜줘야한다.
    @Controller
    public class HomeController {
    	
    	@GetMapping("/spring/")
    	public String main() {
    		return "main";
    	}
    	
    }

     

     

Designed by Tistory.