Spring/Spring MVC

[์Šคํ”„๋ง MVC] - 18. Redirect / Post -> Redirect -> Get

hello_u 2023. 2. 18. 17:05

 

 

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ž€ ๋ง ๊ทธ๋Œ€๋กœ re(๋‹ค์‹œ) + ์ง€์‹œํ•˜๋‹ค(direct) ๋‹ค์‹œ ์ง€์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ www.test.com/page1 URL์„ ์›น ์„œ๋ฒ„์— ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.
 
์„œ๋ฒ„๋Š” HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ํ†ตํ•ด "www.test.com/page2 ๋กœ ๋‹ค์‹œ ์š”์ฒญํ•˜์„ธ์š”~"

 

๋ผ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋‹ค๋ฅธ URL(๊ธธ, ๋ฐฉํ–ฅ) ์„ ์ง€์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 

 

 

 

 

POST ๋“ฑ๋ก ํ›„ ์ƒˆ๋กœ ๊ณ ์นจ

 

 

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ๋กœ ๊ณ ์นจ์€ ๋งˆ์ง€๋ง‰์— ์„œ๋ฒ„์— ์ „์†กํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค.


์ƒํ’ˆ ๋“ฑ๋ก ํผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅ์„ ์„ ํƒํ•˜๋ฉด POST /add + ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.


์ด ์ƒํƒœ์—์„œ ์ƒˆ๋กœ ๊ณ ์นจ์„ ๋˜ ์„ ํƒํ•˜๋ฉด ๋งˆ์ง€๋ง‰์— ์ „์†กํ•œ POST /add + ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค.


๊ทธ๋ž˜์„œ ๋‚ด์šฉ์€ ๊ฐ™๊ณ , ID๋งŒ ๋‹ค๋ฅธ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ

 

 

POST, Redirect GET

 

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ๋กœ ๊ณ ์นจ์€ ๋งˆ์ง€๋ง‰์— ์„œ๋ฒ„์— ์ „์†กํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ „์†กํ•œ๋‹ค.


์ƒˆ๋กœ ๊ณ ์นจ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ƒํ’ˆ ์ €์žฅ ํ›„์— ๋ทฐ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

 

์ƒํ’ˆ ์ƒ์„ธ ํ™”๋ฉด์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์˜ ์˜ํ–ฅ์œผ๋กœ ์ƒํ’ˆ ์ €์žฅ ํ›„์— ์‹ค์ œ ์ƒํ’ˆ ์ƒ์„ธ ํ™”๋ฉด์œผ๋กœ ๋‹ค์‹œ ์ด๋™ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœํ•œ ๋‚ด์šฉ์ด ์ƒํ’ˆ ์ƒ์„ธ ํ™”๋ฉด์ธ GET /items/{id} ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

@PostMapping("/add")
public String addItem(@ModelAttribute("item") Item item) {
    itemRepository.save(item);
    // model.addAttribute("item",item);
    return "redirect:/basic/items/" + item.getId();
}

 

 

 

 

 

 

 

RedirectAttributes

 

RedirectAttributes ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด URL ์ธ์ฝ”๋”ฉ๋„ ํ•ด์ฃผ๊ณ , pathVarible , ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

 

@PostMapping("/add")
public String addItem(@ModelAttribute("item") Item item,
                      RedirectAttributes redirectAttributes) {
    Item savedItem = itemRepository.save(item);
    redirectAttributes.addAttribute("itemId",savedItem.getId());
    redirectAttributes.addAttribute("status", true);
    return "redirect:/basic/items/{itemId}";
}

 

pathVariable ๋ฐ”์ธ๋”ฉ: {itemId}


๋‚˜๋จธ์ง€๋Š” ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฒ˜๋ฆฌ: ?status=true

 

 

<h2 th:if="${param.status}" th:text="'์ €์žฅ ์™„๋ฃŒ!'"></h2>

 

th:if : ํ•ด๋‹น ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ์‹คํ–‰


${param.status} : ํƒ€์ž„๋ฆฌํ”„์—์„œ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ

 

 

 

 

 

 

 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., -

www.inflearn.com