[Spring] 경로, Redirect

보람·2023년 4월 29일
0

Spring

목록 보기
7/18

1. 🔀 경로

(1) 일반 경로

  • / : 최상위 루트 경로
  • ./ : 현재 위치의 폴더를 의미
  • ../ : 현재 위치의 상단 폴더
    💡 예시
	<link href="../css/bootstrap.min.css" rel="stylesheet">

(2) 타임리프로 경로 설정

  • 링크 URL 표현식 @{...} 사용
    💡 예시
  • th:href
	<th:href="@{/basic/items/{itemId}(itemId=${item.id})}">
  • 괄호 생략
	<th:href="@{|/basic/items/${item.id}|}">
  • th:onclick
    • |location.href='@{...}'|
	<button th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|" type="button">

2. 🔙 Redirect

(1) Redirect

  • 리퀘스트에 내용을 담지 않고 새로운 요청을 보낼 때 하는 방식
  • 스프링은 redirect:/... 으로 편리하게 리다이렉트를 지원
	@PostMapping("/add")
	public String save5(Item item) {

		itemRepository.save(item);
		return "redirect:/basic/items/" + item.getId();
	}
  • @PathVariable 값은 redirect에도 사용가능
	@PostMapping("/{itemId}/edit")
	public String editItem(@PathVariable Long itemId, Item item) {
		itemRepository.update(itemId, item);
		return "redirect:/basic/items/{itemId}";
	}
  • redirect:/basic/items/{itemId}
    • @PathVariable Long itemId의 값 그대로 사용

(2) RedirectAttributes

  • RedirectAttributes를 사용하면 @PathVarialbe 쿼리 파라미터까지도 처리 가능
	@PostMapping("/add")
	public String save6(Item item, RedirectAttributes redirectAttributes) {
		// 객체 Item 저장
        Item savedItem = itemRepository.save(item);
        
        // addAttribute() 메서드를 사용하여 전달할 파라미터의 이름과 값을 지정
        // 1. 저장된 'Item'객체의 'id'값 사용
		redirectAttributes.addAttribute("itemId", savedItem.getId());
        // 2. status 파라미터의 값은 true로 지정
		redirectAttributes.addAttribute("status", true);
		return "redirect:/basic/items/{itemId}";
	}

주소값 : http://localhost:9091/basic/items/4?status=true

  • 4 ➡ {itemId} : pathVariable로 바인딩
  • ?status=true ➡ redirectAttributes.addAttribute("status", true) : 쿼리 파라미터로 처리
  • html에서 사용 가능
	<script th:inline="javascript">
		/*<![CDATA[*/
			if([[${param.status}]]){
				alert("저장이 완료 되었습니다.");
			}
		/*]]>*/
	</script>
profile
안녕하세요, 한보람입니다.

0개의 댓글