1. @RequestingMapping more
(1) RequestMethod๊ฐ ๋ค๋ฅด๋ฉด ๊ฐ์ URL ์ฃผ์๋ฅผ ๊ฐ์ ธ๋ ๋๋ค.
@RequestMapping๋ง ํ๋ ์์ ์๋ ๋งค์๋ ๊ฐ์ ๋งคํ URL ์ฃผ์๊ฐ ๊ฐ์ผ๋ฉด ์๋ฌ๊ฐ ๋ฌ๋ค. ํ์ง๋ง @PostMapping๊ณผ @GetMapping์ ์๋ก ํ๋ ์์ ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ URL ์ฃผ์๊ฐ ๊ฐ์๋ ๋๋ค.
@GET์ ์๋ฒ์์ ์ ๋ณด๋ฅผ ์ป์ด์ค๋ ๊ฑฐ๊ณ , @Post๋ ์ ๋ณด๋ฅผ ์๋ฒ์ ๋ฐ์ดํฐ์ ๊ธฐ๋กํ๋ ๊ฒ์ด๋ค.
(2)ํ๋์ ์ปจํธ๋กค ๋ด ๋งค์๋ ๊ฐ์ ๋์ผํ ์ฃผ์๋ @RequestMapping์ ์จ ๋ฌถ์ด์ค ์ ์๋ค.
@Contorller ๋ฐ, ํด๋์ค ์ด๋ฆ ์์ @RequestMapping์ ์จ์ ์ค๋ณต๋๋ ์ฃผ์๋ ๋ฌถ์ด์ค ์ ์๋ค.
์ด๋ฌ๋ฉด ๋งค์๋ ๋ณ๋ก ๋งคํ๋ ์ฃผ์๊ฐ ์ ๋ง ์ ๊ณ , ๋ฌด์จ ์ผ ํ๋ ค๋์ง ๋จ๋ฐ์ ์ ์ ์์ด ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ค.
2. URL ์ธ์ฝ๋ฉ์ ์๋ฆฌ
(1)URL ์ธ์ฝ๋ฉ์ด๋?
URL ์ธ์ฝ๋ฉ์ด๋ URL์ ์ ํ ๋ด์ฉ์ ์ํธํ ํ๋ ๊ฒ์ด๋ค. URL ์ธ์ฝ๋ฉ์ ํผ์ผํธ ์ธ์ฝ๋ฉ์ธ๋ฐ ๊ทธ ์ด์ ๋ ์ํธํ ์ % ๊ธฐํธ๋ฅผ ๋ง์ด ์ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
(2)์ธ์ฝ๋ฉ ๋์ฝ๋ฉ ์ฐ๋ ์ด์
์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๊ฐ ๋๋ผ๋ณ๋ก ๋ง์ด ์ฐ์ด๋ OS์ ์ธ์ด๊ฐ ๋ค๋ฅด๋ค. ํ์ง๋ง ๋ธ๋ผ์ฐ์ ๋ ์ ์ธ๊ณ ์ด๋์๋ ์์ฒญ์ด ์๋ ๋์๊ฐ์ผ ํ๋ค.
์์ฒญ ๋ค์ด์จ OS๊ฐ ์๋ OS ๋ผ๊ณ , ์์ฒญ์ผ๋ก ๋ค์ด์จ ๋ง์ด ํ๊ตญ์ด๋ผ๊ณ ์ค๋ฅ๊ฐ ๋์ ์๋๋ค.
๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ๋ ์์ฒญ์ ์ธ๊ณ์ ๋ชจ๋ ๊ตญ๊ฐ๊ฐ ์จ๋ผ์ธ์์ ๊ณตํต์ผ๋ก ์ฐ๋ ASCII ์ฝ๋๋ก ์์ฒญ ์ฌํญ์ ์ํธํ ํ๋ค.
์ด๋ค ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์์ฒญ์ ์ธ์ฝ๋ฉํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ๋ค์ ๋์ฝ๋ฉ ๋์ด ์ฌ์ฉ์์ ๋ง๊ฒ ๋ณด์ฌ์ค๋ค.
(3) ์ธ์ฝ๋ฉ์ ์๋ฆฌ
a. ์์ฒญ ํ๋๋ฅผ ์ธ์ฝ๋ฉ ํ๋ ๊ฒฝ์ฐ
์๋ค์ํผ, ์ฝ๋ฉ์์ ๋ฌธ์๋ ์ซ์๋ก ๋์ด์๋ค. char 'A'๋ฅผ int๋ก ํ๋ณํ ํ๋ฉด 65๊ฐ ์ฐํ๋ค. A์ ASCII ์ฝ๋ ๊ฐ 65์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ธ์ฝ๋ฉ์ ์ด๋ฐ ๋ฌธ์์ ์ฝ๋๋ค์ 16์ง๋ฒ์ผ๋ก ๋ฐ๊พผ ๋ค์ ๋ฌธ์์ด ์์ ๋ฃ์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ธ๋ค.
ex) '๋จ' ์ ์์คํค ์ฝ๋ == 0xEB82A8 -> ์ธ์ฝ๋ฉ -> "0xEB82A8"
** Base64์์ ์ฐจ์ด์
Base64๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ค์ 6bit์ฉ ๋์ด์ a-z A-Z 0-9 ์ ํ ์คํธ๋ก ๋ณํํ๋ ์์ ์ด๋ค.
์ด๋ฅผ ํตํด HTTP์์๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ค์ ๋ณํํ์ฌ ์ธ ์ ์๊ฒ ํด์ฃผ์๋ค.
์ธ์ฝ๋ฉ์ ์ด์ ์๊ด ์๋ ๊ฐ๋ ์ผ๋ก
๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ ์ฌํญ์ ์ฝ๋์์ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์๋ฒ๋ก ๋ณด๋ด๋ ๊ฒ์ด๋ค.
b. ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก ๋์ด๊ฐ๋ ์ ์ฒด์ ์ธ ํ๋ฆ
๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญ ์ฌํญ์ ์ฝ๋์์ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ด ์๋ฒ๋ก ๋ณด๋ธ๋ค.
์๋ฒ๋ ํด๋น ์์ฒญ์ฌํญ์ ๋์ฝ๋ฉ ํ์ฌ ๋ญ ๋ด์ฉ์ธ์ง ์์๋ธ๋ค ์์ ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ธ๋ค.
์ด๋ ๋ ๊ธฐ๊ด ๊ฐ์ ์ํธํ, ํด๋ ์ ์ฌ์ฉํ๋ ๊ธฐ๊ณ๊ฐ ๊ฐ์์ผ ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ EUC-KR ์ฐ๋๋ฐ, ์๋ฒ๋ utf-8 ์ฐ๋ฉด ๋ด์ฉ์ด ๋ค ๊นจ์ ธ์ ์๋ฒ์ ์ ๋ฌ๋๊ธฐ์ ์ ๋๋ก๋ ์ฒ๋ฆฌ ์์ ์ ํ ์๊ฐ ์๋ค.
(๋ฒ์ธ) sts์์ ์คํ๋ง ์์ ์ ์ ์์๋ ์ค๋ฅ๊ฐ ๋ง์ด ๋ฐ์ํ๋ค. ์ด ๊ฒฝ์ฐ ๋๋ค์๊ฐ ์ฐ๋ฆฌ๊ฐ ์์กดํ๊ณ ์๋ ๋ชจ๋๊ฐ์ ์ถฉ๋๋ก ์ธํ ๊ฒ์ธ๋ฐ ์ด๊ฑธ ๊ณ ์น ์ ์๋ ๋ฐฉ๋ฒ์?
์ด ๊ฒฝ์ฐ ๋ก์ปฌC -> ์ฌ์ฉ์ -> ๋ด ๊ณ์ -> .m2 -> repository๋ฅผ ์ญ์ ํด๋ฒ๋ฆฌ์.
3. ์ค์ค๋ก ํด๋ณด๊ธฐ
@Controller
@RequestMapping("/register")
public class RegisterController {
@GetMapping("/add") // ์ ๊ทํ์ ๊ฐ์
ํ๋ฉด
public String register(){
return "registerForm";
}
@PostMapping("/save")
public String save(User user, Model m) throws Exception {
// 1. ์ ํจ์ฑ ๊ฒ์ฌ
if(!isValid(user)) {
String msg = URLEncoder.encode("id๋ฅผ ์๋ชป ์
๋ ฅํ์
จ์ต๋๋ค.", "utf-8");
m.addAttribute("msg",msg);
return "redirect:/register/add";
}
return "registerinfo";
}
private boolean isValid(User user) {
return false;
}
}
}