@Controllor
์ด๋
ธํ
์ด์
, handlerMapping
์ ์ผ
bean
๋ฑ๋ก + ์์ฒญ์ด ๋ค์ด์ค๋ฉดrequestMapping
๊ณผ ์ฐ๊ฒฐํด์ค๋ค@Controller
๊ฐ ์์ผ๋ฉด@RequestMapping
์๋ฌด ์ธ์๋ ์๋คhandlerMapping
์@Controller
๋ค์ ๊ด๋ฆฌํด์ค๋คController
,Service
,DAO
,DB
๋ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ๋คController
๋view
์ด๋ฆ, ์ฆreturn String
ViewResolver
, DispatcherServlet
์ ์ผ
Controller
๊ฐreturn
ํString
์prefix
์suffix
ํฉ์ณ์DispatcherServlet
ํํ ์ค๋คDispatcherServlet
์ด ๊ทธ๊ฒ๋ค ๋ค ํฌํจํด์response
ํด์ค๋ค.
UserController.java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService service;
@RequestMapping("/login")
public String login() {
return "user/login";
}
@RequestMapping("/join")
public String join() { return "user/join"; }
@RequestMapping(value="/join", method = RequestMethod.POST)
public String join(UserEntity param) {
System.out.println("param = " + param);
service.join(param);
return "redirect:user/join";
}
}
์ปจํธ๋กค๋ฌ๋ ๋งคํ๋ด๋น
์๋น์ค๋ ๋ก์ง๋ด๋น
@Autowired
: ์ฐ๊ฒฐํ๋ ค๋ ํด๋์ค๊ฐ ์ด๋ ธํ ์ด์ ๋์ด ์์ง ์์ผ๋ฉด ๐ bean๋ฑ๋ก์ด ๋์ด ์์ง ์์์ ์๋ฌ๊ฐ ๋ฐ์ํด์. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฆฌํฌ ์ ์๋ ํ์ ์ด(ํด๋์ค๊ฐ) ์ฌ๋ฌ๊ฐ๊ฐ ์์ผ๋ฉด ์๋ฌ ๋ ์.
bean
: ๊ฐ์ฒด
@
: ์ด๋ ธํ ์ด์ ,bean
์ ๋ฑ๋กํ๋ ๊ฑฐ์์. ๊ฐ์ฒด๋ฅผ ๋๊ฐ ๋ค๊ณ ์์ด~๋ผ๊ณ ์๊ธฐํ๋ ๊ฑฐ๋ ๊ฐ์์. ๊ทธ๋ฆฌ๊ณprivate
๋ผ๋ ๊ฐ์ด ์ฃผ์ ์ด ๋ผ์.๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋๊ฑฐ์์.
@Service
public class UserService {
@Autowired
private UserMapper mapper;
โ @Mapper๊ฐ @Autowired๋ก ๊ฐ์ด ์ฃผ์
๋ผ์. mapper๊ฐ private์ฌ๋ ์ธ๋ถ์์ ๊ฐ์ด ์ฃผ์
๋ผ์.
@Mapper
public interface UserMapper {
int insUser(UserEntity param);
}
@Controller
- ์ฃผ์๊ฐ๊ณผ ๋งคํ ๋ ์ ์๋
bean
Controller
๋ก์ด๋ ธํ ์ด์
๋ ์๊ฐweb.xml
์<servlet>
๊ณผ ์ฐ๊ฒฐ๋ผ์.
@RequestMapping("๊ฒฝ๋ก")
RequestMapping
๋ก์ด๋ ธํ ์ด์
๋ ์๊ฐ ์๋ธ๋ฆฟ(web.xml - <servlet>
)๊ณผ๋งคํ
๋ผ์.- ํด๋์ค์ ์์ ์์นํ๋ฉด 1์ฐจ ์ฃผ์๊ฐ, ํด๋์ค ๋ฐ์ ์์นํ๋ฉด 2์ฐจ ์ฃผ์๊ฐ์ด์์.
- ์์ฑ์ด ์์ด์. ๐
method="RequestMethod.Post
- ๊ธฐ๋ณธ ์์ฑ :
value="๊ฒฝ๋ก" method="RequestMethod.Get"
๐ ๊ทธ๋์ ๋ณดํต ์๋ตํ์ฌ ์จ์.method="RequestMethod.Post
๋ฅผ ์ธ ๋๋ ๊ฒฝ๋ก๋ฅผvalue="๊ฒฝ๋ก"
์ด๋ ๊ฒ ์ง์ ํด์ผ ํด์. ์๋ตํ ์ ์์ด์. ๐value="๊ฒฝ๋ก" method="RequestMethod.Post
๋ฉ์๋
return
์ผ๋กredirect
๋ถ์ด์ง ์๊ณString
๋ง ์ ์ผ๋ฉด ๋ฌด์กฐ๊ฑดdispatcher
์ ์ด์ฉํด์forward
์์ผ์.๐ ๋์คํจ์น ๋ฐฉ์ @RequestMapping("/join") public String join() { return "user/join"; }
๐ ๋ฆฌ๋ค์ด๋ ํธ ๋ฐฉ์ @RequestMapping(value="/join", method = RequestMethod.POST) public String join(UserEntity param) { return "redirect:user/join"; }
- ๊ทธ๋ฆฌ๊ณ
<servlet>
์ดreturn
๋ ๊ฒฝ๋ก์ ์์๋prefix
๋ฅผ ๋ถ์ด๊ณ
๋ค์๋suffix
๋ฅผ ๋ถ์ฌ์ค์.request.getRequestDispatcher.forward("๊ฒฝ๋ก")
์response.sendRedirect("๊ฒฝ๋ก")
๋ฅผ ์ง์ ํ ํ์๊ฐ ์๊ณ SPRING์ด ํด์ฃผ๋ ๊ฑฐ์์.
controller
๋ฉ์๋์ ์ธ์@RequestMapping("/detail")
public String detail(BoardDTO param) { ๐ ์ฟผ๋ฆฌ ์คํธ๋ง์ผ๋ก ๋ณด๋ธ ๊ฐ
System.out.println("iboard : " + param.getIboard());
return "board/detail";
}
- ์ฟผ๋ฆฌ ์คํธ๋ง์ผ๋ก ๋ณด๋ธ ๊ฐ์
BoardDTO param
, ์๊ฐ ๋ฐ์์ค์- ์ฟผ๋ฆฌ ์คํธ๋ง์ผ๋ก ๋ณด๋ธ ๊ฐ์
BoardDTO param
์ ๋ฉค๋ฒํ๋์ ๋ฃ์ด์ฃผ๋ ๊ฑฐ์์- ๋ฉค๋ฒํ๋์ ์ด๋ฆ์ผ๋ก
request.getparameter()
๋ค ํด๋ณด๊ณ ์์ผ๋ฉดparam
์set()
ํด์ฃผ๋ ๊ฑฐ์์- ์ฌ๊ธฐ์ ์ ๊ธฐ๋ง ํด๋ ์๋ธ๋ฆฟ์ด
/detail
์์ ํด์ฃผ์์์- ๊ทธ ์๋ธ๋ฆฟ์ด
param
๊น์ง๋ ๊ฐ์ฒดํ ํด์ค์- ๊ทธ๋์ ์ฟผ๋ฆฌ ์คํธ๋ง์ด ์์ด๋ ๊ฐ์ฒด๊ฐ ์๊ธฐ ๋๋ฌธ์
getIboard
ํ๋ฉด0
์ด ๋์์.- ๋ง์ฝ ๊ฐ์ฒดํ๊ฐ ์๋์ด ์์ผ๋ฉด
param
์์ฒด๊ฐnull
์ด๊ณnull
์ธ ์ ํํ getiboard
ํ๋ฉดerror
๊ฐ ํฐ์ง๋๋ฐ ์ํฐ์ง์์์
- ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๋ฐ์์ ๊ฐ์ฒดํ ํด์ฃผ๊ณ ๋ฉค๋ฒํ๋์
set
๊น์ง ํด์ฃผ๋ ๊ฑธ,
๊ทธ๋ฅpublic String detail(BoardDTO param)
์ด๋ ๊ฒ ์ ์ผ๋ฉด ๋์ธ๊ฑฐ์ฃ .
์ ๊ธฐํ์ฃ ? ๐ค
boardController
@ResponseBody
@RequestMapping("/cmtInsSel")
public Map<String, Integer> cmtInsSel() {
Map<String, Integer> result = new HashMap<>();
result.put("result", 1);
return result;
}
@ResponseBody
, @RestController
- ํ๋ฉด์ด๋ ์ ํ ์๊ด์ด ์์ด์.
- ๋ฐ์ดํฐ๋ ์๊ด ์์ด์.
- ๋ฌด์กฐ๊ฑด
JASON
ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์.- ์ด ์ด๋ ธํ ์ด์ ์๋์ ๋ชจ๋ ๋ฉ์๋์ ๋ณ์์ ๋ชฉ์ ์
JASON
ํ๊ฐ ๋ชฉ์ ์ด์์.- ๊ทธ๋ฅ ์ปจํธ๋กค๋ฌ๋ ํ๋ฉด๊ณผ ๋ฐ์ดํฐ ๋ชจ๋ ์๊ด์ด ์์ด์. ์๋ฒ์ฌ์ด๋๋ ๋๋ง์ด์์.
- ๋ฐ์ดํฐ๋ง ์คํ ๋ ํ๋ฉด ๋๊ฐ ๋ง๋ค์ด์ ์ฐ์ธ์. ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ด์์.
Map<>
Map<>
์ ์ฐ๋ ์ด์ ๋ ๋งค๋ฒclass
๋ฅผ ๋ง๋ค๊ธฐ ๊ท์ฐฎ์ผ๋๊น์.
๐น ์ฐธ๊ณ
์ฌ์ง์ ์ ๋๋ฒ๊ฑฐ์ ์ฝ๋ฉ์ด์ผ๊ธฐ
๋ธ๋ก๊ทธ์์ ๊ฐ์ ธ์์ด์.
์ ๋๋ฒ๊ฑฐ์ ์ฝ๋ฉ์ด์ผ๊ธฐ ๋ธ๋ก๊ทธ ๋ฐ๋ก๊ฐ๊ธฐ