์ด๋ฒ ๊ธ์์๋ 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๋ฅผ ์ ํํ์ฌ ํธ์ง..
@Autowired๋ฅผ ์ด์ฉํ๋ฉด xml์์ ๋น์ ์ง์ ์ค์ ํ ํ์์์ด, ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์์์ ์ํ๋ ํด๋์ค๋ฅผ ์ฃผ์ ์์ผ์ค๋๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์์๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. l ์์ package com.spring.ex02; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import o..
@RequestParam ์ ๋ํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ป๋ ๋ฐฉ๋ฒ์ ๋๋ค. l ์์ ๋ค์๊ณผ ๊ฐ์ view์์ ์์ด๋๋ฅผ kbj, ์ด๋ฆ์ ๊น๋ณ์ค์ผ๋ก ์ ๋ ฅํ๊ณ ์ ์กํฉ๋๋ค. package com.spring.ex02; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.spri..
์คํ๋ง์ ๊ธฐ๋ฅ๋ค์ค ํ๋์ธ DI์ AOP๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ๋ก XML ํ์ผ์์ ์ค์ ์ ํด์ผํ์ต๋๋ค. ํ์ง๋ง XMLํ์ผ์ ์ด๋ฌํ ์ค์ ๋ค์ ํ๊ธฐ์ ๋๋ฌด๋ ๋ณต์กํ๊ณ ์ด๋ ค์ ์ต๋๋ค. ๋ฐ๋ผ์ ์คํ๋ง์์๋ DI ๊ฐ์ ์๋ฐ ์ฝ๋์ ๊ด๋ จ๋ ์ค์ ์ ์ฝ๋์์ ์ง์ ํ ์ ์๋๋ก ํ์ต๋๋ค. ๊ทธ ๊ธฐ๋ฅ์ ์ ๋ํ ์ด์ (Annotation)์ด๋ผ๊ณ ํฉ๋๋ค. ํ์ฌ ์คํ๋ง์์๋ XMLํ์ผ ์ง์ ์ค์ ๊ณผ ์ ๋ํ ์ด์ 2๊ฐ๋ฅผ ํผํฉํด์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. l ์คํ๋ง ์ ๋ํ ์ด์ ์ ๊ณต ํด๋์ค ์ ๋ํ ์ด์ ์ ์ด์ฉํ๋ ค๋ฉด XML ํ์ผ์์ ๋ค์ 2๊ฐ์ ํด๋์ค๋ฅผ ๋น์ผ๋ก ์ค์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ํด๋์ค ๊ธฐ๋ฅ DefaultAnnotationHandlerMapping ํด๋์ค ๋ ๋ฒจ์์ @RequestMapping์ ์ฒ๋ฆฌํฉ๋๋ค. AnnotationMethodHandlerMappin..
๋ง์ด๋ฐํฐ์ค์์๋ ๋ฌธ๊ณผ ๋ฌธ์ ์ด์ฉํ์ฌ sql๋ฌธ์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. l ๊ณผ AND NAME LIKE '%์ง%' SELECT * FROM TEST_TABLE WHERE 1=1 ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ sql๋ฌธ์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ sql๋ฌธ์ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํฉ๋๋ค. SELECT * FROM TEST_TABLE WHERE 1=1 AND NAME LIKE '%์ง%'; '์ง'๊ฐ ๋ค์ด๊ฐ๋ NAME์ ์ฐพ๋ ๊ตฌ๋ฌธ์ด๋ฏ๋ก ์ ์ถ๋ ฅ๊ฒฐ๊ณผ์ NAME์ด 'ํ์ง์'์ธ๊ฑธ ์ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
foreach ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด SQL๋ฌธ์์ ํ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๊ทธ์ ์ฌ๋ฌ๊ฐ์ง ์์ฑ ์์ฑ ์ค๋ช collection array์ list ์ธ์คํด์ค๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. list ์์๋ list๋ก ํ์ํ๊ณ array ์์๋ array๋ก ํ์ํฉ๋๋ค. index foreach๋ฌธ์ด ๋ฐ๋ณต๋ ๋๋ง๋ค 1์ฉ ์ฆ๊ฐ์ํค๋ฉด์ ์ ๊ทผํ๋ ๊ฐ์ ์์น๋ฅผ ๋ํ๋ ๋๋ค. item collection์ ์์ฑ์ ์ง์ ๋ ๊ฐ์ ์ ๊ทผํฉ๋๋ค. ์ฆ, ์์ฑ ์ด๋ฆ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. open ํด๋น ๊ตฌ๋ฌธ์ด ์์๋ ๋์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. close ํด๋น ๊ตฌ๋ฌธ์ด ๋๋ ๋์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. separator ๋ฐ๋ณต๋๋ ์ฟผ๋ฆฌ๋ฌธ ์ฌ์ด์ ์ง์ ํ ๊ธฐํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. l ์์ SELECT * FROM TEST_TABLE ..