์ด ๊ธ์ ์ ๊ฐ ์ดํดํ ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ์์ฑํ์๊ธฐ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ํ๋ฆฐ ๋ถ๋ถ ์๋ค๋ฉด ์ง์ ํด์ฃผ์ธ์ :) ์คํ๋ง์์ ๋งํ๋ ์ปจํ ์คํธ(context)๋ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๋น๋ค์ด ๋ด๊ฒจ ์๋ ์ปจํ ์ด๋ ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์คํ๋ง์ ๊ณ์ ๊ณต๋ถ์ค์ด์ง๋ง ์์ฒญ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ด WebApplicationContext์ ApplicationContext์ ๊ด๊ณ, web.xml์์์ servlet-context์ root-context์ ๊ด๊ณ ๊ทธ๋ฆฌ๊ณ ContextLoaderListenter์ dispatcher-servlet์ ๊ด๊ณ ์ด ์ด 3๊ฐ์ ๊ด๊ณ๊ฐ ๋ณผ๋๋ง๋ค ํท๊ฐ๋ ธ์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๊ด๊ณ๋ค์ ์๋์ ๊ฐ์ด ๊ทธ๋ฆผํํด๋ณด์์ต๋๋ค. # web.xml์์์ Context contextConfigLocation c..
์ด ๊ธ์ ์ ๊ฐ ์ดํดํ ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ์์ฑํ์๊ธฐ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ํ๋ฆฐ ๋ถ๋ถ ์๋ค๋ฉด ์ง์ ํด์ฃผ์ธ์ :) ์คํ๋ง์์ ๋งํ๋ ์ปจํ ์คํธ(context)๋ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ ๋น๋ค์ด ๋ด๊ฒจ ์๋ ์ปจํ ์ด๋ ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์คํ๋ง์ ๊ณ์ ๊ณต๋ถ์ค์ด์ง๋ง ์์ฒญ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ด WebApplicationContext์ ApplicationContext์ ๊ด๊ณ, web.xml์์์ servlet-context์ root-context์ ๊ด๊ณ ๊ทธ๋ฆฌ๊ณ ContextLoaderListenter์ dispatcher-servlet์ ๊ด๊ณ ์ด ์ด 3๊ฐ์ ๊ด๊ณ๊ฐ ๋ณผ๋๋ง๋ค ํท๊ฐ๋ ธ์ต๋๋ค. # root-context ์ sevlet-context ํ๋ฆ ์ด ๊ธ์ WAC์ AC ๊ด๋ จ ๊ธ์ด ์๋๋ฏ๋ก root-context์ ..
# ์์ธ ํ๋ก์ ํธ ์ธ๋ถ์ ์กด์ฌํ๋ ํ์ผ ์ ๋ก๋์ ๊ฒฝ์ฐ ๋ณด์์์ ์ด์ ๋ก ์ด๋ฏธ์ง์ ์ ๊ทผํ์ง ๋ชปํฉ๋๋ค. ์ฆ ์น์์ ๋ก์ปฌํด๋๋ก ์ ๊ทผ์ด ๋ถ๊ฐํฉ๋๋ค. # ํด๊ฒฐ tomcat์ server.xml ์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค. docBase="D:/FileUpload/kssfbiz/" ์ด๋ ๊ฒ ์ค์ ํด์ฃผ์๋ฉด url๋ก ๋ค์ด๊ฐ ๋๋ localhost:8080/kssfbiz/upload ์ด๋ฐ์์ผ๋ก ๋ค์ด๊ฐ์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ฌผ๋ฆฌ์ ์ฃผ์ - D:/FileUpload/kssfbiz/ ๋ ผ๋ฆฌ์ ์ฃผ์(์ค์ ์ ์ํ ๋) - http://localhost:8080/kssfbiz/upload/ (๋ก์ปฌ์ผ์) ์ฃผ์ํ ์ ์ ๋ฐ๋์ reloadable์ true๋ก ํด์ฃผ์ ์ผ ํฉ๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์..
์ด๋ฒ ๊ธ์์๋ @RestController๋ผ๋ ์ด๋ ธํ ์ด์ ์ ๋ํด ์์ ๋ณด๊ฒ ์ต๋๋ค. @RestController๋ ์ปจํธ๋กค๋ฌ์์ ๋ธ๋ผ์ฐ์ ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ์ด๋ฅผ ์ฒ๋ฆฌํด์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธํ ๋ฐ์ดํฐ, VO ๊ฐ์ฒด์ ์์ฑ ๊ฐ, Map์ ์ ์ฅ๋ ๋ฐ์ดํฐ ๋ฑ์ ๋ณด๋ผ ์ ์๊ฒ ํด์ค๋๋ค. ์ฐ์ @RestController๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์คํ๋ง 4.0์ด์์ด์ฌ์ผ ํฉ๋๋ค. ๋ง์ฝ 3.x ๋ฒ์ ์ ์ด์ฉํ๋ค๋ฉด pom.xml์์ 1.6 4.1.1.RELEASE 1.6.10 1.6.6 4.*.* ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ์ฃผ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ JOSN ํ์์ผ๋ก ์ ๋ฌํ๊ธฐ ์ํ JSON ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค. com.fasterxml.jackson.core jackson-databind 2.5.4 # VO ๊ฐ์ฒด ์ ๋ฌํ..
# ์์ธ java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@6b6f9564 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.resolveStandardArgument(AnnotationMethodHandlerAdapter.java:826) at org.springframework.web.bind.annot..
์ด๋ฒ ๊ธ์์๋ ajax๋ฅผ ์ด์ฉํ์ฌ ํ์ผ์ ์๋ฒ์ ์ ๋ก๋ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ajax๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ตณ์ด ํ์ผ ์ ์ก์ ์ํ์ฌ form ํ๊ทธ๋ก ๊ฐ์ธ์ค ํ์๊ฐ ์์ต๋๋ค. ์ด ๊ธ์ ์คํ๋ง ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. # Front ์ ์ถํ๊ธฐ ajax์ ์์ฑ ๋๋จธ์ง๋ ์๊ฑฐ๋ผ ์๊ฐํ๊ณ processData๋ง ์ง๊ณ ๋์ด๊ฐ๋ณด๊ฒ ์ต๋๋ค. processData๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ query string ์ด๋ผ๋ ํํ๋ก ์ ๋ฌ๋ฉ๋๋ค. http://example.com/over/there?title=Main_page&action=raw ? ๋ค์ ์ฟผ๋ฆฌ์คํธ๋ง์ด ์ ๋ฌ๋ฉ๋๋ค. ์ฃผ์ํ ์ ์ ํ์ผ ์ ์ก์ด ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐ๋์ false๋ก ํด์ฃผ์ด์ผ ํฉ๋๋ค. # Back @Controller("mainControl..
Sevlet Container, Servlet์ ๋ํด ์์๋ณด์๊ณ ์ด๋ฒ์ Servlet์ ๋ํ๊ฒฉ์ ๋งก๊ณ ์๋ Dispatcher-Servlet์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. # Dispatcher-Servlet์ ์ ์ ์คํ๋ง์์ ์ ์ํ ๊ฐ๋ ์ ์๋์ ๊ฐ์ต๋๋ค. Servlet Container์์ HTTPํ๋กํ ์ฝ์ ํตํด ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ํ๋ ์ ํ ์ด์ ๊ณ์ธต์ ์ ์ผ์์ ๋ฌ์ ์ค์์ง์ค์์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ(Front Controller) ์ข ๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด, ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด์ค๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์์ฒญ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ ์ผ ์์์ ์๋ฒ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๊ฐ ์๋๋ฐ ์ด๋ฅผ Dipatcher Servlet์ด๋ผ๊ณ ํฉ๋๋ค. # Dispatcher-Servlet์ ํ..
์ด ๊ธ์ ์ ๊ฐ ์ดํดํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ต๋๋ค. ์๋ค๋ฉด ์ธ์ ๋ ์ง ์ง์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :) ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ฅผ ์ดํดํ๊ธฐ ์์ ์ปจํ ์ด๋๊ฐ ๋ฌด์์ธ์ง์ ๋ํด ์์๋ณผ ํ์๊ฐ ์์ต๋๋ค. ํํ ์คํ๋ง์ ์ฌ์ฉํ๋ฉด์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์คํ๋ง ์ปจํ ์ด๋ ์ด ๋ ๋จ์ด๋ฅผ ๋ง์ด ๋ค์ด๋ดค์ ๊ฒ๋๋ค. ๊ทธ๋ผ ์ปจํ ์ด๋๋ ๊ณผ์ฐ ๋ฌด์์ผ๊น์? # ์ปจํ ์ด๋๋? ์ฐ๋ฆฌ๊ฐ ์๊ฐํ๋ ๊ทธ ์ปจํ ์ด๋์ ์ฉ๋๊ฐ ๋น์ทํฉ๋๋ค. ๋ฌด์ญ์ ํ ๋ ์ํ์ ๊ด๋ฆฌํ๊ธฐ ์ํ์ฌ ์ปจํ ์ด๋๋ง๋ค ๋ค๋ฅด๊ฒ ๋ด์ ๋ฐฐ๋ก ์ด์กํ๋ ๊ฒ์ฒ๋ผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ด์ ๋น์ทํฉ๋๋ค. ํธ์คํธ ์ด์์ฒด์ ์์ ๊ตฌ๋๋๋ฉฐ ๊ทธ ๋ฐํ์ด ๋๋ ํ๋์จ์ด์ ๊ฐ์์ผ๋ก ์ก์ธ์คํ๋ ๊ฒ์คํธ ์ด์์ฒด์ ๋ฅผ ๋ปํ๋ ๊ฐ์๋จธ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ข ์ ํญ..
์คํ๋ง์์ DB ์ ๋ณด๋ฅผ ๊ฐ์ ์ ๋ณด๋ฅผ ์จ๊ธฐ๊ธฐ ์ํด ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊นํ์ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ฆด ๋ DB์ ๋ณด๊ฐ ์๋ properties ํ์ผ๋ง gitignore๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฐ์๋๊ฒ ํ ์ ์์ต๋๋ค. properties ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค. /WEB-INF/config/jdbc.properties PropertyPlaceholderConfigurer ํด๋์ค์ ์์ฑ์ ์ด์ฉํ์ฌ properties์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ""์์ ์ฐ์ค ํ์ ์์ต๋๋ค. ์์ ๊ฐ์ด xml ํ์ผ์์ ๋ฐ์์ ์์ต๋๋ค.
์คํ๋ง์์ ๋น์ ์ด์ฉํ jsp ๊ฒฝ๋ก ์ค์ ๋ฐฉ๋ฒ์ ๋๋ค. bean์ ์ด์ฉํ์ฌ viewResolver ํด๋์ค์ ์์ฑ์ ์์ ๊ฐ์ด ์ค์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ModelAndView mav = new ModelAndView("home"); views๋ก ๊ธฐ์ค์ผ๋ก ์๋๊ฒฝ๋ก๋ฅผ ์ ์ด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ง์ฝ views/list/home.jsp ๋ผ๋ฉด view์ ๊ฒฝ๋ก๋ /list/home์ ๋๋ค. ๋ค์ jsp๋ฅผ ๋ถ์ด์๋ฉด ์๋ฉ๋๋ค.
์๋ฐ๋ฅผ ํ๊ฒ๋๋ฉด ์ฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด System.out.println()์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ์คํ๋ง์์๋ ์ด๋ฅผ ์ฌ์ฉํ ํ์์์ด log4j๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ก๊ทธ ๊ด๋ จํ ๊ธฐ๋ฅ๋ค์ ๊ด๋ฆฌํด์ค๋๋ค. ์ด ๊ธ์ STS(Spring toos Suite)๋ก ์์ฑํ ์คํ๋ง ํ๋ก์ ํธ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. STS๋ฅผ ์ด์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ฅ ํ๋จ์ ๊ด๋ จ ๊ธ์ ํฌ์คํธํฉ๋๋ค. ์ด ๊ธ์ ์๋ฐ์น์ ๋ค๋ฃจ๋ ๊ธฐ์ ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค. log4j๋? ์คํ๋ง์ผ๋ก ๊ฐ๋ฐํ ๋ ๋ณด๋ฉด ์ฝ์์ ์์ ๊ฐ์ ์์ฒญ ๋ง์ ๋ก๊ทธ๋ค์ด ์ถ๋ ฅ๋๋๋ฐ ์ด ๋ชจ๋ ๊ฒ log4j ๋๋ถ์ ๋๋ค. ๊ฐ๋ฐํ ๋น์์ ์ฌ์ฉํ๋ ๋ก๊ทธ ๋ฉ์์ง๋ค์ ์ค์ ๋ก ์๋น์คํ ๋ ์ ํ ํ์์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ด ๊ฒฝ์ฐ ์ผ์ผ์ด ์ฐพ์์ ํด๋น ๋ก๊ทธ๋ค์ ์ญ์ ํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด๋..
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ํ์ ์ฐฝ์ ์ฌ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. l window.open() ํจ์ window.open() ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ฝ๊ฒ ํ์ ์ฐฝ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. window.open("ํ์ ์ฐฝ์ผ๋ก ์ฌ์ฉํ ํ์ผ(๊ฒฝ๋กํฌํจ) ๋๋ uri","์ง์ ํ ํ์ ์ ์ด๋ฆ","ํฌ๊ธฐ์ ์์น"); l ์์ window.open("test.html","ํ์ ํ ์คํธ","width=400, height=300, top=10, left=10"); popup.html๋ฅผ ์์ ๊ฐ์ด ํด์ฃผ์์ต๋๋ค. ํ์ ์ฐฝ ํธ์ถํ ํ์ ์ฐฝ์ html์ ๋๋ค. ์ธ๋ฒ์งธ ์ธ์๋ฅผ ์กฐ์ ํ์ฌ ํ์ ์ ํฌ๊ธฐ ๋ํ ์กฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
l ์์ธ jsp์ List ๊ด๋ จ ํด๋์ค๊ฐ ์์ด์ ์๋ฌ๊ฐ ๋ฉ๋๋ค. l ํด๊ฒฐ ๋ฐ๋ผ์ jsp์์ ์๋์ ๊ฐ์ด import ์์ผ์ฃผ๋ฉด ๋ฉ๋๋ค.
l ์์ธ http://localhost:8080/adm/main_visual?mode=insert&orderKey=regist_dt&startPage=-1&orderVal=desc&searchKey[]=use_yn ํฐ์บฃ์์ ๋๋ ์ค๋ฅ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฟผ๋ฆฌ์คํธ๋ง์ [] ๊ฐ์ ํน์๋ฌธ์๊ฐ ์์ด์ ๋๋ ์๋ฌ์ ๋๋ค. l ํด๊ฒฐ server.xml์์ relaxedQueryChars="[,]" ์ ์ถ๊ฐํด์ฃผ๋ฉด ํด๊ฒฐ ์๋ฃ!
๋ฉ์ด๋ธ์ ์คํ ์์ค ๋น๋ ํด์ ๋๋ค. ๋ฉ์ด๋ธ์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ Dependency ์์๊น์ง ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ฉ์ด๋ธ์ ํ๋ก์ ํธ ์ ๋ฐ์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ค์ ํ์ผ ๊ทธ๋ฆฌ๊ณ ์ด์ ๊ด๋ จ๋ ํ์ค ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฒ์๋ถํฐ ์ผ๊ด๋ ํํ๋ก ๊ตฌ์ฑํ์ฌ ๊ด๋ฆฌํฉ๋๋ค. l ๋ฉ์ด๋ธ(Maven) ์ค์นํ๊ธฐ maven.apache.org/download.cgi ๋ก ์ ์ํ์ฌ ํ์ผ์ ๋ค์ด๋ก๋ ํฉ๋๋ค. ์์ถ์ ํ๊ณ bin ํ์ผ ์์ ์๋ ํด๋๋ฅผ C:\spring ํด๋์ ๋ฃ์ต๋๋ค. l ๋ฉ์ด๋ธ ํ๊ฒฝ ๋ณ์ ์ค์ ํ๊ธฐ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์์คํ ์์ฑ์์ ํ๊ฒฝ๋ณ์๋ฅผ ๋๋ฌ์ค๋๋ค. ์๋ก๋ง๋ค๊ธฐ ๋ฒํผ์ ๋๋ฌ ๋ณ์์ด๋ฆ์ MAVEN_HOME์ผ๋ก ํ๊ณ ์๊น ๋ณต์ฌํ๋ ๊ฒฝ๋ก๋ฅผ ๋ถ์ฌ์ค๋๋ค. Path๋ฅผ ์ ํํ์ฌ ํธ์ง..