req.getRequestURI() 메소드는 현재 요청의 URI(Uniform Resource Identifier)를 문자열로 반환합니다.
req.getContextPath() 메소드는 현재 웹 애플리케이션의 컨텍스트 경로를 반환합니다. 컨텍스트 경로는 웹 애플리케이션이 배치된 경로를 나타냅니다. 예를 들어, /myapp과 같은 경로입니다.
substring() 메소드는 문자열에서 특정 범위의 문자열을 추출하는 메소드입니다. substring(req.getContextPath().length()) 코드는 현재 요청의 URI에서 컨텍스트 경로의 길이만큼을 제외한 나머지 문자열을 반환합니다. 이를 통해, 현재 요청의 경로를 추출할 수 있습니다.
따라서, String target = req.getRequestURI().substring(req.getContextPath().length()) 코드는 현재 요청의 경로를 추출하는 역할을 합니다. 이 코드를 통해, 요청 경로에 따라 적절한 컨트롤러를 호출할 수 있습니다.
예를 들어, 웹 애플리케이션의 컨텍스트 경로가 /myapp이고, 현재 요청의 URI가 /myapp/member/join.me일 때, req.getContextPath()는 /myapp을 반환하고, req.getRequestURI()는 /myapp/member/join.me을 반환합니다.
따라서, req.getRequestURI().substring(req.getContextPath().length()) 코드는 /member/join.me을 반환합니다. 이를 통해, 현재 요청의 경로가 /member/join.me임을 알 수 있습니다.
전체 코드 예시는 다음과 같습니다.
String contextPath = req.getContextPath(); // "/myapp"
String requestURI = req.getRequestURI(); // "/myapp/member/join.me"
String target = requestURI.substring(contextPath.length()); // "/member/join.me"