
@Controller: Spring MVC์์ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ๋ํ๋
๋๋ค. ์ปจํธ๋กค๋ฌ ํด๋์ค๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ํด๋น ์์ฒญ์ ๋ํด ์ ์ ํ ์๋ต์ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค. ์ฆ, ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ณ ํด๋น ์์ฒญ์ ์ ์ ํ ์๋น์ค๋ DAO(Data Access Object)๋ก ์ ๋ฌํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ์ํํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ URL์ ์ ๊ทผํ๋ฉด, ํด๋น URL์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๊ฐ ์๋ ์ปจํธ๋กค๋ฌ ํด๋์ค๊ฐ ์คํ๋๊ณ , ๊ทธ์ ๋ง๋ ์๋ต์ ์์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฐํ๋ฉ๋๋ค.
@Controller
public class Controller01 {
// ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ค
}
@RequestMapping: ์ด ์ด๋
ธํ
์ด์
์ ํด๋ผ์ด์ธํธ์ ์์ฒญ URL๊ณผ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ฅผ ๋งคํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฆ, ์ด๋ค ์์ฒญ URL์ด ๋ค์ด์ค๋ฉด ๊ทธ์ ํด๋นํ๋ ํน์ ํ ๋ฉ์๋๋ฅผ ์คํํ๋๋ก ์ง์ ํฉ๋๋ค.
package com.study.controller;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.WebRequest;
import java.io.IOException;
import java.io.PrintWriter;
@Controller
public class Controller01 {
@RequestMapping("/main1")
public void method1(WebRequest request, HttpServletResponse response) throws IOException {
//1.์์ฒญ ๋ถ์/๊ฐ๊ณต
String name = request.getParameter("name");
//2. ๋น์ฆ๋์ค ๋ก์ง ์คํ
String data = name + "๋ ๋ฐ๊ฐ์ต๋๋ค.";
String result = STR."""
<html>
<body>
<h1>\{data}</h1>
</body>
</html>
""";
//3. ๊ฒฐ๊ณผ ์๋ต
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print(result);
}
// ์์ฒญ ๋ฉ์ธ์ง ์ฒซ ์ค์ด ๋ค์๊ณผ ๊ฐ์ผ๋ฉด ์คํ
// GET /main1/sub1 HTTP/1.1
@RequestMapping(value = "/main1/sub1")
public void method2() {
System.out.println("Controller01.method2");
}
// GET/main1/sub2 HTTP/1.1
@RequestMapping(value = "/main1/sub2")
public void method3() {
System.out.println("Controller01.method3");
}
}
WebRequest request: ํด๋ผ์ด์ธํธ์ HTTP ์์ฒญ์ ์ถ์ํํ ๊ฐ์ฒด๋ก, ์์ฒญ์ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.HttpServletResponse response: ์๋ฒ์ HTTP ์๋ต์ ์ถ์ํํ ๊ฐ์ฒด๋ก, ์๋ต์ ์์ฑํ๊ณ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ค.์์ ์์์์ /main1 URL๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด method1() ๋ฉ์๋๊ฐ ์คํ๋๊ณ , ํด๋น ๋ฉ์๋์์๋ ์์ฒญ์์ ๋ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํ์ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฉ์์ง๋ฅผ HTML ํ์์ผ๋ก ํฌ๋งทํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํฉ๋๋ค.
๋ํ, /main1/sub1 ๋๋ /main1/sub2 URL๋ก ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๊ฐ๊ฐ method2()์ method3() ๋ฉ์๋๊ฐ ์คํ๋๋ฉฐ, ๊ฐ ๋ฉ์๋๋ ๊ฐ๋จํ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ด๋ ๊ฒ Spring MVC๋ ์์ฒญ URL์ ๋ฐ๋ผ ์ ์ ํ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๋ฅผ ์คํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํฉ๋๋ค.
Spring MVC์์๋ @RequestMapping ์ด๋
ธํ
์ด์
์ ์ข ๋ ์ธ๋ถํํ์ฌ HTTP ๋ฉ์๋๋ณ๋ก ๊ตฌ๋ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ค์ํ ์์ฑ์ ์ด์ฉํ์ฌ ์์ฒญ์ ๋ผ์ฐํ
ํ ์ ์์ต๋๋ค.
package com.study.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("main5")
public class Controller5 {
@RequestMapping("sub1")
// /main5/sub1?city=seoul
public void method1(@RequestParam("city") String param) {
System.out.println(param + " ๊ฒ์ ๋ก์ง ์คํ");
}
// /main5/sub2?address=seoul
// /main5/sub2?address=gangnam
// /main5/sub2?address=hongdae
@RequestMapping("sub2")
public void method2(@RequestParam("address") String param) {
System.out.println(param + "(์ผ)๋ก ๊ฐ๋ ๊ฒฝ๋ก ํ์");
}
// /main5/sub3?age=13
// /main5/sub3?age=20
// /main5/sub3?age=40
@RequestMapping("sub3")
public void method3(@RequestParam("age") Integer param) {
if (param < 18) {
System.out.println("์ฒญ์๋
๊ด๋ จ ์ ๋ณด ์ถ๋ ฅ");
} else if (param < 35) {
System.out.println("์ฒญ๋
๊ด๋ จ ์ ๋ณด ์ถ๋ ฅ");
} else if (param < 65) {
System.out.println("์ค์ฅ๋
๊ด๋ จ ์ ๋ณด ์ถ๋ ฅ");
} else {
System.out.println("๋
ธ์ธ ๊ด๋ จ ์ ๋ณด ์ถ๋ ฅ");
}
}
// /main5/sub4?height=145.1
@RequestMapping("sub4")
public void method4(@RequestParam("height") double param) {
if (param < 145.0) {
System.out.println("์์ ํค");
} else if (param < 190.0) {
System.out.println("์ค๊ฐ ํค");
} else {
System.out.println("ํฐ ํค");
}
}
}
@RequestParam: ์ด ์ด๋
ธํ
์ด์
์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌํ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๊ฐ์ ธ์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ์ ํ ๋นํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฒญ ํ๋ผ๋ฏธํฐ์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ด ๋์ผํด์ผ ํ์ง๋ง, @RequestParam์ ์ฌ์ฉํ์ฌ ์์ฒญ ํ๋ผ๋ฏธํฐ ์ด๋ฆ๊ณผ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ๋ช
์์ ์ผ๋ก ๋งคํํ ์ ์์ต๋๋ค.์์ ์ฝ๋์์ ๊ฐ ๋ฉ์๋๋ ๋ค์ํ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์์ ์ฒ๋ฆฌํฉ๋๋ค. @RequestParam ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ๊ฐ ์์ฒญ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ธ๋ฉํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, /main5/sub1?city=seoul ์์ฒญ์ city๋ผ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์์ method1 ๋ฉ์๋์ param ํ๋ผ๋ฏธํฐ์ ํ ๋น๋ฉ๋๋ค.
์ด๋ ๊ฒ ํจ์ผ๋ก์จ Spring MVC๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ถ์ถํ๊ณ , ํด๋น ๊ฐ์ ์ฌ์ฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.