๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ“– TIL (Today I Learned)

- Spring์œผ๋กœ ํˆฌํ‘œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ 1. ํˆฌํ‘œ ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ DB ํ…Œ์ด๋ธ” ์ž‘์„ฑ POLL ํ…Œ์ด๋ธ” : ํˆฌํ‘œ ๊ธ€์— ๋Œ€ํ•œ ๋ฒˆํ˜ธ(PK)์™€ ์ž‘์„ฑ์ž, ์ž‘์„ฑ์ œ๋ชฉ, ํˆฌํ‘œ ์‹œ์ž‘ ๋‚ ์งœ, ๋๋‚˜๋Š” ๋‚ ์งœ, ํˆฌํ‘œ ํ•ญ๋ชฉ ๊ฐœ์ˆ˜, ์ด ํˆฌํ‘œ์ˆ˜, ๊ธ€ ์ƒ์„ฑ ์‹œ๊ฐ„์„ ๋‹ด๊ณ  ์žˆ๋‹ค. POLLSUB ํ…Œ์ด๋ธ” : POLL ํ…Œ์ด๋ธ”์˜ POLLID(ํˆฌํ‘œ๊ธ€ ๋ฒˆํ˜ธ)๋ฅผ ๋ฐ›์•„์™€ ํˆฌํ‘œ ํ•ญ๋ชฉ๋“ค ๊ฐ๊ฐ์˜ ์ด๋ฆ„๊ณผ ํˆฌํ‘œ ์ˆ˜๋ฅผ ๋‹ด์•„๋‘”๋‹ค. VOTER ํ…Œ์ด๋ธ” : ID๊ฐ€ ํˆฌํ‘œํ–ˆ์„ ๋•Œ ์–ด๋–ค ํˆฌํ‘œ๊ธ€์— ์–ด๋–ค ํ•ญ๋ชฉ์„ ํˆฌํ‘œํ–ˆ๋Š”์ง€์™€ ํˆฌํ‘œํ•œ ์‹œ๊ฐ„์„ ๋‹ด์•„๋‘”๋‹ค. 2. MyBatis๋ฅผ ํ™œ์šฉํ•œ ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ Poll.xml SELECT POLLID, ID, QUESTION, SDATE, EDATE, ITEMCOUNT, POLLTOTAL, REGDATE FROM POLL ORDER BY SDATE DE..
์ด์ „ ์ดํด๋ฆฝ์Šค์—์„œ Model1 ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค์—ˆ๋˜ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ตฌํ˜„์„ ์Šคํ”„๋ง์—์„œ ๋‹ค์‹œ ํ•ด๋ณด์•˜๋‹ค. ์ด์ „๋ณด๋‹ค ๊ฐ„ํŽธํ•ด์ง„ ์ ์€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ MultipartFile ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ file form์„ ์‰ฝ๊ฒŒ ๋”ฐ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ. ๊ธฐ๋ณธ ์„ธํŒ… 1. ๋ฉ”์ด๋ธ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์—์„œ fileupload ๊ฒ€์ƒ‰ 2. Apache Commons FileUpload์˜ maven ํƒœ๊ทธ ๊ฐ€์ ธ์™€์„œ pom.xml์— ์ž‘์„ฑ (์•„๋ž˜ ํƒœ๊ทธ) commons-fileupload commons-fileupload 1.3.3 3. /spring ํด๋”์— file-context.xml ์ž‘์„ฑ file-context.xml 0 5. web.xml์— xml ๊ฒฝ๋กœ ์ถ”๊ฐ€ dispatcher org.springframework.web.servlet.Disp..
Spring ํ”„๋ ˆ์ž„์›Œํฌ์™€ ajax๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ์บ˜๋ฆฐ๋”๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ตฌํ˜„ ๋ฐฉ์‹์€ ์บ˜๋ฆฐ๋” ์ƒ๋‹จ์— new Date()๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ˜„์žฌ ๋…„, ์›”์„ ํ‘œ์‹œํ•˜์˜€๊ณ , ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ‘œ์‹œํ•˜๋Š” ๋…„, ์›”์˜ ์ˆซ์ž๊ฐ€ ๋ฐ”๋€” ๋•Œ ๊ทธ ํƒœ๊ทธ text๊ฐ’์„ JQuery๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์™€ ajax Data๋กœ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค ajax๋ฅผ ์žฌํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹. ๋…„, ์›”์˜ ๊ฐ’์„ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ณด๋‚ด์–ด ํ•ด๋‹น ์›”์˜ ์Šค์ผ€์ค„์„ List ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ ์›”์˜ ์ฒซ์งธ๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰ ์ผ์ˆ˜ ๋“ฑ์„ ๊ตฌํ•ด ๊ธฐ๋ณธ form์„ ๋งŒ๋“ค๊ณ  append()๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ํƒœ๊ทธ๋ฅผ ๋ฟŒ๋ ค์ฃผ์—ˆ๋‹ค. ๋…„, ์›”์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ๋‚จ์•„์žˆ๋˜ ํƒœ๊ทธ๋Š” ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฟŒ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ์„ฑ๋œ trํƒœ๊ทธ์˜ class ์ด๋ฆ„์„ ํ†ต์ผํ•˜์—ฌ remove()๋กœ ์‚ญ์ œํ•ด์ฃผ์—ˆ๋‹ค..
AOP ( Aspect Oriented Programming ) : ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌ ์‹œ์ผœ๋†“๊ณ , ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ๋“ค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ - ๊ณตํ†ต ๊ธฐ๋Šฅ๊ณผ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ์ง์ ‘์ ์œผ๋กœ ์ ‘์ด‰ํ•˜์ง€ ์•Š๊ณ  Proxy๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰ - ์šฉ์–ด ์ •๋ฆฌ ํƒ€๊ฒŸ (Target) ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•  ๋Œ€์ƒ ์• ์ŠคํŽ™ํŠธ (Aspect) ๋ถ€๊ฐ€๊ธฐ๋Šฅ ๋ชจ๋“ˆ (๋ถ€๊ฐ€๋  ๊ธฐ๋Šฅ์„ ์ •์˜ํ•œ ์–ด๋“œ๋ฐ”์ด์Šค์™€ ์–ด๋“œ๋ฐ”์ด์Šค๋ฅผ ์–ด๋””์— ์ ์šฉํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํฌ์ธํŠธ์ปท์„ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.) ์–ด๋“œ๋ฐ”์ด์Šค (Advice) ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ๋‹ด์€ ๊ตฌํ˜„์ฒด ํฌ์ธํŠธ์ปท (PointCut) ์–ด๋“œ๋ฐ”์ด์Šค๋ฅผ ์ ์šฉํ•  ์กฐ์ธํฌ์ธํŠธ๋ฅผ ์„ ๋ณ„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ •์˜ ์กฐ์ธํฌ์ธํŠธ (JoinPoint) ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜ (Spring์—์„œ๋Š” ํ”„๋ก์‹œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌ..
view์—์„œ controller๋กœ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ 1. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ JSP๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ view ์Šคํฌ๋ฆฝํ‹€๋ฆฟ๊ณผ elํƒœ๊ทธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ๋ฒˆํ˜ธ : ์ด๋ฆ„ : number : ${mycls.number } name : ${mycls.name } controller model์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ @RequestMapping(value = "hello.do", method = RequestMethod.GET) public String hello(Model model) { logger.info("HelloController hello() " + new Date()); MyClass cls = new MyClass(1001, "ํ™๊ธธ๋™"); model.addAttribute("mycls", cls); return "..
MyBatis Framework ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •ํ•œ SQL, ์ €์žฅํ”„๋กœ์‹œ์ € ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ๋งคํ•‘์„ ์ง€์›ํ•˜๋Š” ํผ์‹œ์Šคํ„ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ MyBatis ์‚ฌ์šฉ ์ด์œ  1. ์‰ฌ์šด ์ ‘๊ทผ์„ฑ๊ณผ ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐํ•จ - JDBC์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ MyBatis๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ œ๊ณตํ•œ๋‹ค. - ๋ณต์žกํ•œ JDBC ์ฝ”๋“œ๋ฅผ ๊ฑท์–ด๋‚ด๋ฉฐ ๊น”๋”ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ˆ˜๋™์ ์ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •๊ณผ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ๋งตํ•‘ ๊ตฌ๋ฌธ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. 2. SQL ๋ฌธ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋“œ์˜ ๋ถ„๋ฆฌ - SQL์— ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 3. ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ Spring์—์„œ MyBatis ์„ธํŒ… ๋ฐฉ๋ฒ• 1. lib ํด๋”์— mybatis-3.4.6.jar(mvnrepository.com/ ์—์„œ mybatis ๊ฒ€์ƒ‰ ..
Spring Framework - ์ž๋ฐ” ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”„๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ์†”๋ฃจ์…˜ Spring์˜ ์‚ฌ์šฉ ๋ชฉ์  1. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์˜ ๋ณต์žกํ•จ - ๊ธฐ์ˆ ์ ์ธ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋Š˜์–ด๋‚จ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ณต์žก๋„ ์ฆ๊ฐ€ 2. ๋ณต์žกํ•จ์„ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๋…ธ๋ ฅ - ์ œ๊ฑฐ ๋  ์ˆ˜ ์—†๋Š” ๊ทผ๋ณธ์ ์ธ ๋ณต์žกํ•จ, ์‹คํŒจํ•œ ํ•ด๊ฒฐ์ฑ… EJB 3. ๋ณต์žกํ•จ์„ ์ƒ๋Œ€ํ•˜๋Š” ์Šคํ”„๋ง ์ „๋žต - ์„œ๋น„์Šค ์ถ”์ƒํ™”, AOP, ๊ฐ์ฒด์ง€ํ–ฅ, DI 4. ๊ธฐ์ˆ ์ ์œผ๋กœ ์Šคํ”„๋ง์ด ์ง€ํ–ฅํ•˜๋Š” ๋ชฉ์  ์ •์˜ - POJO๋ฅผ ์ด์šฉํ•œ ๊ฐ€๋ณ๊ณ  ๋น„์นจํˆฌ์  ๊ฐœ๋ฐœ - POJO (Plain Old Java Object) - ์˜ค๋ž˜๋œ ๋ฐฉ์‹์˜ ์ž๋ฐ” ์˜คํ”„์ ํŠธ Java EE ๋“ฑ์˜ ์ค‘๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํ•ด..
EL(Expression Language) ํƒœ๊ทธ ์‚ฌ์šฉ ๋ชฉ์  : front end์—์„œ Java๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•จ ELํƒœ๊ทธ ํ˜•์‹ --> ${๊ฐ’ or ์—ฐ์‚ฐ์‹} ์Šคํฌ๋ฆฝํ‹€๋ฆฟ๊ณผ EL ํƒœ๊ทธ์˜ ๋น„๊ต s = s = ${_str } - ๋ฌธ์ž ์ถœ๋ ฅ ${'๊ฐ’' } - ์—ฐ์‚ฐ ๊ฐ€๋Šฅ ${2+3 } - ์‚ผํ•ญ์—ฐ์‚ฐ์ž ๊ฐ€๋Šฅ ${3>2?100:200 } - ์†์„ฑ๊ฐ’(setAttribute)์„ ํ†ตํ•œ ๋ฌธ์ž์—ด ์ถœ๋ ฅ ๊ฐ€๋Šฅ ${data } - empty, not empty : ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€ (true, false) Object๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€? obj = ${empty _obj } obj = ${not empty _obj } - ํŒ๋ณ„์‹(true/false), ์—ฐ์‚ฐ์‹(value) 1 < 9 = ${1 < 9 } 1 + 3 = ${1 + 3 } ..
EastShine_
'๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ“– TIL (Today I Learned)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก