본문 바로가기
Programing/Java & Spring

스프링(Spring) 에서 RequestURI, RequestURL 차이

by 슈퍼와이비 2023. 9. 8.
반응형

Spring에서 requestURI와 requestURL은 HTTP 요청의 URL 정보를 나타내는 두 가지 다른 속성입니다.

 

  1. requestURI
    • requestURI는 클라이언트가 요청한 URL의 경로 부분을 나타냅니다.
    • 경로는 컨텍스트 경로 (Context Path) 이후부터 시작하여, 쿼리 문자열 (? 이후) 이전까지의 URL 일부분입니다.
    • 예를 들어, "http://example.com/myapp/user/profile?id=123"라는 URL에서 requestURI는 "/myapp/user/profile"입니다.
  2. requestURL

요약하면, requestURI는 요청한 경로 부분만을 나타내고, requestURL은 전체 URL을 나타냅니다. requestURI는 보통 Spring 컨트롤러에서 경로 기반의 요청 매핑을 수행할 때 사용되며, requestURL은 요청의 전체 URL을 필요로 하는 경우에 사용됩니다.

 

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MyController {

    @GetMapping("/example")
    public String example(HttpServletRequest request, Model model) {
        // HttpServletRequest 객체를 컨트롤러 메소드의 파라미터로 받습니다.

        // requestURI 얻기
        String requestURI = request.getRequestURI();

        // requestURL 얻기
        StringBuffer requestURL = request.getRequestURL();

        // 얻은 값을 모델에 추가하여 뷰로 전달할 수 있습니다.
        model.addAttribute("requestURI", requestURI);
        model.addAttribute("requestURL", requestURL.toString());

        return "exampleView"; // 적절한 뷰 이름을 반환합니다.
    }
}

위의 예제에서는 HttpServletRequest 객체를 컨트롤러 메소드의 파라미터로 받아옵니다. 그런 다음, getRequestURI() 메소드를 사용하여 requestURI를 얻고, getRequestURL() 메소드를 사용하여 requestURL을 얻습니다. 이 값을 모델에 추가하여 뷰로 전달하면, 뷰에서 이 정보를 활용할 수 있습니다.

 

예를 들어, "/example" 경로로 요청이 들어오면, 컨트롤러에서 requestURI는 "/example"가 되고, requestURL은 "http://localhost:8080/contextPath/example"와 같이 전체 URL이 될 것입니다. 이 정보를 뷰에서 사용하여 필요한 작업을 수행할 수 있습니다.

반응형