ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ํฌ๊ฒ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก ๋๋ ์ ์๋ค ํต์ฌ ๊ธฐ๋ฅ : ํด๋น ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๊ณ ์ ์ ๊ธฐ๋ฅ ์๋ฅผ ๋ค์ด BookPrinter์ ํต์ฌ ๊ธฐ๋ฅ์ Print ๋ก์ง ๋ถ๊ฐ ๊ธฐ๋ฅ : ํต์ฌ ๊ธฐ๋ฅ์ ๋ณด์กฐํ๊ธฐ ์ํด ์ ๊ณต๋๋ ๊ธฐ๋ฅ ์๋ฅผ ๋ค์ด ๋ก๊ทธ ์ถ์ ๋ก์ง, ์คํ ์๊ฐ ์ถ๋ ฅ ๋ฑ ๋ณดํต ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ํด๋์ค์ ๊ฑธ์ณ์ ํจ๊ป ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
ํธ์ถ์ ๋ก๊น
ํด์ผ ํ๋ ์๊ตฌ์ฌํญ์ ์๊ฐํด๋ณด์ ๋ก๊ทธ ์ถ์ ๋ก์ง ๊ฐ์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ํก๋จ ๊ด์ฌ์ฌ(cross-cutting concerns)๊ฐ ๋๋ค. ์ฝ๊ฒ ๋งํด ํ๋์ ๋ถ๊ฐ ๊ธฐ๋ฅ์ด ์ฌ๋ฌ ๊ณณ์ ๋์ผํ๊ฒ ์ฌ์ฉ๋๋ค๋ ๋ป์ด๋ค. ํ์ง๋ง ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฉํ ๋ ์๊ธฐ๋ ๋ฌธ์ ์ ์ด ์๋ค ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฉํ ๋ ์์ฃผ ๋ง์ ๋ฐ๋ณต์ด ํ์ํ๋ค. ๋ถ๊ฐ ๊ธฐ๋ฅ..
Study/Spring
์ปจํธ๋กค๋ฌ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ์ด์ ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ์ ์ปจํธ๋กค๋ฌ๋ ๋งค์ฐ ๋ค์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. HttpServletRequest , Model์ ๋ฌผ๋ก ์ด๊ณ , @RequestParam , @ModelAttribute ๊ฐ์ ์ ๋
ธํ
์ด์
๊ทธ๋ฆฌ๊ณ @RequestBody , HttpEntity ๊ฐ์ HTTP ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ๊น์ง ๋งค์ฐ ํฐ ์ ์ฐํจ์ ๋ณด์ฌ์ฃผ์๋ค. ์ด๋ ๊ฒ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ์ด์ ๋ ๋ฐ๋ก ArgumentResolver ๋๋ถ์ด๋ค. ์ ๋
ธํ
์ด์
๊ธฐ๋ฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ RequestMappingHandlerAdaptor ๋ ArgumentResolver ๋ฅผ ํธ์ถํด์ ์ปจํธ๋กค๋ฌ(ํธ๋ค๋ฌ)๊ฐ ํ์๋ก ํ๋ ๋ค์ํ ํ๋ผ๋ฏธํฐ์ ๊ฐ(๊ฐ์ฒด)์ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฆฌ๋ฏธํฐ์ ๊ฐ์ด ๋ชจ๋..
@RequestMapping @Controller // ๋ด๋ถ์ @Component ์ ๋
ธํ
์ด์
์ด ์์ด์ ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๋ค public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") // ์์ฒญ์ ๋ณด๋ฅผ ๋งคํํ๋ค public ModelAndView process() { // ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ ๋ณด๋ฅผ ๋ด์์ ๋ฐํํ๋ค return new ModelAndView("new-form"); } } RequestMappingHandlerMapping์ ์คํ๋ง ๋น ์ค์์ @RequestMapping ๋๋ @Controller ๊ฐ ํด๋์ค ๋ ๋ฒจ์ ๋ถ์ด ์๋ ๊ฒฝ์ฐ์ ๋งคํ ์ ๋ณด๋ก ์ธ์ํ๋ค. ํด๋์ค ๋ ๋ฒจ์ ๋ค์๊ณผ ๊ฐ์ด @R..
FrontController ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์๋ธ๋ฆฟ ํ๋๊ฐ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๊ณ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ์์ฒญ์ ๋ง๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐพ์์ ํธ์ถํด์ฃผ๋ ํ์. ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ปจํธ๋กค๋ฌ๋ ์๋ธ๋ฆฟ์ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. ํธ๋ค๋ฌ ์ปจํธ๋กค๋ฌ์ ์ด๋ฆ์ ๋ ๋์ ๋ฒ์์ธ ํธ๋ค๋ฌ๋ก ๋ณ๊ฒฝํ๋ค. ํธ๋ค๋ฌ ์ด๋ํฐ ๋ค์ํ ์ข
๋ฅ์ ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ํฐ public interface MyHandlerAdapter { boolean supports(Object handler); // ์ด๋ํฐ๊ฐ ํด๋น ์ปจํธ๋กค๋ฌ(ํธ๋ค๋ฌ)๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ํ๋จ ModelView handle(HttpServletRequest request, HttpServletResponse response, Object handler) ..
์๋ธ๋ฆฟ์์ ํ
ํ๋ฆฟ ์์ง์ผ๋ก @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("\n" + "\n" + "\n" + "\n" + "\n" + "\n"); } ์๋ธ๋ฆฟ๊ณผ ์๋ฐ ์ฝ๋๋ง์ผ๋ก ์์ ์ฝ๋์ฒ๋ผ HTML์ ๋ง๋ค ์ ์๋ค. ํ์ง๋ง ์ด๊ฒ์ ๋งค์ฐ ๋ณต์กํ๊ณ ๋นํจ์จ์ ์ด๋ค. ์๋ฐ ์ฝ๋๋ก HTML์ ๋ง๋ค์ด ๋ด๋ ๊ฒ ๋ณด๋ค..