
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ํ์ ์ฐฝ์ ์ฌ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ธ์ ๋๋ค. 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 ..

ํ๊ทธ๋ switch๋ฌธ๊ณผ ๋น์ทํ ์ญํ ์ ํฉ๋๋ค. l ํ๊ทธ SELECT * FROM TEST_TABLE WHERE 1=1 AND NAME=#{name} AND ID=#{id} AND NAME='ํ์ง์' AND ID='ํ์ง์' switch์ case ๋ฌธ์ฒ๋ผ choose๋ฌธ์์๋ when ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์กฐ๊ฑด์์๋ ํญ์ test๋ฅผ ๋ถ์ฌ์ค์ผ ํฉ๋๋ค. ์ ์ฝ๋์์๋ ๋ง์ฝ name, id๊ฐ ์์ผ๋ฉด ์ฒซ๋ฒ์งธ when์ด, name๋ง ์์ผ๋ฉด ๋๋ฒ์งธ when์ด, id๋ง ์์ผ๋ฉด ์ธ๋ฒ์งธ when ์คํ๋๋ ์ฝ๋์ ๋๋ค. public MemberVO selectIF() { sqlMapper = getInstance(); SqlSession session = sqlMapper.openSession(); MemberVO mem..

๋ง์ด๋ฐํฐ์ค์์๋ ๋์ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ํด์ฃผ๋ ์ฌ๋ฌ ๊ฐ์ง์ ํ๊ทธ๋ค์ด ์๋๋ฐ, ์ด๋ฒ ๊ธ์์ ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. l if๋ฌธ์ ๋ค๋ฅธ ์ฝ๋์์์์ if๋ฌธ๊ณผ ์ฌ์ฉ ์ฉ๋๊ฐ ๋น์ทํฉ๋๋ค. ๋ ์ฌ์ฉ๋ฐฉ๋ฒ๋ ์์ฃผ ์ ์ฌํฉ๋๋ค. ์ฃผ์ํ ์ ์ ๋ฐ๋์ ์กฐ๊ฑด๋ฌธ์์ test=""๋ฅผ ์ ์ด์ฃผ์ ์ผ ํฉ๋๋ค. SELECT * FROM TEST_TABLE WHERE 1=1 AND name=#{name} ๋ง์ฝ name์ด๋ผ๋ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ํ์ ํ๊ทธ๋ฅผ ์คํํ๊ฒ ๋ฉ๋๋ค. ์๋ค๋ฉด if ํ๊ทธ์ ํ์ ํ๊ทธ๋ ๋ฌด์๋ฉ๋๋ค. public MemberVO selectIF() { sqlMapper = getInstance(); SqlSession session = sqlMapper.openSession(); MemberVO memberVo = new MemberV..

l List ๋ฐ๋ณต๋ฌธ ํฅ์๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์๋ฐ์ ์ปฌ๋ ์ ์ธ List๋ฅผ ๋ฐ๋ณต๋ฌธ ํ์ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค. public void put(String string, List resultList) { for(MemberVO vo : resultList) { System.out.println(vo); } } for(MemberVO vo : resultList) { System.out.println(vo); } ์ฌ๊ธฐ์ List์ ๊ธธ์ด๋ 2์ ๋๋ค. l ์ถ๋ ฅ ๊ฒฐ๊ณผ ํญ์น๋ ๋ฐ๋ณต๋ฌธ์ List ๋ง๊ณ ๋ ArrayList, HashMap, Map ๋ฑ ์๋ฐ์ ๋ค์ํ ์ปฌ๋ ์ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"

์ค๋ผํด ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ ์ฝ๋๋ค์ค ์ต๋ seq๋ฅผ ๊ฐ์ง๋ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. l ์์ ์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๋ค์ด ์์ต๋๋ค. ๊ฐ์ฅ ํฐ seq์ธ 106์ row๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ต๋๋ค. (๋งจ ์ ์ปฌ๋ผ์ด seq์ ๋๋ค.) SELECT ROWNUM, TEMP.* FROM ( SELECT * FROM TABLE_01 WHERE 1=1 ORDER BY SEQ DESC ) TEMP WHERE 1=1 AND ROWNUM = 1 ORDER BY๋ก ์์๋ฅผ ์ ํ ๋ค ROWNUM์ ์ด์ฉํด ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. l ๊ฒฐ๊ณผ ์คํ ๊ฒฐ๊ณผ ์ ๊ฐ์ ธ์จ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"

๋ง์ด๋ฐํฐ์ค์์ ์ ๊ณตํ๋ SqlSession ํด๋์ค์์๋ CRUD๋ฅผ ์ํ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ์ ์ธ select ๊ด๋ จ ๋ฉ์๋๋ ์๋ ํ ์ด๋ธ๊ณผ ๊ฐ์ต๋๋ค. ๋ฉ์๋ ๊ธฐ๋ฅ List selectList(query_id) id์ ๋ํ select๋ฌธ์ ์คํํ ํ ๋ ์ฝ๋๋ฅผ List๋ก ๋ฐํํฉ๋๋ค. List selectList(query_id, '์กฐ๊ฑด') id์ ๋ํ select๋ฌธ์ ์คํํ๋ฉด์ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ์์ ์ฌ์ฉํ ์ธ์)๋ฅผ ์ ๋ฌํฉ๋๋ค. T selectOne(query_id) id์ ๋ํ select๋ฌธ์ ์คํํ ํ ํ๊ฐ์ ๋ ์ฝ๋๋ฅผ ์ง์ ํ ํ์ ์ผ๋ก ๋ฐํํฉ๋๋ค. T selectOne(query_id, '์กฐ๊ฑด') id์ ๋ํ select๋ฌธ์ ์คํํ๋ฉด์ ์กฐ๊ฑด(์ฟผ๋ฆฌ๋ฌธ์์ ์ฌ์ฉํ ์ธ์)๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ญ์ ์ดํดํ๋๋ฐ ์์๋ฅผ..

l null null์ ์ด๋ ํ ๊ฐ์ผ๋ก๋ ์ด๊ธฐํ ๋์ง ์๋ ๊ฐ์ ๋๋ค. ํ ๋ฉ๋ชจ๋ฆฌ์ ์์ญ์ด ์กด์ฌํ์ง๋ ์์ฃ . ๋ง์ฝ String str = null; ์ด๋ฐ ์์ผ๋ก ์ ์ธํด์ค๋ค๋ฉด ๋์ค์ ์ฌ์ฉํ๊ฒ ๋ค ์๊ณ ํ ์ํ์ด์ง ์กด์ฌํ๋ ๊ฒ์ ์๋๋๋ค. ์ฌ์ง์ฒ๋ผ ํด์ง๊ฝ๋ ์๋ ์ํ์ด์ฃ . l "" ""์ ํ๋์ String์ ๋๋ค. "str", "strstrstrstr"์ ๊ฐ์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์๋ ์ํ์ ๋๋ค. ์ ์ฌ์ง์์ 0์ด ""์ ๊ฐ๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. null ๊ณผ ๋ค๋ฅด๊ฒ ํด์ง๊ฝ์ ์์ต๋๋ค. l ์์ฝ null : ์ฌ์ฉํ๊ฒ ๋ค ์๊ณ ํ ์ํ "" : ์ด๋ฏธ ์ฌ์ฉํ ์ํ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. "๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"