Study/Spring

ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ํฌ๊ฒŒ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค ํ•ต์‹ฌ ๊ธฐ๋Šฅ : ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ณ ์œ ์˜ ๊ธฐ๋Šฅ ์˜ˆ๋ฅผ ๋“ค์–ด BookPrinter์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ Print ๋กœ์ง ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ : ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋ณด์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ ์ถ”์  ๋กœ์ง, ์‹คํ–‰ ์‹œ๊ฐ„ ์ถœ๋ ฅ ๋“ฑ ๋ณดํ†ต ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ๊ฑธ์ณ์„œ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ถœ์„ ๋กœ๊น…ํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ƒ๊ฐํ•ด๋ณด์ž ๋กœ๊ทธ ์ถ”์  ๋กœ์ง ๊ฐ™์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์€ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(cross-cutting concerns)๊ฐ€ ๋œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ํ•˜๋‚˜์˜ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์ด ์—ฌ๋Ÿฌ ๊ณณ์— ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ๋•Œ ์•„์ฃผ ๋งŽ์€ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•˜๋‹ค. ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ..
์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 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์„ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๊ฒƒ ๋ณด๋‹ค..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
'Study/Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)