@RequestMapping @Controller // ๋ด๋ถ์ @Component ์ ๋
ธํ
์ด์
์ด ์์ด์ ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๋ค public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") // ์์ฒญ์ ๋ณด๋ฅผ ๋งคํํ๋ค public ModelAndView process() { // ๋ชจ๋ธ๊ณผ ๋ทฐ์ ์ ๋ณด๋ฅผ ๋ด์์ ๋ฐํํ๋ค return new ModelAndView("new-form"); } } RequestMappingHandlerMapping์ ์คํ๋ง ๋น ์ค์์ @RequestMapping ๋๋ @Controller ๊ฐ ํด๋์ค ๋ ๋ฒจ์ ๋ถ์ด ์๋ ๊ฒฝ์ฐ์ ๋งคํ ์ ๋ณด๋ก ์ธ์ํ๋ค. ํด๋์ค ๋ ๋ฒจ์ ๋ค์๊ณผ ๊ฐ์ด @R..
Study
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์ ๋ง๋ค์ด ๋ด๋ ๊ฒ ๋ณด๋ค..
์คํ๋ง ๋ถํธ์์ ์๋ธ๋ฆฟ ์ฌ์ฉํ๊ธฐ @ServletComponentScan @WebServlet(name = "helloServlet", urlPatterns = "/hello") protected void service(HttpServletRequest request, HttpServletResponse response) : HTTP ์์ฒญ์ ํตํด ๋งคํ๋ URL์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ๋ค์ ๋ฉ์๋๋ฅผ ์คํ HTTP ์์ฒญ ๋ฐ์ดํฐ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ 1. GET - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ /url?username=hello&age=20 String username = request.getParameter("username"); //๋จ์ผ ํ๋ผ๋ฏธํฐ ์กฐํ Enumeration parameterN..
๋น ์ค์ฝํ ๋น์ด ์กด์ฌํ ์ ์๋ ๋ฒ์. @Scope("prototype")๋ก ์ง์ ๊ฐ๋ฅ ์ฑ๊ธํค : ๊ธฐ๋ณธ ์ค์ฝํ๋ก ์คํ๋ง ์ปจํ
์ด๋์ ์์๊ณผ ์ข
๋ฃ๊น์ง ์ ์ง ๋จ ํ๋กํ ํ์
: ์คํ๋ง ์ปจํ
์ด๋๋ ํ๋กํ ํ์
๋น์ ์์ฑ๊ณผ ์์กด๊ด๊ณ ์ฃผ์
๊น์ง๋ง ๊ด์ฌํ๊ณ ๋๋ ๊ด๋ฆฌํ์ง ์๋ ๋งค์ฐ ์งง์ ๋ฒ์์ ์ค์ฝํ ํด๋ผ์ด์ธํธ์ ๋น์ ๋ฐํํ๊ณ , ์ดํ ์คํ๋ง ์ปจํ
์ด๋๋ ์์ฑ๋ ํ๋กํ ํ์
๋น์ ๊ด๋ฆฌํ์ง ์๋๋ค. ํ๋กํ ํ์
๋น์ ๊ด๋ฆฌํ ์ฑ
์์ ํ๋กํ ํ์
๋น์ ๋ฐ์ ํด๋ผ์ด์ธํธ์ ์๋ค. ๊ทธ๋์ @PreDestroy ๊ฐ์ ์ข
๋ฃ ๋ฉ์๋๊ฐ ํธ์ถ๋์ง ์๋๋ค. ์น ๊ด๋ จ ์ค์ฝํ request: ์น ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ session: ์น ์ธ์
์ด ์์ฑ๋๊ณ ์ข
๋ฃ๋ ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ application: ์น์ ์๋ธ๋ฆฟ ์ปจํ
์คํธ์ ๊ฐ..