@RequiredArgsConstructor
@Controller
public class BuyerController {
private final BuyerService buyerService;
//1. 회원가입
@PostMapping("/join") => url [고객의 요청]
public String join(BuyerRequest.JoinDTO reqDTO){
System.out.println("회원가입 : " +reqDTO);
buyerService.joinByNameAndPwAndEmail(reqDTO);
System.out.println("나오나?");
return "redirect:/"; => post join은 db에 삽입하는 것이지,
무언가 페이지를 원하는 것이 아니다.
그리고 이왕 만들어진 페이지라면 redirect를 이용하면 편리하다.
그리고 이번의 경우 mysql에 연결하는 것이라, post하면 바로 db에 쏘아져서 회원가입의 경우 회원아이디는 db에 저장이 되어 똑같은 아이디로 회원가입을 하려면 db에 가서 데이터를 매번 삭제해줘야 한다. 혹은 다르게 적어서 넣어야 한다.(ssar1,2 ..)
+)_h2의 경우에는 리셋되서 그럴 필요가 없다.
@GetMapping("/buyer/join-form")=> url [고객의 요청]
public String joinForm(){
return "buyer/join-form";=> 파일[url 밑에 나오는 파일]
}
}

@GetMapping("/join-form") => 주소
public String joinForm(){
return "buyer/join-form"; => 뷰
}
<!-- 오른쪽에 배치할 항목들 -->
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link" href="/">상품목록보기</a></li>
<li class="nav-item"><a class="nav-link" href="/login-form">로그인</a></li>
<li class="nav-item dropdown">
<a class="nav-link" href="/join-form">회원가입</a> => 주소
</li>
</ul>
redirect
@PostMapping("/board/{id}/update")
public String update(@PathVariable Integer id, String title, String content){
boardNativeRepository.updateById(id, title, content);
return "redirect:/board/"+ id;
=> 위의 url로 돌아가요!
}
⇒ 아마 내가 짠 코드에는 return "redirect:/board/"+id+”/detail”; 이런 식으로 적어두었어서 안 나왔을 것이다.!! url 불일치
주소매핑 개념 헷갈림 ⇒ 정리
redirect:home이랑 redirect:/home이랑 같은 의미야?
ChatGPT
redirect:home과 redirect:/home은 같은 의미가 아닙니다.
차이점은 경로의 해석 방식에 있습니다.
redirect:/home: ("완전 초기화시킨 home 루트로 가줘")
이것은 절대 경로로 리다이렉트합니다.
즉, 애플리케이션의 컨텍스트 루트를 기준으로 home URL로 리다이렉트됩니다.
예를 들어, 애플리케이션의 컨텍스트 루트가 http://example.com/myapp이라면,
redirect:/home은 http://example.com/myapp/home으로 리다이렉트됩니다.
redirect:home: ("현재위치에서 home으로")
이것은 상대 경로로 리다이렉트합니다.
현재 요청의 URL을 기준으로 home 경로로 리다이렉트됩니다.
예를 들어, 현재 요청 URL이 http://example.com/myapp/products라면,
redirect:home은 http://example.com/myapp/products/home으로 리다이렉트됩니다.
예시:
현재 URL이 http://example.com/myapp/products/list인 상황에서:
redirect:/home은 http://example.com/myapp/home으로 리다이렉트합니다.
redirect:home은 http://example.com/myapp/products/list/home으로 리다이렉트합니다.
따라서, 대부분의 경우 절대 경로를 사용하여 애플리케이션의 루트에서 시작하는 URL로 리다이렉트하는 것이 일반적입니다. 이렇게 하면 현재 경로에 관계없이 항상 올바른 URL로 리다이렉트할 수 있습니다.
Share article