반응형
Spring에서 requestURI와 requestURL은 HTTP 요청의 URL 정보를 나타내는 두 가지 다른 속성입니다.
- requestURI
- requestURI는 클라이언트가 요청한 URL의 경로 부분을 나타냅니다.
- 경로는 컨텍스트 경로 (Context Path) 이후부터 시작하여, 쿼리 문자열 (? 이후) 이전까지의 URL 일부분입니다.
- 예를 들어, "http://example.com/myapp/user/profile?id=123"라는 URL에서 requestURI는 "/myapp/user/profile"입니다.
- requestURL
- requestURL은 클라이언트가 요청한 URL 전체를 나타냅니다.
- 경로와 쿼리 문자열을 모두 포함하며, 프로토콜 (http, https), 호스트 (domain), 포트 번호까지 포함합니다.
- 예를 들어, "http://example.com/myapp/user/profile?id=123"라는 URL에서 requestURL은 "http://example.com/myapp/user/profile?id=123"입니다.
요약하면, 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이 될 것입니다. 이 정보를 뷰에서 사용하여 필요한 작업을 수행할 수 있습니다.
반응형
'Programing > Java & Spring' 카테고리의 다른 글
WebFlux, WebClient 사용하여 API 호출 - 3편 (0) | 2023.10.05 |
---|---|
WebFlux, WebClient 사용하여 API 호출 - 2편 (0) | 2023.09.26 |
WebFlux, WebClient 사용하여 API 호출 - 1편 (0) | 2023.09.26 |
함수형 인터페이스(Funcational Interface) (0) | 2023.09.22 |
Java Default Method (디펄트 메소드) (0) | 2023.09.08 |
스프링(Spring)에서 RestTemplate, Https 통신 (0) | 2023.09.08 |
AOP(Aspect-Oriented Programming) 개념 및 예시 (0) | 2023.09.08 |
[JAVA] content-disposition (0) | 2013.12.31 |
[SPRING3.0] 메세지 처리 (0) | 2013.09.12 |
[SPRING3.0] 페이스북 공유하기① (0) | 2013.09.11 |