-
์คํ๋ง MVC ๊ตฌ์กฐ, ๊ฐ๋จํ ์ ๋ ธํ ์ด์ Spring 2022. 4. 19. 01:48
๐ก SpringMVC ๊ตฌ์กฐ
- FrontController๊ฐ DispatcherServlet์ด๋ค <- ์คํ๋ง MVC ํต์ฌ
๐ DispatcherServlet
- ๋ถ๋ชจ ํด๋์ค์์ HttpServlet์ ์์๋ฐ์์ ์ฌ์ฉํ๊ณ , ์๋ธ๋ฆฟ์ผ๋ก ๋์ํ๋ค
- ์คํ๋ง ๋ถํธ๋ DispatcherServlet์ ์๋ธ๋ฆฟ์ผ๋ก ์๋์ผ๋ก ๋ฑ๋กํ๋ฉด์ ๋ชจ๋ ๊ฒฝ๋ก(urlPatterns="/")์ ๋ํด ๋งคํํ๋ค
* ๋งคํํ๋ค : ํ๋์ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋์์ํค๋ ๊ฒ
๐ ๋์์์
1. ํธ๋ค๋ฌ ์กฐํ : ํธ๋ค๋ฌ ๋งคํ์ ํตํด ์์ฒญ URL์ ๋งคํ๋ ํธ๋ค๋ฌ(์ปจํธ๋กค๋ฌ)๋ฅผ ์กฐํํ๋ค
2. ํธ๋ค๋ฌ ์ด๋ํฐ ์กฐํ : ํธ๋ค๋ฌ๋ฅผ ์คํํ ์ ์๋ ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์กฐํํ๋ค
3. ํธ๋ค๋ฌ ์ด๋ํฐ ์คํ : ํธ๋ค๋ฌ ์ด๋ํฐ๋ฅผ ์คํํ๋ค
4. ํธ๋ค๋ฌ ์คํ : ํธ๋ค๋ฌ ์ด๋ํฐ๊ฐ ์ค์ ํธ๋ค๋ฌ๋ฅผ ์คํํ๋ค
5. ModelAndView ๋ฐํ : ํธ๋ค๋ฌ ์ด๋ํฐ๋ ํธ๋ค๋ฌ๊ฐ ๋ฐํํ๋ ์ ๋ณด(๋ ผ๋ฆฌ ๋ทฐ ์ด๋ฆ : new form)๋ฅผ
ModelAndView๋ก ๋ณํํด์ ๋ฐํํ๋ค
6. viewResolver ํธ์ถ : ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฐพ๊ณ ์คํํ๋ค
7. View ๋ฐํ : ๋ทฐ ๋ฆฌ์กธ๋ฒ๋ ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฌผ๋ฆฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ๊ณ , ๋ ๋๋ง ์ญํ ์ ๋ด๋นํ๋ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค
8. ๋ทฐ ๋ ๋๋ง : ๋ทฐ๋ฅผ ํตํด์ ๋ทฐ๋ฅผ ๋ ๋๋ง ํ๋ค
๐ก ์ ๋ ธํ ์ด์ ์ด์ฉ
๐ @RequestMapping
- RequestMappingHandlerMapping
- RequestMappingHandlerAdapter
@Controller @RequestMapping("/springmvc/v2/members") public class SpringMemberControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); @RequestMapping("/new-form") public ModelAndView newForm() { return new ModelAndView("new-form"); } @RequestMapping("/save") public ModelAndView save(HttpServletRequest request, HttpServletResponse response) { } @RequestMapping public ModelAndView members() { } }
๐ @Controller
- ์คํ๋ง์ด ์๋์ผ๋ก ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค (๋ด๋ถ์ @Component ์กด์ฌ -> ์ปดํฌ๋ํธ ์ค์บ์ ๋์)
- ์คํ๋ง MVC์์ ์ปจํธ๋กค๋ฌ๋ก ์ธ์
- ๋ฐํ ๊ฐ์ด String์ด๋ฉด ๋ทฐ ์ด๋ฆ์ผ๋ก ์ธ์๋๋ค -> ๋ทฐ๋ฅผ ์ฐพ๊ณ ๋ทฐ๊ฐ ๋๋๋ง ๋๋ค
โ @RestController
- ๋ฐํ ๊ฐ์ผ๋ก ๋ทฐ๋ฅผ ์ฐพ๋ ๊ฒ์ด ์๋๋ผ, HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ฐ๋ก ์ ๋ ฅํ๋ค
ex) return "ok"; => HTML ๋ฉ์์ง ๋ฐ๋์ ok๋ผ๋ ๋ฉ์์ง ์ถ๋ ฅ
๐ @RequestMapping
- ์์ฒญ ์ ๋ณด ๋งคํํ๋ค
- ํด๋น URL์ด ํธ์ถ๋๋ฉด ์ด ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค (๋ฉ์๋์ ์ด๋ฆ์ ์์๋ก ์ง๋๋ค)
- ๋๋ถ๋ถ์ ์์ฑ์ ๋ฐฐ์ด[]๋ก ์ ๊ณตํ๋ฏ๋ก ๋ค์ค ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
ex) @RequestMapping{"/save", "/cancel"}
๐ ModelAndView : ๋ชจ๋ธ๊ณผ ๋ทฐ ์ ๋ณด๋ฅผ ๋ด์์ ๋ฐํํ๋ฉด ๋๋ค
๐ ํ ๋ฐ์๊ตญ ๋
@Controller @RequestMapping("/springmvc/v3/members") public class SpringMemberControllerV3 { private MemberRepository memberRepository = MemberRepository.getInstance(); @GetMapping("/new-form") public String newForm() { return "new-form"; } @PostMapping("/save") public String save( @RequestParam("username") String username, @RequestParam("age") int age, Model model) { Member member = new Member(username, age); memberRepository.save(member); model.addAttribute("member", member); return "save-result"; } @GetMapping public String members(Model model) { List<Member> members = memberRepository.findAll(); model.addAttribute("members", members); return "members"; } }
๐ @RequestMapping -> @GetMapping, @PostMapping ๊ตฌ๋ถํ ์ ์๋ค
๐ ViewName ์ง์ ๋ฐํ : ๋ทฐ์ ๋ ผ๋ฆฌ ์ด๋ฆ์ ๋ฐํํ ์ ์๋ค
๐ @RequestParam ์ฌ์ฉ
: ์คํ๋ง์ HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ @RequestParam์ผ๋ก ๋ฐ์ ์ ์๋ค
: @RequestParam("username") == request.getParameter("username")
: GET ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ, POST Form ๋ฐฉ์ ๋ชจ๋ ์ง์
๐ Model ํ๋ผ๋ฏธํฐ
: save(), members()๋ฅผ ๋ณด๋ฉด Model์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋๋ค
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์ฒญ ๋งคํ, ๋ก๊ทธ (0) 2022.04.19 FrontController ํจํด, ์ด๋ํฐ ํจํด (0) 2022.04.18 MVC ํจํด (0) 2022.04.18 JSP (0) 2022.04.18 ์๋ธ๋ฆฟ Servlet (0) 2022.04.18