์์ฆ ํ์ฌ ์
๋ฌด๋ฅผ ๋ณด๋ฉด์ CS์ง์์ด ๋ถ์กฑํด ์
๋ฌด์ ๋ํ ์ดํด๋ฅผ ์๋ฒฝํ ํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ๊ทธ๋์ ์ฐ์ ์ปดํจํฐ ๊ตฌ์กฐ & ์ด์์ฒด์ ์ ๋ํด ๊ณต๋ถํ๊ธฐ ์ํด ์ธํฐ๋ท์ ์ฌ๋ผ์์๋ ๋ฐํจ๊ฒฝ ๊ต์๋์ ๊ฐ์๋ฅผ ์๊ฐํ๊ณ ์๋ค. ๊ณต๋ถ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์ ํ๋ํ๋์ฉ ์ ๋ฆฌํ๋ ค ํ๋ค. ์ด์์ฒด์ ์ฒซ ๊ฐ์ ์ค ์ธํฐ๋ฝํธ๋ผ๋ ์์ํ ์ฉ์ด๊ฐ ๋์๋ค.. ์ด๋ฒ ์๊ฐ์ ์ธํฐ๋ฝํธ๋ผ๋ ๊ฒ์ด ์ ์กด์ฌํ๋ฉฐ ๋ฌด์จ ์ญํ ์ ํ๋์ง ์กฐ๊ธ ๋ ์์๋ณด๊ฒ ๋ค. ์ธํฐ๋ฝํธ๋ ๋ฌด์์ธ๊ฐ? ์ฐ์ ์ธํฐ๋ฝํธ๊ฐ ๋๋ต ๋ฌด์์ธ์ง ์ดํดํ๊ธฐ ์ฝ๊ฒ ์์๋ฅผ ๋ค์ด๋ณด์. ๐ฃ ๋๋ ์ง๊ธ ๋ธ๋ก๊ทธ ๊ธ์ ์ฐ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ์ค ์ค์ํ ์ ํ๊ฐ ์จ๋ค. ๊ทธ๋ฌ๋ฉด ๋๋ ๊ธ ์ฐ๋ ๊ฒ๋ณด๋ค ์ ํ๋ฅผ ๋ฐ๋ ํ์๊ฐ ์ฐ์ ์์๊ฐ ๋ ๊ฒ์ด๋ค. ์ ์ ๊ธ์ฐ๋ ๊ฒ์ ๋ฉ์ถ๊ณ ํตํ๋ฅผ ํ๊ฒ ๋๊ณ , ํตํ๊ฐ ๋๋ ํ์๋ ๋ค์ ๊ธ ์ฐ๋..
๐ ํน์ ๋ณ์ ๊ทธ๋ํ ์ถ๋ ฅ (JMeter Dashboard ํ์ฉ) 1. ๋ณ์ ์ค์ ๊ทธ๋ํ๋ก ๋ํ๋ผ ๋ณ์๊ฐ์ ์ง์ ํ๋ค. ์๋๋ ๋๋ค๊ฐ์ ๋ณ์์ ์ฝ์
ํ๊ธฐ ์ํด JSR223 Sampler๋ฅผ ์ด์ฉํด sampleTime ์ด๋ผ๋ ๋ณ์์์ ์์์ ์ ์๊ฐ์ ๋ฃ์ด์ฃผ๋๋ก ํ์๋ค. import java.util.concurrent.ThreadLocalRandom; int[] array = ThreadLocalRandom.current().ints(0, 1000).distinct().limit(5).toArray(); vars.put("sampleTime", String.valueOf(array[0])); 2. user.properties ์ค์ ์ปค์คํ
๊ทธ๋ํ ์์ฑ์ ์ํด ์๋ property๋ฅผ ์ถ๊ฐํด์ค๋ค. ๐ ํ์ผ๊ฒฝ๋ก : (..
- 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()๋ก ์ญ์ ํด์ฃผ์๋ค..
์๋ฅผ ๋ค์ด ๋ ์ง๋ฅผ ์๋ผ์ ๊ฐ์ ธ์์ ๋, 08์๋ก ๊ฐ์ ธ์จ ๋ฌธ์์ด์ 8์๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ. let month = '${param1.month}'.replace(/(^0+)/, ""); ์ ๊ท์์ ํ์ฉํ์ฌ ์์ ๋ถ์ 0์ ์์ค๋ค.
String sql = " SELECT SEQ, ID, TITLE, CONTENT, RDATE, WDATE " + " FROM " + " (SELECT ROW_NUMBER()OVER(PARTITION BY SUBSTR(RDATE, 1, 8)ORDER BY RDATE ASC) AS RNUM, " + " SEQ, ID, TITLE, CONTENT, RDATE, WDATE " + " FROM CALENDAR " + " WHERE ID=? AND SUBSTR(RDATE, 1, 6)=? ) " + " WHERE RNUM BETWEEN 1 AND 5 "; ROW_NUMBER()OVER(): ์ํ๋ ์ปฌ๋ผ๋ง ์ ๋ ฌํด ์๋ฒ์ ๋งค๊ธด๋ค. PARTITION BY SUBSTR(RDATE, 1, 8) : ์ฐ๋/์/์ผ (EX 202..
AOP ( Aspect Oriented Programming ) : ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ - ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๊ณตํต ๊ธฐ๋ฅ์ ๋ถ๋ฆฌ ์์ผ๋๊ณ , ๊ณตํต ๊ธฐ๋ฅ์ ํ์๋ก ํ๋ ํต์ฌ ๊ธฐ๋ฅ๋ค์์ ์ฌ์ฉํ๋ ๋ฐฉ์ - ๊ณตํต ๊ธฐ๋ฅ๊ณผ ํต์ฌ ๊ธฐ๋ฅ์ด ์ง์ ์ ์ผ๋ก ์ ์ดํ์ง ์๊ณ Proxy๋ฅผ ํตํด์ ์ํ - ์ฉ์ด ์ ๋ฆฌ ํ๊ฒ (Target) ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ถ์ฌํ ๋์ ์ ์คํํธ (Aspect) ๋ถ๊ฐ๊ธฐ๋ฅ ๋ชจ๋ (๋ถ๊ฐ๋ ๊ธฐ๋ฅ์ ์ ์ํ ์ด๋๋ฐ์ด์ค์ ์ด๋๋ฐ์ด์ค๋ฅผ ์ด๋์ ์ ์ฉํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํฌ์ธํธ์ปท์ ํจ๊ป ๊ฐ์ง๊ณ ์๋ค.) ์ด๋๋ฐ์ด์ค (Advice) ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ด์ ๊ตฌํ์ฒด ํฌ์ธํธ์ปท (PointCut) ์ด๋๋ฐ์ด์ค๋ฅผ ์ ์ฉํ ์กฐ์ธํฌ์ธํธ๋ฅผ ์ ๋ณํ๋ ๊ธฐ๋ฅ์ ์ ์ ์กฐ์ธํฌ์ธํธ (JoinPoint) ์ด๋๋ฐ์ด์ค๊ฐ ์ ์ฉ๋ ์ ์๋ ์์น (Spring์์๋ ํ๋ก์๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ..