Home
>
Spring
>
π[Spring] Spring MVCμμ `Controller` κ°μ²΄.
Spring
Framework
π[Spring] Spring MVCμμ Controller
κ°μ²΄.
1οΈβ£ Controller
κ°μ²΄.
Spring MVCμμ Controller
κ°μ²΄λ μ ν리μΌμ΄μ
μμ HTTP μμ²μ μ²λ¦¬νκ³ , ν΄λΉ μμ²μ λν΄ μ μ ν μλ΅μ μμ±νλ μν μ νλ κ΅¬μ± μμμ
λλ€.
Controller
λ μ¬μ©μ μ
λ ₯μ μ²λ¦¬νκ³ , λΉμ¦λμ€ λ‘μ§μ μνν ν, λ·°λ₯Ό μ ννμ¬ κ²°κ³Όλ₯Ό ν΄λΌμ΄μΈνΈμκ² λ°νν©λλ€.
Spring MVCμμ Controller
λ μ£Όλ‘ @Controller
λλ @RestController
μ λ
Έν
μ΄μ
μΌλ‘ μ μλ©λλ€.
1οΈβ£ μ£Όμ μν .
1. HTTP μμ² μ²λ¦¬
Controller
κ°μ²΄λ νΉμ URL κ²½λ‘μ 맀νλ HTTP μμ²(GET, POST, PUT, DELETE λ±)μ μ²λ¦¬ν©λλ€.
κ° μμ²μ 컨νΈλ‘€λ¬μ νΉμ λ©μλμ μ°κ²°λλ©°, λ©μλλ μμ² λ§€κ°λ³μλ₯Ό μ²λ¦¬νκ³ , νμν μμ
μ μνν©λλ€.
2. λΉμ¦λμ€ λ‘μ§ μν
μμ²μ μ²λ¦¬νλ λμ, Controller
λ μλΉμ€ κ³μΈ΅μ΄λ λΉμ¦λμ€ λ‘μ§μ νΈμΆνμ¬ νμν μ²λ¦¬λ₯Ό μνν©λλ€.
μ΄λ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ, κ³μ°μ μννκ±°λ, λ€λ₯Έ 볡μ‘ν μμ
μ ν¬ν¨ν μ μμ΅λλ€.
3. λͺ¨λΈ λ°μ΄ν° μ€λΉ
Controller
λ λ·°μ μ λ¬ν λ°μ΄ν°λ₯Ό μ€λΉνκ³ , μ΄λ₯Ό Model
κ°μ²΄μ λ΄μ λ·°λ‘ μ λ¬ν©λλ€.
μ΄ λ°μ΄ν°λ λ·° ν
νλ¦Ώμμ μ¬μ©λμ΄ ν΄λΌμ΄μΈνΈμκ² λ³΄μ¬μ§ μ½ν
μΈ λ₯Ό λμ μΌλ‘ μμ±ν©λλ€.
4. λ·° μ ν λ° μλ΅ μμ±
Controller
λ μ²λ¦¬ κ²°κ³Όμ λ°λΌ μ΄λ€ λ·°λ₯Ό μ¬μ©ν μ§ κ²°μ ν©λλ€.
μΌλ°μ μΌλ‘ λ·°μ μ΄λ¦μ λ°ννκ±°λ, ModelAndView
κ°μ²΄λ₯Ό ν΅ν΄ λ·°μ λͺ¨λΈ λ°μ΄ν°λ₯Ό ν¨κ» λ°νν©λλ€.
@RestController
λ₯Ό μ¬μ©νλ©΄ JSON, XML λ±μ νμμΌλ‘ μ§μ λ°μ΄ν°λ₯Ό λ°νν μλ μμ΅λλ€.
2οΈβ£ Controller
κ°μ²΄μ μ μ.
Spring MVCμμ Controller
λ @Controller
μ λ
Έν
μ΄μ
μΌλ‘ μ μλ©λλ€.
μ΄ μ λ
Έν
μ΄μ
μ ν΄λμ€κ° 컨νΈλ‘€λ¬ μν μ νλ€λ κ²μ Springμκ² μ리며, HTTP μμ²μ μ²λ¦¬ν μ μκ² ν©λλ€.
μμ : κΈ°λ³Έ 컨νΈλ‘€λ¬
@Controller
public class GreetingController {
@GetMapping ( "/greeting" )
public String greeting ( Model model ) {
model . addAttribute ( "message" , "Hello, welcome to our website!" );
return "greeting" ;
}
}
μ μ½λμμ GreetingController
ν΄λμ€λ @Controller
μ λ
Έν
μ΄μ
μ ν΅ν΄ 컨νΈλ‘€λ¬λ‘ μ μλ©λλ€.
/greeting
κ²½λ‘λ‘ GET μμ²μ΄ λ€μ΄μ€λ©΄ greeting()
λ©μλκ° νΈμΆλλ©°, "message"
λΌλ λ°μ΄ν°λ₯Ό λͺ¨λΈμ μΆκ°νκ³ , "greeting"
μ΄λΌλ λ·° μ΄λ¦μ λ°νν©λλ€.
Spring MVCλ μ΄ λ·° μ΄λ¦μ κΈ°λ°μΌλ‘ μ€μ λ·°λ₯Ό λλλ§ν©λλ€.
3οΈβ£ @RestController
μ¬μ©.
@RestController
λ @Controller
μ @ResponseBody
λ₯Ό κ²°ν©ν μ λ
Έν
μ΄μ
μ
λλ€.
μ΄ μ λ
Έν
μ΄μ
μ΄ μ μ©λ ν΄λμ€λ JSONμ΄λ XMLκ³Ό κ°μ λ°μ΄ν° νμμΌλ‘ μ§μ μλ΅μ λ°ννλ RESTful μΉ μλΉμ€μ 컨νΈλ‘€λ¬λ‘ λμν©λλ€.
μμ : REST 컨νΈλ‘€λ¬
@RestController
public class ApiController {
@GetMapping ( "/api/greeting" )
public Map < String , String > greeting () {
Map < String , String > response = new HashMap <>();
response . put ( "message" , "Hello, welcome to our API!" );
return response ;
}
}
μ μ½λμμ ApiController
ν΄λμ€λ @RestController
μ λ
Έν
μ΄μ
μ μ¬μ©νμ¬ μ μλ©λλ€.
/api/greeting
κ²½λ‘λ‘ GET μμ²μ΄ λ€μ΄μ€λ©΄ greeting()
λ©μλλ JSON νμμ μλ΅μ λ°νν©λλ€.
4οΈβ£ μμ² λ§€ν.
Controller
λ URL κ²½λ‘ λ° HTTP λ©μλμ 맀νλ λ©μλλ₯Ό ν΅ν΄ μμ²μ μ²λ¦¬ν©λλ€.
Spring MVCλ μ΄λ₯Ό μν΄ @RequestMapping
, @GetMapping
, @PostMapping
λ± λ€μν 맀ν μ λ
Έν
μ΄μ
μ μ 곡ν©λλ€.
μμ : μμ² λ§€ν.
@Controller
@RequestMapping ( "/users" )
public class UserController {
@GetMapping ( "/{id}" )
public String getUser ( @PathVariable ( "id" ) Long id , Model model ) {
User user = userService . findUserById ( id );
model . addAttribute ( "user" , user );
return "userProfile" ;
}
@PostMapping ( "/create" )
public String createUser ( @ModelAttribute User user ) {
userService . saveUser ( user );
return "redirect:/users/" + user . getId ();
}
}
μ μμ μμ UserController
λ /users
κ²½λ‘μ κ΄λ ¨λ μμ²μ μ²λ¦¬ν©λλ€.
/users/{id}
κ²½λ‘λ‘ GET μμ²μ΄ λ€μ΄μ€λ©΄, ν΄λΉ μ¬μ©μμ νλ‘ν μ 보λ₯Ό μ‘°ννμ¬ "userProfile"
λ·°μ μ λ¬ν©λλ€.
/users/create
κ²½λ‘λ‘ POST μμ²μ΄ λ€μ΄μ€λ©΄, μλ‘μ΄ μ¬μ©μλ₯Ό μμ±νκ³ , ν΄λΉ μ¬μ©μμ νλ‘ν νμ΄μ§λ‘ 리λ€μ΄λ νΈν©λλ€.
5οΈβ£ μμ½.
Spring MVCμμ Controller
κ°μ²΄λ ν΄λΌμ΄μΈνΈμ HTTP μμ²μ μ²λ¦¬νκ³ , λΉμ¦λμ€ λ‘μ§μ μ€νν ν, μ μ ν μλ΅μ μμ±νλ ν΅μ¬ κ΅¬μ± μμμ
λλ€.
Controller
λ μμ²κ³Ό λΉμ¦λμ€ λ‘μ§, κ·Έλ¦¬κ³ λ·° λ λλ§μ μ°κ²°νλ μν μ νλ©°, Spring MVC μ ν리μΌμ΄μ
μμ μ€μν μν μ μνν©λλ€.