<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>즐거운 코딩 생활 ( funyphp ) &amp;gt; community &amp;gt; jsp&amp;amp;servlet</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp</link>
<language>ko</language>
<description>jsp&amp;amp;servlet (2024-01-31 16:48:42)</description>

<item>
<title>[ springboot ] 스프링부트 3.0 이상버젼 jstl 추가시  javax.servlet.jsp.tagext.TagLibraryValidator 오류</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=24</link>
<description><![CDATA[<p>책이 좀 예전 책이라 jstl 추가 구문이 다르더라구요.</p>
<p><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&lt;</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#ac9461;">dependency</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6e7ed9;">  &lt;</span><span style="color:#ac9461;">groupId</span><span style="color:#6e7ed9;">&gt;</span><span style="color:#96979c;">javax.servlet</span><span style="color:#6e7ed9;">&lt;/</span><span style="color:#ac9461;">groupId</span><span style="color:#6e7ed9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6e7ed9;">  &lt;</span><span style="color:#ac9461;">artifactId</span><span style="color:#6e7ed9;">&gt;</span><span style="color:#96979c;">jstl</span><span style="color:#6e7ed9;">&lt;/</span><span style="color:#ac9461;">artifactId</span><span style="color:#6e7ed9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="font-size:9.8pt;color:#359ff4;">&lt;/</span><span style="font-size:9.8pt;color:#ac9461;">dependency</span><span style="font-size:9.8pt;color:#359ff4;">&gt;</span></p>
<p>이렇게 되어있더라구요 </p>
<p>검색을 해보니 버젼을 넣으라고 해서</p>
<p>   <span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#6e7ed9;">&lt;</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#ac9461;">version</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#6e7ed9;">&gt;</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#96979c;">1.2</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#6e7ed9;">&lt;/</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#ac9461;">version</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#6e7ed9;">&gt;</span></p>
<p></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#359FF4;">&lt;/</span><span style="color:#AC9461;">dependency</span><span style="color:#359FF4;">&gt;</span></p>
<p>디팬던시 닫기전에 버젼을 넣었는데 그래도 마찬가지더라구요</p>
<p> </p>
<p>쭉 검색을 하다 보니 springboot 3.0 이상에서는 jstl 불러오는 방식이 바뀌었더라구요.</p>
<p>위 구문을 사용하지 않고 아래구문으로 변경을 해줘야 합니다.</p>
<p>3가지 디팬던시가 추가 됩니다.</p>
<p style="margin:0in;font-size:9.8pt;color:#7A7E85;"><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">&lt;!--</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">Srpingboot</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">3.0</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">이상</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">jstl</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">추가</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">시작</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">--&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;color:#7A7E85;"><span style="font-size:9.8pt;color:#359ff4;">&lt;</span><span style="font-size:9.8pt;color:#ac9461;">dependency</span><span style="font-size:9.8pt;color:#359ff4;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">jakarta.servlet.jsp.jstl</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">jakarta.servlet.jsp.jstl-api</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">3.0.0</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#359FF4;">&lt;/</span><span style="color:#AC9461;">dependency</span><span style="color:#359FF4;">&gt;</span></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&lt;</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#ac9461;">dependency</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">jakarta.servlet</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">jakarta.servlet-api</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">6.0.0</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">scope</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">provided</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">scope</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#359FF4;">&lt;/</span><span style="color:#AC9461;">dependency</span><span style="color:#359FF4;">&gt;</span></p>
<p style="margin:0in;font-family:Calibri;font-size:11pt;"> <span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&lt;</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#ac9461;">dependency</span><span style="font-family:'JetBrains Mono';font-size:9.8pt;color:#359ff4;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">org.glassfish.web</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">groupId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">jakarta.servlet.jsp.jstl</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">artifactId</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#6E7ED9;">  &lt;</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span><span style="color:#96979C;">3.0.1</span><span style="color:#6E7ED9;">&lt;/</span><span style="color:#AC9461;">version</span><span style="color:#6E7ED9;">&gt;</span></p>
<p style="margin:0in;font-family:'JetBrains Mono';font-size:9.8pt;"><span style="color:#359FF4;">&lt;/</span><span style="color:#AC9461;">dependency</span><span style="color:#359FF4;">&gt;</span></p>
<p></p>
<p style="margin:0in;font-size:9.8pt;color:#7A7E85;"><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">&lt;!-</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">-Srpingboot</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">3.0</span><span style="font-family:Calibri;" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">이상</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">jstl</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">추가</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'맑은 고딕';" lang="ko" xml:lang="ko">끝</span><span style="font-family:'맑은 고딕';" lang="en-us" xml:lang="en-us"></span><span style="font-family:'JetBrains Mono';" lang="ko" xml:lang="ko">--&gt;</span></p>
<p style="margin:0in;font-size:9.8pt;color:#7A7E85;"><br /></p>
<p>이렇게 3개를 추가하면 됩니다.</p>
<p> </p>
<p> </p>
<p> </p>
<p><br /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2024-01-31T16:48:42+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 정부프레임워크 (egovframework)  crypto 를 통한 해쉬 만들고 적용하는 방법</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=23</link>
<description><![CDATA[<p>정부프레임워크 (egovframework)에서 crypto를 통해 해쉬를 만들고 적용하는 방법</p>
<p> </p>
<p>1) 해쉬 만들기 테스트 파일 작성</p>
<p>/src/test/java 에 새로운 패키지 &gt; egovframework.com.crypto.xmlconfig 생성</p>
<p>/src/test/java/egovframework.com.crypto.xmlconfig/ 에 새로운 클래스 파일 EgovEnvCryptoAlgorithmCresteTest 생성</p>
<p>egovframe.go.kr 로 이동 </p>
<p>개발프레임워크 실행환경 &gt; 프레임워크 실행환경 4.0 &gt; 클릭</p>
<p>개발프레임워크 실행환경 4.0 &gt; 공통기반 &gt; crypto &gt; crypto간소화 &gt; 클릭</p>
<p>crypto 간소화 서비스 </p>
<p> </p>
<h2 style="padding:4px 6px;margin:0px 0px 1em 20px;background-color:#dee7ec;font-size:17.92px;border:1px solid rgb(140,172,187);clear:left;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;text-align:justify;"><a style="padding:0px;margin:0px;color:#40649f;">Crypto algorithmKey, algorithmKeyHash 생성</a></h2>
<div class="level2" style="padding:0px;margin:0px 0px 0px 23px;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;font-size:12.8px;text-align:justify;background-color:#ffffff;">
   <p style="padding:0px;margin-bottom:1em;">Crypto Config 설정에 algorithmKey, algorithmKeyHash 인코딩 키 생성 방법을 제공한다<br style="padding:0px;margin:0px;" /><strong style="padding:0px;margin:0px;">하단 코드에서 계정암호화키 키 값을 원하는 값으로 설정한다.</strong></p>
   <pre class="code java" style="padding:0.5em;margin-top:0px;margin-bottom:1em;font-size:12.48px;border:1px dashed rgb(140,172,187);background-color:#f7f9fa;"><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.slf4j.Logger</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.slf4j.LoggerFactory</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.egovframe.rte.fdl.cryptography.EgovPasswordEncoder</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">class</span> EgovEnvCryptoAlgorithmCreateTest <span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">private</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">static</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">final</span> Logger LOGGER <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span> LoggerFactory.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getLogger</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>EgovEnvCryptoAlgorithmCreateTest.<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">class</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
	<span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//계정암호화키 키</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a> algorithmKey <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"(사용자정의 값)"</span>;
	<span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//계정암호화 알고리즘(MD5, SHA-1, SHA-256)</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a> algorithm <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"SHA-256"</span>;
	<span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//계정암호화키 블럭사이즈</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><span class="kw4" style="padding:0px;margin:0px;color:#993333;">int</span> algorithmBlockSize <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="nu0" style="padding:0px;margin:0px;color:#cc66cc;">1024</span>;
	<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">static</span><span class="kw4" style="padding:0px;margin:0px;color:#993333;">void</span> main<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span> args<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span>
		EgovEnvCryptoAlgorithmCreateTest cryptoTest <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">new</span> EgovEnvCryptoAlgorithmCreateTest<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
 
		EgovPasswordEncoder egovPasswordEncoder <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">new</span> EgovPasswordEncoder<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		egovPasswordEncoder.<span class="me1" style="padding:0px;margin:0px;color:#006600;">setAlgorithm</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>cryptoTest.<span class="me1" style="padding:0px;margin:0px;color:#006600;">algorithm</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
 
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"------------------------------------------------------"</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"알고리즘(algorithm) : "</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>cryptoTest.<span class="me1" style="padding:0px;margin:0px;color:#006600;">algorithm</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"알고리즘 키(algorithmKey) : "</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>cryptoTest.<span class="me1" style="padding:0px;margin:0px;color:#006600;">algorithmKey</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"알고리즘 키 Hash(algorithmKeyHash) : "</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>egovPasswordEncoder.<span class="me1" style="padding:0px;margin:0px;color:#006600;">encryptPassword</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>cryptoTest.<span class="me1" style="padding:0px;margin:0px;color:#006600;">algorithmKey</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"알고리즘 블럭사이즈(algorithmBlockSize)  :"</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>cryptoTest.<span class="me1" style="padding:0px;margin:0px;color:#006600;">algorithmBlockSize</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
 
	<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span> </pre>
   </div>
<p><span style="color:#66cc66;background-color:#f7f9fa;font-size:12.48px;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;text-align:justify;">}</span> </p>
<p>코드를 복사하여 새로 생성한 EgovEnvCryptoAlgorithmCresteTest 클래스 파일에 붙여 넣기하고 저장을 한다.</p>
<p> </p>
<p>2) 암호화되 코드 넣기 </p>
<p>파일위에서 마우스 우클릭 &gt; Run As &gt; Java Application &gt; 클릭하게 되면 Console 창에 알고림즘. 알고리즘키, 해쉬 블럭사이즈 등이 나오게 된다.</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoAlgorithmCreateTest] ------------------------------------------------------</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoAlgorithmCreateTest] 알고리즘(algorithm) : SHA-256</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoAlgorithmCreateTest] 알고리즘 키(algorithmKey) : egovframe</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoAlgorithmCreateTest] 알고리즘 키 Hash(algorithmKeyHash) : gdyYs/IZqY86VcWhT8emCYfqY1ahw2vtLG+/FzNqtrQ=</p>
<p><span style="font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoAlgorithmCreateTest] 알고리즘 블럭사이즈(algorithmBlockSize)</span><span class="Apple-converted-space" style="font-family:Menlo;">  </span><span style="font-family:Menlo;">:1024</span> </p>
<p>이렇게 생성된 값을</p>
<p>/src/main/resources/egovframework/spring/com/context-crypto.xml 파일에 key, hash 등에 맞게 넣어준다.</p>
<p> </p>
<p>3) 크림토 테스트 파일 작성하기</p>
<p>/src/test/resources 에 패키지 egovframewrok 생성</p>
<p>/src/test/resources/egovframework 에 패키지 생성 com</p>
<p>/src/test/resources/egovframework/com에 에 <span style="background-color:#f7f9fa;font-size:12.48px;text-align:justify;">context-crypto-test.xml </span>파일 생성  </p>
<h2 style="padding:4px 6px;margin:0px 0px 1em 20px;background-color:#dee7ec;font-size:17.92px;border:1px solid rgb(140,172,187);clear:left;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;text-align:justify;"><a style="padding:0px;margin:0px;color:#40649f;">환경설정 파일(globals.properties) 암호화</a></h2>
<div class="level2" style="padding:0px;margin:0px 0px 0px 23px;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;font-size:12.8px;text-align:justify;background-color:#ffffff;"> </div>
<h3 style="padding:4px 6px;margin:0px 0px 1em 40px;background-color:#ffffff;font-size:16.64px;border:1px solid rgb(140,172,187);clear:left;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;text-align:justify;"><a style="padding:0px;margin:0px;color:#40649f;">환경설정 파일(globals.properties)의 데이터베이스 연결 항목(Url, UserName, Password) 인코딩 값 생성</a></h3>
<p><span style="background-color:#ffffff;font-family:'Malgun Gothic', 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif;font-size:12.8px;text-align:justify;">환경설정 파일에서 데이터베이스 연결 항목(Url, UserName, Password) 인코딩 키 생성 방법을 제공한다.</span> </p>
<p>아래 부분을 복사해서 넣 새로 생성한 context-crypto-test.xml 파일에 넣어준다.</p>
<pre class="code xml" style="padding:0.5em;margin-top:0px;margin-bottom:1em;font-size:12.48px;border:1px dashed rgb(140,172,187);background-color:#f7f9fa;text-align:justify;"><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;beans</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">xmlns</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"http://www.springframework.org/schema/beans"</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">xmlns:xsi</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"http://www.w3.org/2001/XMLSchema-instance"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">xmlns:egov-crypto</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"http://maven.egovframe.go.kr/schema/egov-crypto"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">xsi:schemaLocation</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd</span><span class="sc3" style="padding:0px;margin:0px;">		http://maven.egovframe.go.kr/schema/egov-crypto http://maven.egovframe.go.kr/schema/egov-crypto/egov-crypto-4.0.0.xsd"</span><span class="re2" style="padding:0px;margin:0px;color:#0000ff;">&gt;</span></span>
 
	<span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;bean</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">name</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"messageSource"</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">class</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"org.springframework.context.support.ResourceBundleMessageSource"</span><span class="re2" style="padding:0px;margin:0px;color:#0000ff;">&gt;</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;property</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">name</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"useCodeAsDefaultMessage"</span><span class="re2" style="padding:0px;margin:0px;color:#0000ff;">&gt;</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;value<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span>true<span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/value<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/property<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;property</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">name</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"basenames"</span><span class="re2" style="padding:0px;margin:0px;color:#0000ff;">&gt;</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;list<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;value<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span>classpath:/egovframework/egovProps/globals<span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/value<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/list<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/property<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/bean<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span>
 
    <span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;egov-crypto:config</span><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">id</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"egovCryptoConfig"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">initial</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"false"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">crypto</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"true"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">algorithm</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"SHA-256"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">algorithmKey</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"(사용자정의 값)"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">algorithmKeyHash</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"(생성값)"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re0" style="padding:0px;margin:0px;color:#0000ff;">cryptoBlockSize</span>=<span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"1024"</span></span><span class="sc3" style="padding:0px;margin:0px;"><span class="re2" style="padding:0px;margin:0px;color:#0000ff;">/&gt;</span></span>
 
<span class="sc3" style="padding:0px;margin:0px;"><span class="re1" style="padding:0px;margin:0px;color:#0000ff;">&lt;/beans<span class="re2" style="padding:0px;margin:0px;">&gt;</span></span></span></pre>
<p> </p>
<p>4)  암호화 생성 파일 작성</p>
<p>/src/test/java/egovframework.com.crypto.xmlconfig 아래에 EgovEnvCryptoUserTest.java 파일 생성</p>
<pre class="code java" style="padding:0.5em;margin-top:0px;margin-bottom:1em;font-size:12.48px;border:1px dashed rgb(140,172,187);background-color:#f7f9fa;text-align:justify;"><span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">// 데이터베이스 연결 항목(Url, UserName, Password) 인코딩 값 생성 JAVA</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.slf4j.Logger</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.slf4j.LoggerFactory</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.springframework.context.ApplicationContext</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.springframework.context.support.ClassPathXmlApplicationContext</span>;
 
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.egovframe.rte.fdl.cryptography.EgovEnvCryptoService</span>;
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">import</span><span class="co2" style="padding:0px;margin:0px;color:#808080;font-style:italic;">org.egovframe.rte.fdl.cryptography.impl.EgovEnvCryptoServiceImpl</span>;
 
<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">class</span> EgovEnvCryptoUserTest <span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span>
 
	<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">private</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">static</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">final</span> Logger LOGGER <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span> LoggerFactory.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getLogger</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>EgovEnvCryptoUserTest.<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">class</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
 
	<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">public</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">static</span><span class="kw4" style="padding:0px;margin:0px;color:#993333;">void</span> main<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span> args<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span>
 
		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span> arrCryptoString <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"userId"</span>,         <span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//데이터베이스 접속 계정 설정</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"userPassword"</span>,   <span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//데이터베이스 접속 패드워드 설정</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"url"</span>,            <span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//데이터베이스 접속 주소 설정</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"databaseDriver"</span><span class="co1" style="padding:0px;margin:0px;color:#808080;font-style:italic;">//데이터베이스 드라이버</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span>;
 
 
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"------------------------------------------------------"</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;		
		ApplicationContext context <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">new</span> ClassPathXmlApplicationContext<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">new</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"classpath:/context-crypto-test.xml"</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		EgovEnvCryptoService cryptoService <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span> context.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getBean</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>EgovEnvCryptoServiceImpl.<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">class</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"------------------------------------------------------"</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
 
		<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">String</span></a> label <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">""</span>;
		<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">try</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">for</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="kw4" style="padding:0px;margin:0px;color:#993333;">int</span> i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span>0; i <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">&lt;</span> arrCryptoString.<span class="me1" style="padding:0px;margin:0px;color:#006600;">length</span>; i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">++</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">if</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">==</span>0<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>label <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"사용자 아이디"</span>;
				<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">if</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">==</span><span class="nu0" style="padding:0px;margin:0px;color:#cc66cc;">1</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>label <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"사용자 비밀번호"</span>;
				<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">if</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">==</span><span class="nu0" style="padding:0px;margin:0px;color:#cc66cc;">2</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>label <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"접속 주소"</span>;
				<span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">if</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>i<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">==</span><span class="nu0" style="padding:0px;margin:0px;color:#cc66cc;">3</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>label <span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">=</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"데이터 베이스 드라이버"</span>;
				LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>label<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">" 원본(orignal):"</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span> arrCryptoString<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span>i<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
				LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>label<span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">" 인코딩(encrypted):"</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span> cryptoService.<span class="me1" style="padding:0px;margin:0px;color:#006600;">encrypt</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span>arrCryptoString<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">[</span>i<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">]</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
				LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">info</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"------------------------------------------------------"</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
			<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">catch</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aillegalargumentexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">IllegalArgumentException</span></a> e<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span>
			LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">error</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"["</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>e.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getClass</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"] IllegalArgumentException : "</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span> e.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getMessage</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span><span class="kw1" style="padding:0px;margin:0px;color:#b1b100;">catch</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky" style="padding:0px;margin:0px;color:#436976;" target="_blank" rel="nofollow noreferrer noopener"><span class="kw3" style="padding:0px;margin:0px;color:#000066;">Exception</span></a> e<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">{</span>
			LOGGER.<span class="me1" style="padding:0px;margin:0px;color:#006600;">error</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"["</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span>e.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getClass</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span><span class="st0" style="padding:0px;margin:0px;color:#ff0000;">"] Exception : "</span><span class="sy0" style="padding:0px;margin:0px;color:#66cc66;">+</span> e.<span class="me1" style="padding:0px;margin:0px;color:#006600;">getMessage</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">(</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span><span class="br0" style="padding:0px;margin:0px;color:#66cc66;">)</span>;
		<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span>
 
	<span class="br0" style="padding:0px;margin:0px;color:#66cc66;">}</span>
  }<span style="font-family:'맑은 고딕', 'Malgun Gothic', gulim;font-size:12px;"> </span></pre>
<p> 이렇게 된 부분에서</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#3f7f5f;"><span class="s1" style="color:#2a00ff;">"userId"</span><span class="s2" style="color:#000000;">, <span class="Apple-converted-space">        </span></span>//데이터베이스 접속 계정 설정</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#3f7f5f;"><span class="s1" style="color:#2a00ff;">"userPassword"</span><span class="s2" style="color:#000000;">, <span class="Apple-converted-space">  </span></span>//데이터베이스 접속 패드워드 설정</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#3f7f5f;"><span class="s1" style="color:#2a00ff;">"url"</span><span class="s2" style="color:#000000;">,<span class="Apple-converted-space">            </span></span>//데이터베이스 접속 주소 설정</p>
<p class="p2" style="line-height:normal;font-family:Menlo;color:#2a00ff;">"databaseDriver"<span class="s2" style="color:#000000;">  </span><span class="s3" style="color:#3f7f5f;">//데이터베이스 드라이버</span></p>
<p>이러한 부분들을</p>
<p>"com", "com01", "url", "databaseDriver" 형태로 넣어주고 </p>
<p>EgovEnvCryptoAlgorithmCreateTest.java 파일에서 마우스 우클릭 &gt; Run As &gt; Java Application &gt; 클릭 하게 되면</p>
<p>console 창에 암호화 된 내용을 얻을 수 있다.</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] ------------------------------------------------------</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 사용자 아이디 원본(orignal):userId</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 사용자 아이디 인코딩(encrypted):%2Bn5a7BD6CPuNjHSUL9AK8w%3D%3D</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] ------------------------------------------------------</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 사용자 비밀번호 원본(orignal):<span style="color:#ff0000;">com01</span></p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 사용자 비밀번호 인코딩(encrypted):<span style="color:#ff0000;">xz4fmrSdr1vGGl6UtwPLwA%3D%3D</span></p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] ------------------------------------------------------</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 접속 주소 원본(orignal):url</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 접속 주소 인코딩(encrypted):BqvAX86xPPqGQEFCB4aaKw%3D%3D</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] ------------------------------------------------------</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 데이터 베이스 드라이버 원본(orignal):databaseDriver</p>
<p class="p1" style="line-height:normal;font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] 데이터 베이스 드라이버 인코딩(encrypted):E4GtXk4i9yK0zjbiKDt5%2Fw%3D%3D</p>
<p><span style="font-family:Menlo;">INFO [egovframework.com.crypto.xmlconfig.EgovEnvCryptoUserTest] ------------------------------------------------------</span> </p>
<p> 이렇게 얻어진 값을 /src/main/resources/egovframework/egovProps/globals.properties 파일에 적용 시킬 수 있다.</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2022-07-27T13:37:05+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 정부프레임워크 4.0 (egovframework) DB 비번 암호화 사용 미사용 (crypto) 설정</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=22</link>
<description><![CDATA[<p>정부프레임워크 4.0 기준</p>
<p>데이터베이스의 비밀번호 암호화 사용 미사용설정</p>
<p> </p>
<p>1) pom</p>
<p>/pom.xml 의 117줄 ~ 121줄까지 사용된 crypto 설정을 넣어줘야 한다.</p>
<p> </p>
<p>2) properties</p>
<p>/src/main/resources/egovframework/egovProps/globals.properties 의 41줄 기존 암호화에서 암호화 사용X로 쓸때</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#800000;"><span class="s1" style="color:#000080;">Globals.mysql.Password </span><span class="s2" style="color:#008000;">=</span> xz4fmrSdr1vGGl6UtwPLwA%3D%3D</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#800000;">이 구문을 아래 처럼 비밀번호 암호화 사용하지 않고 넣는다.</p>
<p>Globals.mysql.Password = com01 </p>
<p> </p>
<p>2) crypto</p>
<p>/src/main/resources/egovframework/spring/com/context-crypto.xml   17줄 설정 부터</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#7f007f;">initial<span class="s1" style="color:#000000;">=</span><span class="s2" style="color:#2a00ff;"><i>"true"</i></span></p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#7f007f;">crypto<span class="s1" style="color:#000000;">=</span><span class="s2" style="color:#2a00ff;"><i>"true"</i></span></p>
<p class="p1" style="line-height:normal;font-family:Menlo;"><font color="#2a00ff"><i>이 구문을 아래 처럼 false 설정</i></font></p>
<p>initial="false" (true는 암호화 false는 암호화사용 X)  - 17줄</p>
<p>crypto="false" (true는 암호화 false는 암호화사용 X)  - 18줄</p>
<p> </p>
<p>3) datasource </p>
<p>/src/main/resources/egovframework/spring/com/context-datasource.xml 에 mysql 설정이 있는 28줄</p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#2a00ff;"><span class="s1" style="color:#008080;">&lt;</span><span class="s2" style="color:#3f7f7f;">property </span><span class="s3" style="color:#000000;"></span><span class="s4" style="color:#7f007f;">name</span><span class="s3" style="color:#000000;">=</span><i>"password" </i><span class="s3" style="color:#000000;"></span><span class="s4" style="color:#7f007f;">value</span><span class="s3" style="color:#000000;">=</span><i>"#{egovEnvCryptoService.getPassword()}"</i><span class="s1" style="color:#008080;">/&gt;</span></p>
<p class="p1" style="line-height:normal;font-family:Menlo;color:#2a00ff;"><span class="s1" style="color:#008080;">이 구문을 아래처럼 변경 설정</span></p>
<p>&lt;property name="password" value="${Globals.mysql.Password}"/&gt;</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2022-07-27T12:02:41+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 정부프레임워크( egovframe )에서 세션 사용 설정</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=21</link>
<description><![CDATA[<p>1)pom</p>
<p>/pom.xml 파일의 123줄 처럼 access 가 정의 되어 있어야 한다.</p>
<p> </p>
<p>2) properties</p>
<p>/src/main/resources/egovframework/egovProps/globals.properties 파일의 26줄 권한설정 부분을</p>
<p>Globals.Auth = session 으로 사용</p>
<p> </p>
<p>3) access</p>
<p>/src/main/webapp/WEB-INF/config/efovframework/springmvc/egov-com-access.xml  파일의 26줄 </p>
<p>globalAuthen="session" 으로 사용</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2022-07-27T11:33:12+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 스프링 시작하기 , 설치 환경 설정 Spring for Web MVC model2  - 스프링을 이용한 MVC모델2 방식</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=20</link>
<description><![CDATA[<p><span style="color:#ff0000;"><b>Spring for Web MVC model2  - 스프링을 이용한 MVC모델2 방식 설정 방법</b></span></p>
<p><b><span style="color:#0000ff;">1) 프로젝트 생성</span></b></p>
<p>eclipse &gt; File &gt; New &gt; Spring &gt; Spring Legacy Project &gt; Next &gt;</p>
<p>&gt; Project name : 프로젝트명, Templates : Spring MVC Project &gt; kr.ms.smartcar (접속경로 설정 - root 폴더)( kr.ms.smartcar=&gt; localhost:포트/smartcar)</p>
<p><br /></p>
<p><span style="color:#0000ff;"><b>2) pom.xml 설정 </b></span></p>
<p> 프로젝트명/pom.xml</p>
<p> - maven을 이용해서 필요한 파일을 다운로드 해주는 프로그램 설정</p>
<p> -  /dependencies 검색해서 그 윗부분에 아래의 코드를 넣어준다.</p>
<p>    그리고 아래쪽에 &lt;/dependencies&gt; 이부분이 오게 해주면 된다.</p>
<p>     오류를 방지하기 위해 dependencies 사이에서 하단쪽에 넣는게 좋다.</p>
<p><br /></p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>        &lt;!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --&gt;</p>
   <p>        &lt;dependency&gt;</p>
   <p>            &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt;</p>
   <p>            &lt;artifactId&gt;gson&lt;/artifactId&gt;</p>
   <p>            &lt;version&gt;2.8.5&lt;/version&gt;</p>
   <p>        &lt;/dependency&gt;</p>
   <p><br /></p>
   <p>        &lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --&gt;</p>
   <p>        &lt;dependency&gt;</p>
   <p>            &lt;groupId&gt;org.mybatis&lt;/groupId&gt;</p>
   <p>            &lt;artifactId&gt;mybatis&lt;/artifactId&gt;</p>
   <p>            &lt;version&gt;3.4.4&lt;/version&gt;</p>
   <p>        &lt;/dependency&gt;</p>
   <p><br /></p>
   <p>        &lt;!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --&gt;</p>
   <p>        &lt;dependency&gt;</p>
   <p>            &lt;groupId&gt;org.mybatis&lt;/groupId&gt;</p>
   <p>            &lt;artifactId&gt;mybatis-spring&lt;/artifactId&gt;</p>
   <p>            &lt;version&gt;1.3.2&lt;/version&gt;</p>
   <p>        &lt;/dependency&gt;</p>
   <p><br /></p>
   <p>        &lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --&gt;</p>
   <p>        &lt;dependency&gt;</p>
   <p>            &lt;groupId&gt;org.springframework&lt;/groupId&gt;</p>
   <p>            &lt;artifactId&gt;spring-jdbc&lt;/artifactId&gt;</p>
   <p>            &lt;version&gt;3.1.1.RELEASE&lt;/version&gt;</p>
   <p>        &lt;/dependency&gt;</p>
   </div>
<p><br /></p>
<p>이제 plugins 의 안쪽에서</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>           &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;</p>
   <p>                &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;</p>
   <p>                &lt;version&gt;2.5.1&lt;/version&gt;</p>
   <p>                &lt;configuration&gt;</p>
   <p>                    &lt;source&gt;1.6&lt;/source&gt;</p>
   <p>                    &lt;target&gt;1.6&lt;/target&gt;</p>
   </div>
<p>부분에서 </p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;source&gt;1.8&lt;/source&gt;</p>
   </div>
<p>로 수정</p>
<p><br /></p>
<p><span style="color:#0000ff;"><b>3) db생성 확인</b></span></p>
<p> 프로젝트명/패키지(/src/main/java/) 패키지에서 kr.ms.db 패키지 생성</p>
<p>  query.sql 파일을 만들어서 db 등록 쿼리 등록</p>
<p>  test.sql 파일을 만들어서 db등록 내용을 테스트</p>
<p><br /></p>
<p><span style="color:#0000ff;"><b>4) lib 폴더 생성</b></span></p>
<p>프로젝트명/src/main/webapp/WEB-INF/ 폴더에 lib 폴더 생성</p>
<p>.jar등의 라이브러리 복사 붙여넣기</p>
<p><br /></p>
<p><span style="color:#0000ff;"><b>5) web.xml 설정</b></span></p>
<p>프로젝트명/src/main/webapp/WEB-INF/web.xml</p>
<p>&lt;/listener&gt; 아래쪽에 UTF-8 코딩 추가</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>    &lt;filter&gt;</p>
   <p>        &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;</p>
   <p>        &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter</p>
   <p>        &lt;/filter-class&gt;</p>
   <p>        &lt;init-param&gt;</p>
   <p>            &lt;param-name&gt;encoding&lt;/param-name&gt;</p>
   <p>            &lt;param-value&gt;UTF-8&lt;/param-value&gt;</p>
   <p>        &lt;/init-param&gt;</p>
   <p>    &lt;/filter&gt;</p>
   <p><br /></p>
   <p>    &lt;filter-mapping&gt;</p>
   <p>        &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;</p>
   <p>        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
   <p>    &lt;/filter-mapping&gt;</p>
   </div>
<p><br /></p>
<p>mapping 주소 설정 - /로 설정된 부분을 *.do 로 변경(이부분은 변경하지 않고 /로 놓고 사용해도 무방하다.</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>    &lt;servlet-mapping&gt;</p>
   <p>        &lt;servlet-name&gt;appServlet&lt;/servlet-name&gt;</p>
   <p>        &lt;url-pattern&gt;/&lt;/url-pattern&gt;</p>
   <p>    &lt;/servlet-mapping&gt;</p>
   </div>
<p><br /></p>
<p><span style="color:#0000ff;"><b>6) mybatis 설정</b></span></p>
<p> 프로젝트명/src/main/webapp/WEB-INF/ 폴더에 mybatis 폴더 생성</p>
<p> config.xml 파일 생성</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
   <p>&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;</p>
   <p>&lt;configuration&gt;</p>
   <p>    &lt;typeAliases&gt;</p>
   <p>        &lt;typeAlias type="kr.ms.model.MemberVO" alias="MemberVO"/&gt;</p>
   <p>    &lt;/typeAliases&gt;</p>
   <p>&lt;/configuration&gt;</p>
   </div>
<p>추가적으로 VO 파일들이 생길 때마다 </p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;typeAlias type="kr.ms.model.MemberVO" alias="MemberVO"/&gt;</p>
   </div>
<p>이부분을 수정해서 계속 추가 해주면 된다.</p>
<p><br /></p>
<p> db.properties 파일 생성</p>
<p> 각 db 환경에 맞는 내용을 넣어준다.</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>driver=oracle.jdbc.driver.OracleDriver</p>
   <p>url=jdbc:oracle:thin:@127.0.0.1:1521:XE</p>
   <p>username=hr</p>
   <p>password=hr</p>
   </div>
<p><br /></p>
<p>프로젝트명/패키지(src/main/java)/ 패지에서 kr.ms.mybatis 패키지 생성</p>
<p> 매핑파일 생성</p>
<p>  - MemberMapper.xml 등등(이부분에는 controller에서 사용할 qeury 구문이 들어간다.</p>
<p>&lt;mapper namespace="kr.ms.mybatis.MemberMapper"&gt; 이부분에서 자신의 패키지에 맞는 설정이 필요하다.</p>
<p> 또 본인의 데이터 베이스에 맞는 설정으로 모두 변경해 주어서 저장을 해주면 된다.</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
   <p>&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;</p>
   <p>&lt;mapper namespace="kr.ms.mybatis.MemberMapper"&gt;</p>
   <p>    &lt;select id="memberList" resultType="MemberVO"&gt;</p>
   <p>        SELECT * FROM ms_member </p>
   <p>        ORDER BY msm_no DESC</p>
   <p>    &lt;/select&gt;</p>
   <p>    &lt;insert id="memberInsert" parameterType="MemberVO"&gt;</p>
   <p>         INSERT INTO ms_member </p>
   <p>         VALUES </p>
   <p>         (msm_no_seq.nextval, #{msm_id}, #{msm_password}, #{msm_name}, #{msm_phone}, #{msm_email}, #{msm_level_no}, #{msm_point}, #{msm_car}, #{msm_denied})</p>
   <p>    &lt;/insert&gt;</p>
   <p>    &lt;delete id="memberDelete" parameterType="Integer"&gt;</p>
   <p>         DELETE FROM ms_member </p>
   <p>         WHERE </p>
   <p>         num=#{msm_no}</p>
   <p>    &lt;/delete&gt;</p>
   <p>    &lt;select id="memberContent" resultType="MemberVO" parameterType="Integer"&gt;</p>
   <p>        SELECT * FROM ms_member </p>
   <p>        WHERE</p>
   <p>        num=#{msm_no}</p>
   <p>    &lt;/select&gt;</p>
   <p>    &lt;update id="memberUpdate" parameterType="MemberVO"&gt;</p>
   <p>         UPDATE ms_member </p>
   <p>         SET </p>
   <p>         msm_name=#{msm_name}, msm_phone=#{msm_phone}, msm_email=#{msm_email}</p>
   <p>         WHERE </p>
   <p>         msm_no=#{msm_no}</p>
   <p>    &lt;/update&gt;</p>
   <p>&lt;/mapper&gt;</p>
   </div>
<p><br /></p>
<p><span style="color:#0000ff;"><b>7)  root-context.xml, servlet-context.xml 설정</b></span></p>
<p> 프로젝트명/src/main/webapp/WEB-INF/spring/root-context.xml</p>
<p> 아래 내용을 붙여넣기 하고 kr.smhrd.model 이부분이 패키지 이므로</p>
<p>본인의 model 패키지에 맞게 수정</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
   <p>&lt;beans xmlns="http://www.springframework.org/schema/beans"</p>
   <p><span style="white-space:pre;"></span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
   <p>    xmlns:context="http://www.springframework.org/schema/context"</p>
   <p><span style="white-space:pre;"></span>xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd </p>
   <p>    http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"&gt;</p>
   <p><span style="white-space:pre;"></span></p>
   <p><span style="white-space:pre;"></span>&lt;!-- Root Context: defines shared resources visible to all other web components --&gt;</p>
   <p>    &lt;bean id="SqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"&gt;</p>
   <p>        &lt;property name="dataSource" ref="dataSource" /&gt;</p>
   <p>        &lt;property name="configLocation" value="/WEB-INF/mybatis/config.xml"/&gt;</p>
   <p>        &lt;property name="mapperLocations" value="classpath:kr/ms/mybatis/*.xml" /&gt;</p>
   <p>    &lt;/bean&gt;</p>
   <p><br /></p>
   <p>    &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"&gt;</p>
   <p>        &lt;property name="driverClass" value="${driver}"  /&gt;</p>
   <p>        &lt;property name="url" value="${url}" /&gt;</p>
   <p>        &lt;property name="username" value="${username}" /&gt;</p>
   <p>        &lt;property name="password" value="${password}" /&gt;</p>
   <p>    &lt;/bean&gt;</p>
   <p>    </p>
   <p>    &lt;bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" &gt;</p>
   <p>        &lt;property name="locations" value="/WEB-INF/mybatis/db.properties" /&gt;</p>
   <p>    &lt;/bean&gt;</p>
   <p>    </p>
   <p>    &lt;context:component-scan base-package="kr.ms.model" /&gt;</p>
   <p>&lt;/beans&gt;</p>
   </div>
<p><br /></p>
<p>프로젝트명/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml</p>
<p>본인의 설정에 맞게 되었는지 확인</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
   <p>&lt;beans:beans xmlns="http://www.springframework.org/schema/mvc"</p>
   <p><span style="white-space:pre;"></span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</p>
   <p><span style="white-space:pre;"></span>xmlns:beans="http://www.springframework.org/schema/beans"</p>
   <p><span style="white-space:pre;"></span>xmlns:context="http://www.springframework.org/schema/context"</p>
   <p><span style="white-space:pre;"></span>xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd</p>
   <p><span style="white-space:pre;"></span>http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd</p>
   <p><span style="white-space:pre;"></span>http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"&gt;</p>
   <p><br /></p>
   <p><span style="white-space:pre;"></span>&lt;!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --&gt;</p>
   <p><span style="white-space:pre;"></span></p>
   <p><span style="white-space:pre;"></span>&lt;!-- Enables the Spring MVC @Controller programming model --&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;annotation-driven /&gt;</p>
   <p><br /></p>
   <p><span style="white-space:pre;"></span>&lt;!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory --&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;resources mapping="/resources/**" location="/resources/" /&gt;</p>
   <p><br /></p>
   <p><span style="white-space:pre;"></span>&lt;!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;beans:property name="prefix" value="/WEB-INF/views/" /&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;beans:property name="suffix" value=".jsp" /&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;/beans:bean&gt;</p>
   <p><span style="white-space:pre;"></span>&lt;context:component-scan base-package="kr.ms.smartcar" /&gt;</p>
   <p>&lt;/beans:beans&gt;</p>
   </div>
<p><br /></p>
<p><br /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-02-19T12:05:13+09:00</dc:date>
</item>


<item>
<title>[ jsp ] Spring 원리, 사용 설명, 사용 설정</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=19</link>
<description><![CDATA[<p> ❖ 스프링(Spring)</p>
<p>  spring container에서 해당 열할을 하고 자동으로 뷰리졸버 하는 api</p>
<p> 프론트컨트롤러 api - front controller 대신 DispatcherServlet 가 대체</p>
<p><br /></p>
<p> • DI = 의존성주입(Dependency Injection)</p>
<p>   - 의존성 주입은 각 객체간의 의존성을 스프링 컨테이너(Srping Container)가 자동으로 연결해 주는것으로 개발자가 빈(Bean) 설정파일에 의존관계가 필요한 정보를 추가하면 스프링 컨테이너가 자동으로 연결</p>
<p>  - DI 는 IoC(Inversion of Control, 제어의 역전) 원칙하에 객체간의 결합을 약하게 해주고 유지보수가 좋은 코드를 만들어 준다. 또한 DI는 개발자들이 객체를 생성하는 번거로움과 다양한 케이스를 고려하는 경우를 줄이고, 변수 사용과 개발에 더욱이 집중 할 수 있게 해준다.</p>
<p><br /></p>
<p> • Bean</p>
<p>  - Spring IoC 컨테이너가 관리하는 자바 객체</p>
<p>  - new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다.</p>
<p>  - ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈</p>
<p>  -Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미</p>
<p><br /></p>
<p> • Spring Framework에서 의존성을 주입받는 방법(DI) 3가지</p>
<p>   (예정)Spring Framework의 핵심 3요소 - IoC(DI), AOP, PSA</p>
<p> </p>
<p><span style="color:#ff0000;"><b><span style="font-size:14px;">- 새 프로그젝트 만들기 -</span></b></span></p>
<p><b><span style="color:#0080ff;">eclipse &gt; File &gt; New &gt; Spring &gt; Spring Legacy Project &gt; Next &gt; </span><br /><span style="color:#0080ff;">&gt; Project name : 프로젝트명, Templates : Spring MVC Project &gt; 접속경로(root 폴더)( kr.ms.test =&gt; localhost:포트/test )</span></b><br /></p>
<p> </p>
<p> • Srping 에서 가장 중요한 환경설정 파일 </p>
<p>  - root-context.xml</p>
<p>  - servlet-context.xml</p>
<p> </p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2102/20210204121114_9e844873f31e78dc9a5782500d6cf9d9_4wgh.png" alt="KakaoTalk_20210204_103752343.png" /></p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2102/20210204121126_9e844873f31e78dc9a5782500d6cf9d9_b673.png" alt="KakaoTalk_20210204_113204576.png" /></p>
<p><br /></p>
<p> • spring 관리 파일</p>
<p>  - fom.xml</p>
<p>  mvn repository에서 maven 부분 중 아래 세가지를 fom.xml 에 추가(자동다운로드)</p>
<p>  mybatis, mybatis-spring, spring-jdbc</p>
<p>  jdbc는 WEB-INF 폴더에 lib 폴더생성 후 ojdbc6.jar 파일 복붙.</p>
<p> </p>
<p> </p>
<p>컴포넌트 스캔 </p>
<p><br /></p>
<p>xml 에서 bean</p>
<p> - xml에서 클래스를 생성하는 것이 bean</p>
<p>   &lt;bean&gt;</p>
<p>    ~~~~~~</p>
<p>   &lt;/bean&gt;</p>
<p><br /></p>
<p>mybatis/config.xml 에서 설정했던 부분은 필요없음.(아래 두개 삭제)</p>
<p>&lt;environments ~~&gt;&lt;/environments&gt;</p>
<p>&lt;mappers ~~&gt;&lt;/mappers&gt;</p>
<p><br /></p>
<p>mybatis/config.xml 파일과 mybatis/db.properties 파일을 </p>
<p>WEB-INF/myatis/config.xml</p>
<p>WEB-INF/myatis/db.properties </p>
<p>이쪽으로 이동 시킨다.</p>
<p><br /></p>
<p>WEB-INF/spring/root-context.xml 파일에 설정을 해준다.</p>
<p>&lt;bean class="org.mybatis.spring.SqlSessionFactoryBean"&gt;</p>
<p>    &lt;property name="configLocation" value="/WEB-INF/mybatis/config.xml" /&gt;</p>
<p>    &lt;property name="mapperLocations" value="classpath:kr.smhrd/mybatis/*.xml" /&gt;</p>
<p>&lt;/bean&gt;</p>
<p> </p>
<p>실습테스트 파일</p>
<p><a href="https://github.com/freemaster/SpringMVC" target="_blank" rel="nofollow noreferrer noopener">https://github.com/freemaster/SpringMVC</a></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-02-04T12:11:55+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 세션(Session) 세션바인딩(Session Binding)</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=18</link>
<description><![CDATA[<p><span style="color:#ff0000;"><b>❖ 세션(Session)이란?</b></span></p>
<p> - 연결 지속성을 제공하기 위해 서버와 클라이언트에 저장되는 정보</p>
<p> - 서버에 정보를 요청 할 때 생성되는 상태정보</p>
<p><br /></p>
<p><span style="color:#ff0000;"><b>❖ HttpSession 인터페이스</b></span></p>
<p> HttpSession  인터페이스는 둘 이상의 page request에서 사용자를 식별하거나, 웹사이트를 방문하고 새당 사용자에 대한 정보를 저장하는 방법을 제공.</p>
<p> Servlet container는 HttpSession을 사용하여 HTTP client - HTTP server 간의 세션을 생성한다. 이때, 세션은 한명의 사용자에 해당한다(개별관리). 서버는 Cookie, rewriting URL와 같은 방법으로 세션을 유지하면서 관리할 수 있다. 객체를 세션에 바인딩하여 사용자 정보를 유지 할 수 있다.</p>
<p> 이를 세션바인딩이라 한다.</p>
<p> • 세션바인딩 </p>
<p>  - WAS의 컨테이너가 관리하는 세션을 서블릿에서 사용할 수 있도록 제공하는 작업</p>
<p> • 세션트레킹(Session Tracking)</p>
<p>  - 클라이언트에서 전달된 세션아이디와 동일한 세션을 찾는 작업 </p>
<p> • 관련 메서드</p>
<p>  -HttpSession's setAttribute("Key", Value)</p>
<p>    "Key"를 사용하여 객체를 세션에 바인딩한다.</p>
<p>    Value는 값으로 들어올 자료형을 예측할 수 없기에 Object형으로 업캐스팅하여 모두 받아낸다.</p>
<p>  - HttpSession's getAttribute("Key")</p>
<p>    "Key"로 바인딩된 객체를 돌려주고, "Key"로 바인딩된 객체가 없다면 null를 돌려준다.</p>
<p>     Value는 세션을 저장할 때 Object형으로 업캐스팅을 했으므로, 가져올 땐 원래대로 다운캐스팅 해야 한다.</p>
<p>  - HttpServletRequest's getSession(true)</p>
<p>    이미 세션이 있다면 그 세션을 돌려주고, 세션이 없으면 새로운 세션을 생성한다.</p>
<p>    request.getSession()로 쓸 수 있다.</p>
<p>  - HttpServletRequest's getSession(false)</p>
<p>    이미 세션이 있다면 그 세션을 돌려주고, 세션이 없으면 null을 돌려준다.</p>
<p><br /></p>
<p><span style="color:#ff0000;"><b>❖ 세션ID</b></span></p>
<p> • 서버가 특정 세션중에 단일 사용자의 작업을 식별하고 추적할 수 있는 방법.</p>
<p> • 이를 추적하는 방법으로 쿠키, URL(Uniform Resource Locator) 등 다양한 방법을 사용할 수 있다.</p>
<p> • 세션 ID는 일반적으로 세션 시작시 생성되며 해당 세션 동안 지정된 사용자에게 고유하게 부여된다.</p>
<p> • JSESSIONID 라는 이름으로 영문자 숫자로 32자의 값을 만든다.</p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2102/20210202101845_79951dfea1bb7938dc0526b5025493d3_zeat.png" alt="KakaoTalk_20210202_100651921.png" /></p>
<p> </p>
<p>크롬에서 세션 확인 - Cooke : JSESSION 으로 저장 되어있다.</p>
<p><img src="https://funyphp.com/data/editor/2102/20210202102225_79951dfea1bb7938dc0526b5025493d3_wph3.png" alt="111.png" /></p>
<p> </p>
<p><b style="color:#ff0000;font-family:'Malgun Gothic', dotum, sans-serif;font-size:14.4px;background-color:#ffffff;">❖ 세션바인딩(Session Binding)</b></p>
<p>  - 세션을 가지고와서 비교(getSession())를 해서 있다면 객체바인딩을 한다.</p>
<p>  - HttpSession session = request.getSession(); //세션확인</p>
<p>  - session.setAttribute("vo", vo1); //회원정보를 세션에 담는다.</p>
<p> </p>
<p><b style="color:#ff0000;font-family:'Malgun Gothic', dotum, sans-serif;font-size:14.4px;background-color:#ffffff;">❖ 실습파일 </b>실습파일</p>
<p> <a href="https://github.com/freemaster/SessionLogin" target="_blank" rel="nofollow noreferrer noopener">https://github.com/freemaster/SessionLogin</a></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-02-02T10:19:43+09:00</dc:date>
</item>


<item>
<title>[ jsp ] mybatis를 이용한 회원 등록 / 수정 / 삭제 / 목록 기능 구현</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=17</link>
<description><![CDATA[jdbc를 직접연결해서 사용하는 DB부분을 mybatis 를 이용해서 작성
<p> </p>
<p>소스파일</p>
<p><a href="https://github.com/freemaster/MVC05" target="_blank" rel="nofollow noreferrer noopener">https://github.com/freemaster/MVC05</a></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-02-01T09:53:19+09:00</dc:date>
</item>


<item>
<title>[ jsp ] mybatis - 설치, 설정, 연동 방법 정리</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=16</link>
<description><![CDATA[<p><b>1) MYBatis</b></p>
<p> - <span style="color:#ff0000;">SQL Mapping Framewrok for Java</span></p>
<p> - download - blog.mybitis.org &gt; Procucts &gt; SQL Mapping Framework for Java &gt; Link ( Download : click )</p>
<p> 버젼에 변화가 크지 않은것으로 하기 위해</p>
<p> mybatis-3.4.4로 이동 &gt; Assets click &gt; zip 파일 다운로드</p>
<p> </p>
<p> - 구조</p>
<p><img src="https://funyphp.com/data/editor/2102/20210201113456_1f1380483b5909dcd774d7be2b351af2_uv9h.png" alt="KakaoTalk_20210201_093042867.png" /></p>
<p> </p>
<p><img src="https://funyphp.com/data/editor/2102/20210201113613_1f1380483b5909dcd774d7be2b351af2_ayv1.png" alt="KakaoTalk_20210201_113340560.png" /></p>
<p> </p>
<p> </p>
<p>mybatis 연결에는 세개의 파일이 필요하다.</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p><span style="color:#ff0000;"><b> config.xml ( 환경 설정 파일 )</b></span></p>
   <p><span style="color:#ff0000;"><b> db.properties ( db 설정이 들어가는 파일 )</b></span></p>
   <p><span style="color:#ff0000;"><b> MemberMapper.xml ( sql이 저장되는 파일 )</b></span></p>
   </div>
<p><br /></p>
<p>압축을 풀게 되면 설명서와 .jar 파일이 있음.</p>
<p>연결방법은 xml 파일에서 id 를 통해서 연결하고 이 xml 파일을 <span style="color:#ff0000;"><b>매퍼 파일</b></span>이라고 한다.</p>
<p><br /></p>
<p>db정보를 가지고 있는 파일을 <span style="color:#ff0000;"><b>properties( 프로퍼티스) 파일</b></span>이라고 한다.</p>
<p>프로퍼티스파일 만들기</p>
<p>File &gt; New &gt; file &gt; db.properties</p>
<p><br /></p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>driver=oracle.jdbc.driver.OracleDriver</p>
   <p>url=jdbc:oracle:thin:@127.0.0.1:1521:XE</p>
   <p>username=hr</p>
   <p>password=hr</p>
   </div>
<p><br /></p>
<p>File &gt; New &gt; xml &gt; config.xml </p>
<p>( kr/smhrd/mybatis/db.properties 이곳은 경로 )</p>
<p>mappers 쪽에 계속 적으로 mapper을 추가해 가면서 파일을 연결한다.</p>
<p> </p>
<p><b>2) 실습파일</b></p>
<p> <a href="https://github.com/freemaster/MVC05" target="_blank" rel="nofollow noreferrer noopener">https://github.com/freemaster/MVC05</a> </p>
<p> </p>
<p><b>3) 상세설정 방법</b></p>
<p><br /></p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;</p>
   <p>&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"&gt;</p>
   <p>&lt;configuration&gt;</p>
   <p>    &lt;properties resource="kr/shmrd/mybitis/db.properties"/&gt;</p>
   <p>    //이 별칭들을 통해서 각 매퍼페이지에서 하나의 별칭씩 사용이 가능해진다.</p>
   <p>    //kr.smhrd.model.MemberVO 를 MemberVO라는 alias 에 넣어서 사용 하는 구문</p>
   <p>    &lt;typeAliases&gt;</p>
   <p>        &lt;typeAlias type="kr.smhrd.model.MemberVO" alias="MemberVO"/&gt;</p>
   <p>    &lt;/typeAliases&gt;</p>
   <p>    &lt;environments default="development"&gt;</p>
   <p>        &lt;environment id="development"&gt;</p>
   <p>            &lt;transactionManager type="JDBC" /&gt;</p>
   <p>            &lt;dataSource type="POOLED"&gt;</p>
   <p>                &lt;property name="driver" value="${driver}" /&gt;</p>
   <p>                &lt;property name="url" value="${url}" /&gt;</p>
   <p>                &lt;property name="username" value="${username}" /&gt;</p>
   <p>                &lt;property name="password" value="${password}" /&gt;</p>
   <p>            &lt;/dataSource&gt;</p>
   <p>        &lt;/environment&gt;</p>
   <p>    &lt;/environments&gt;</p>
   <p>    &lt;mappers&gt;</p>
   <p>        &lt;mapper resource="kr/shmrd/mybitis/MemberMapper.xml" /&gt;</p>
   <p>    &lt;/mappers&gt;</p>
   <p>&lt;/configuration&gt;</p>
   </div>
<p><br /></p>
<p>sql을 관리하는 것은 sqlsessionfactory</p>
<p>MemberDAOImpl.java</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>package kr.smhrd.model;</p>
   <p><br /></p>
   <p>import java.io.IOException;</p>
   <p>import java.io.InputStream;</p>
   <p>import java.util.List;</p>
   <p><br /></p>
   <p>import org.apache.ibatis.io.Resources;</p>
   <p>import org.apache.ibatis.session.SqlSession;</p>
   <p>import org.apache.ibatis.session.SqlSessionFactory;</p>
   <p>import org.apache.ibatis.session.SqlSessionFactoryBuilder;</p>
   <p><br /></p>
   <p>public class MemberDAOImpl implements MemberDAO{</p>
   <p>    </p>
   <p>    /* My Batis Start</p>
   <p>     * 객체가 한번만 실행되는 것</p>
   <p>     * 초기화 블럭 (객체를 생성할 때)</p>
   <p>     * My Batis </p>
   <p>     */</p>
   <p>    private static SqlSessionFactory sqlSessionFactory;</p>
   <p>    </p>
   <p>    static {</p>
   <p>        String resource = "kr/smhrd/mybatis/config.xml";</p>
   <p>        InputStream inputStream;</p>
   <p>        try {</p>
   <p>            inputStream = Resources.getResourceAsStream(resource);</p>
   <p>            //전체 세션을 관리하는 것이 sqlSessionFactory</p>
   <p>            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);</p>
   <p>        } catch (IOException e) {</p>
   <p>            e.printStackTrace();</p>
   <p>        }</p>
   <p>    }</p>
   <p>    </p>
   <p>    @Override</p>
   <p>    public List&lt;MemberVO&gt; memberList() {</p>
   <p>        //세션정보 가져오기</p>
   <p>        SqlSession session = sqlSessionFactory.openSession();</p>
   <p>        //SQL문장 ( select ~ ) + MemberVO + ArrayList() </p>
   <p>        //List&lt;MemberVO&gt; list = session.selectList("kr.smhrd.mybatis.memberList"); //동일한 이름이 없을 경우 패키지는 적지 않아도 된다.</p>
   <p>        List&lt;MemberVO&gt; list = session.selectList("memberList");</p>
   <p>        //사용후 사용한 세션에 대한 반납을 실시한다.</p>
   <p>        session.close();</p>
   <p>        return list;</p>
   <p>    }</p>
   <p><br /></p>
   <p>    @Override</p>
   <p>    public int memberInsert(MemberVO vo) {</p>
   <p>        SqlSession session = sqlSessionFactory.openSession();</p>
   <p>        int cnt = session.insert("memberInsert", vo);</p>
   <p>        session.commit();</p>
   <p>        session.close();</p>
   <p>        return cnt;</p>
   <p>    }</p>
   <p><br /></p>
   <p>    @Override</p>
   <p>    public int memberDelete(int num) {</p>
   <p>        SqlSession session = sqlSessionFactory.openSession();</p>
   <p>        int cnt = session.delete("memberDelete", num);</p>
   <p>        session.commit();</p>
   <p>        session.close();</p>
   <p>        return cnt;</p>
   <p>    }</p>
   <p><br /></p>
   <p>    @Override</p>
   <p>    public MemberVO memberContent(int num) {</p>
   <p>        SqlSession session = sqlSessionFactory.openSession();</p>
   <p>        MemberVO vo = session.selectOne("memberContent", num);</p>
   <p>        session.close();</p>
   <p>        return vo;</p>
   <p>    }</p>
   <p><br /></p>
   <p>    @Override</p>
   <p>    public int memberUpdate(MemberVO vo) {</p>
   <p>        SqlSession session = sqlSessionFactory.openSession();</p>
   <p>        int cnt = session.update("memberUpdate", vo);</p>
   <p>        session.commit();</p>
   <p>        session.close();</p>
   <p>        return cnt;</p>
   <p>    }</p>
   <p>}</p>
   </div>
<p> </p>
<p> </p>
<p>MemberMapper.xml</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</p>
   <p>&lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt;</p>
   <p>&lt;mapper namespace="kr.smhrd.mybatis.MemberMapper"&gt;</p>
   <p>    &lt;select id="memberList" resultType="MemberVO"&gt;</p>
   <p>        SELECT * FROM memiot </p>
   <p>        ORDER BY NUM DESC</p>
   <p>    &lt;/select&gt;</p>
   <p>    &lt;insert id="memberInsert" parameterType="MemberVO"&gt;</p>
   <p>         INSERT INTO memiot </p>
   <p>         VALUES </p>
   <p>         (num_seq.nextval, #{id}, #{pass}, #{mname}, #{mage}, #{memail}, #{mtel})</p>
   <p>    &lt;/insert&gt;</p>
   <p>    &lt;delete id="memberDelete" parameterType="Integer"&gt;</p>
   <p>         DELETE FROM memiot </p>
   <p>         WHERE </p>
   <p>         num=#{num}</p>
   <p>    &lt;/delete&gt;</p>
   <p>    &lt;select id="memberContent" resultType="MemberVO" parameterType="Integer"&gt;</p>
   <p>        SELECT * FROM memiot </p>
   <p>        WHERE</p>
   <p>        num=#{num}</p>
   <p>    &lt;/select&gt;</p>
   <p>    &lt;update id="memberUpdate" parameterType="MemberVO"&gt;</p>
   <p>         UPDATE memiot </p>
   <p>         SET </p>
   <p>         mage=#{mage}, memail=#{memail}, mtel=#{mtel}</p>
   <p>         WHERE </p>
   <p>         num=#{num}</p>
   <p>    &lt;/update&gt;</p>
   <p>    </p>
   <p> </p>
   <p>&lt;/mapper&gt;</p>
   </div>
<p> </p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-29T16:13:31+09:00</dc:date>
</item>


<item>
<title>[ jsp ] Ajax 와 서블릿을 이용하여 통신을 하는 간단한 회원가입 프로그램</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=15</link>
<description><![CDATA[<p>Ajax 와 서블릿을 이용하여 통신을 하는 간단한 회원가입 프로그램</p>
<p><span style="color:#ff0000;"><b>1) 사용된 파일의 종류</b></span></p>
<p>//db 파일</p>
<p>프로젝트/src/kr.mem.db/member.sql    //kr.mem.db 는 패키지</p>
<p>//회원수정</p>
<p>프로젝트/src/AjaxContentController.java  //AjaxContentController.java 는 서블릿, url mapping은 ajaxcontent.do</p>
<p>//회원삭제</p>
<p>프로젝트/src/AjaxDeleteController.java  //AjaxController.java 는 서블릿 url mapping은 ajaxdelete.do</p>
<p>//회원입력</p>
<p>프로젝트/src/AjaxInsertController.java //AjaxInsertController.java 는 서블릿 url mapping은 ajaxinsert.do</p>
<p>//회원목록</p>
<p>프로젝트/src/AjaxListController.java //AjaxListController.java 는 서블릿 url mapping은 ajaxlist.do</p>
<p>//회원정보업데이트</p>
<p>프로젝트/src/AjaxUpdateController.java //AjaxUpdateController.java 는 서블릿 url mapping은 ajaxupdate.do</p>
<p> </p>
<p>프로젝트/src/kr.smhrd.model/MemberDAO.java //kr.smhrd.model 는 패키지</p>
<p>프로젝트/src/kr.smhrd.model/MemberDAOImpl.java</p>
<p>프로젝트/src/kr.smhrd.model/MemberVO.java</p>
<p> </p>
<p>프로젝트/WEB-INF/lib/ojdbc6.jar</p>
<p>프로젝트/WEB-INF/gson-2.8.5.jar</p>
<p><br /></p>
<p>프로젝트/WebContent/ajax02.html</p>
<p> </p>
<p><span style="color:#ff0000;"><b>2) 설명</b></span></p>
<p> - 크롬 주소창 : 127.0.0.1/프로젝트/ajax02.html</p>
<p> - 기본화면에서 회원의 목록이 존재하면 화면에 정상적으로 출력이 된다.</p>
<p> - 회원이 존재하지 않으면 회원가입 버튼을 통해서 회원을 가입한다.</p>
<p> - ajax의 callback을 통해서 화면전환없이 한페이지에서 회원의 정보등록/수정/삭제 </p>
<p> </p>
<p>샘플 파일 다운로드 경로</p>
<p><a href="https://github.com/freemaster/MVC04" target="_blank" rel="nofollow noreferrer noopener">https://github.com/freemaster/MVC04</a></p>
<p> </p>
<p> </p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-29T09:34:14+09:00</dc:date>
</item>


<item>
<title>[ jsp ] servlet을 통한 간단한 ajax 통신 - 데이터는 json 방식</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=14</link>
<description><![CDATA[<p>jsp servlet ajax</p>
<p>jsp 서블릿 ajax 을 이용하여 동기식 통신하기 - 데이터는 json 방식</p>
<p> </p>
프로젝트/WebContent/ajax.html
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>&lt;!DOCTYPE html&gt;</p>
   <p>&lt;html&gt;</p>
   <p>&lt;head&gt;</p>
   <p>&lt;meta charset="UTF-8"&gt;</p>
   <p>&lt;script src="https://code.jquery.com/jquery-3.5.1.min.js"&gt;&lt;/script&gt;</p>
   <p>&lt;title&gt;Insert title here&lt;/title&gt;</p>
   <p>&lt;script type="text/javascript"&gt;</p>
   <p>$(document).ready(function() {</p>
   <p>    $("#btn").click(function() {</p>
   <p>        var led = $("#su").val();</p>
   <p>        $.ajax({</p>
   <p>            url : "ajax.do", //AjaxController</p>
   <p>            type : "get",</p>
   <p>            dataType : "json",</p>
   <p>            data : { "led" : led },</p>
   <p>            //success : function(data){</p>
   <p>            success : (data) =&gt; {</p>
   <p>                $("#msg").html(data.sensor+" : "+data.on);</p>
   <p>                //$("#msg").html(data);</p>
   <p>                if(data.on == 1) {</p>
   <p>                    $("#led").html("&lt;img src='images/on.PNG' &gt;");</p>
   <p>                } else {</p>
   <p>                    $("#led").html("&lt;img src='images/off.PNG' &gt;");</p>
   <p>                }</p>
   <p>            },</p>
   <p>            //error : function() {</p>
   <p>            error : () =&gt; {</p>
   <p>                alert('실패');</p>
   <p>            }</p>
   <p>        });</p>
   <p>        </p>
   <p>    });</p>
   <p>});</p>
   <p>&lt;/script&gt;</p>
   <p>&lt;/head&gt;</p>
   <p>&lt;body&gt;</p>
   <p>LED 상태 </p>
   <p>&lt;select name="su"  id="su"&gt;</p>
   <p>    &lt;option&gt; ::: 전원선택 ::: &lt;/option&gt;</p>
   <p>    &lt;option value="1"&gt;on&lt;/option&gt;</p>
   <p>    &lt;option value="0"&gt;off&lt;/option&gt;</p>
   <p>&lt;/select&gt;</p>
   <p>&lt;input type="button" id="btn" value="버튼을 눌러주십숑"&gt;</p>
   <p>&lt;hr&gt;</p>
   <p>&lt;div id="msg"&gt;&lt;/div&gt;</p>
   <p>&lt;div id="led"&gt;&lt;/div&gt;</p>
   <p>&lt;/body&gt;</p>
   <p>&lt;/html&gt;</p>
   </div>
<p> </p>
<p>프로젝트/src/kr.smhrd.controller/AjaxController.java   ===&gt; kr.smhrd.controller 이곳은 폴더가 아니라 패키지 입니다.</p>
<div style="padding:10px 10px 10px 18px;border-width:1px 1px 1px 4px;border-style:solid;border-color:#f42857;font-size:13px;line-height:19px;font-family:'courier 10 pitch', Courier, monospace;vertical-align:baseline;background-color:#051e30;color:#ffffff;">
   <p>package kr.smhrd.controller;</p>
   <p><br /></p>
   <p>import java.io.IOException;</p>
   <p>import java.io.PrintWriter;</p>
   <p><br /></p>
   <p>import javax.servlet.ServletException;</p>
   <p>import javax.servlet.annotation.WebServlet;</p>
   <p>import javax.servlet.http.HttpServlet;</p>
   <p>import javax.servlet.http.HttpServletRequest;</p>
   <p>import javax.servlet.http.HttpServletResponse;</p>
   <p><br /></p>
   <p>@WebServlet("/ajax.do")</p>
   <p>public class AjaxController extends HttpServlet {</p>
   <p>    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</p>
   <p>        // System.out.println("OK");</p>
   <p>        // PrintWriter out = response.getWriter();</p>
   <p>        // out.println("- Server Data -");</p>
   <p>        int su = Integer.parseInt(request.getParameter("led"));</p>
   <p>        String led = "{\"sensor\":\"led\", \"on\":"+su+"}";</p>
   <p>        response.setContentType("text/json");</p>
   <p>        PrintWriter out = response.getWriter();</p>
   <p>        out.println(led); //--------------&gt; ajax()  :  success</p>
   <p>    }</p>
   <p>}</p>
   </div>
<p> </p>
<p>결과</p>
<p><br /></p>
<p><img src="https://funyphp.com/data/editor/2101/20210127180340_b6993ce5882072c312fbe19d6ebdc052_tdia.png" alt="112233.png" /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-27T17:55:53+09:00</dc:date>
</item>


<item>
<title>[ jsp ] JSTL이란? JSTL 다운로드, JSTL 사용법</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=13</link>
<description><![CDATA[<p>1) JSTL이란? </p>
<p> - JSTL(JavaServer Page Standard Tag Libray) + EL(표현언어(Expression Language )) 의 조합</p>
<p> - JSP 표준 태그 라이브러리( 여러 프로그램이 공통으로 사용하는 코드를 모아놓은 코드의 집합)의 약어</p>
<p> - 자신만의 태그를 추가할 수 있는 기능을 제공</p>
<p> - HTML코드 내에 JAVA 코드인 스크립트릿을 변경해서 사용하게 해줌</p>
<p>    (&lt;%=sum %&gt; =&gt; ${sum}, &lt;%=if %&gt; =&gt; &lt;c:if&gt;, &lt;%=for %&gt; =&gt; &lt;c:forEach&gt; 등으로 사용)</p>
<p><br /></p>
<p>2) 다운로드</p>
<p> - JSPL API - https://mvnrepository.com/</p>
<p> - 검색창에 jstl 중에 usages 가 많은 파일을 클릭</p>
<p> - 버젼중에 usages가 많은 파일의 버젼 클릭</p>
<p> - jar( ...KB) 클릭해서 jar 파일을 원하는 프로젝트의 WEB-INF/lib에  다운로드</p>
<p><br /></p>
<p>3) 구성요소</p>
<p> 1. 스크립트(Script)요소</p>
<p> 2. 지시어(디렉티브:directive)</p>
<p> 3. 내장객체(Implicit Object)</p>
<p> 4. 액션태그(Action Tag)</p>
<p> 5. 표현언어(Expression Language)</p>
<p> 6. 사용자 정의 태그, JSTL</p>
<p> </p>
<p> </p>
<p>4) 사용법</p>
<p> - JSTL 라이브러리를 JSP페이지 상단에 정의</p>
<p> - JSTP 라이브러리 불러오기</p>
<p>&lt;%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;</p>
<p> - JSTL 함수 라이브러리 불러오기</p>
<p>&lt;%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%&gt;</p>
<p>변수정의</p>
<p>&lt;c:set var="sum" value="100" /&gt;</p>
<p>변수 출력</p>
<p>&lt;c:out value="${sum}" /&gt;</p>
<p>${sum}</p>
<p>if문</p>
<p>&lt;c:if test="${sum%2!=0}"&gt; 홀수입니다.&lt;/c:if&gt;</p>
<p>for문</p>
<p>&lt;c:forEach var="i" begin="1" end="5" step="1"&gt;</p>
<p>    &lt;span style="font-size:${i*10}px" &gt;야호&lt;/span&gt;&lt;br&gt;</p>
<p>&lt;/c:forEach&gt;</p>
<p>for문 배열로 저장된 값</p>
<p>&lt;c:forEach var="vo" items="${list}"&gt;</p>
<p>    &lt;span&gt;${vo.id}&lt;/span&gt;&lt;span&gt;${vo.mname}&lt;/span&gt;</p>
<p>&lt;/c:forEach&gt;</p>
<p>switch 구문</p>
<p>&lt;c:choose&gt;</p>
<p>    &lt;c:when test="${su%2==0}"&gt;짝수입니다.&lt;/c:when&gt;</p>
<p>    &lt;c:when test="${su%2!=0}"&gt;홀수입니다.&lt;/c:when&gt;</p>
<p>    &lt;c:otherwise&gt;일치하는 when이 없을 때 실행되는 부분&lt;/c:otherwise&gt;</p>
<p>&lt;/c:choose&gt;</p>
<p> </p>
<table border="1" cellpadding="0" cellspacing="0" width="80%" style="width:544pt;"><colgroup><col width="20%" /></colgroup><colgroup></colgroup><colgroup><col width="70%" /></colgroup>
   <tbody>
      <tr style="height:27pt;">
         <td height="36" class="xl64" width="180" style="height:27pt;width:135pt;">명령어</td>
         <td class="xl64" width="545" style="border-left:none;width:409pt;">설명</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:out&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> &lt;%= .. %&gt; 와 유사하며 표현식에 사용된다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:set&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> JSP 에 사용될 변수를 지정하며 범위를 설정할 수 있다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:remove&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 변수를 제거한다. ( 범위를 설정한 경우 해당 범위내의 변수를 제거 )</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:catch&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 에러 (Exception) 를 캐치하고 이를 처리한다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:if&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 조건이 참일 경우 본문 포함된다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:choose&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 조건태그 이며 배타적인 조건부 연산에 사용된다. </td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:when&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> choose 태그가 사실일경우 본문에 포함된다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:otherwise&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> choose 태그가 거짓일경우 본문에 포함된다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:import&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 설정된 url 의 자원을 삽입한다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:forEach&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 컬렉션 또는 Map 과 같은 유형을 허용하고 이를 반복처리한다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:forTokens&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 설정한 구분자로 분리된 토큰을 반복한다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:param&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> import 태그에 설정된 url 에 파라미터를 추가한다.</td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:redirect&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> 새로운 url 로 리다이렉트 시킨다. </td>
         </tr>
      <tr style="height:27pt;">
         <td height="36" class="xl65" width="180" style="height:27pt;border-top:none;width:135pt;">  &lt;c:url&gt;</td>
         <td class="xl65" width="545" style="border-top:none;border-left:none;width:409pt;"> URL 를 재생성한다.</td>
         </tr>
      </tbody>
   </table>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-19T15:08:06+09:00</dc:date>
</item>


<item>
<title>[ jsp ] HandlerMapping / HashMap</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=12</link>
<description><![CDATA[<p>handlerMapping</p>
<p> - dispatcherServlet로 받은 요청을 Controller로 보내지는데, 이런 요청이 어떤 방식으로 보내지는지(매핑하는지)</p>
<p>그 방법을 정해주는 클래스가 handler</p>
<p> - 핸들러 매핑은 프로퍼티스파일(환경설정파일) 을 통해서 유지보수를 더 간소화 할 수가 있다.</p>
<p><br /></p>
<p><br /></p>
<p>HashMap이란?</p>
<p> - key와 value를 쌍으로 존재하는 자료구조</p>
<p> - HashMap을 사용하면 key값이 무엇이 들었는지 알 수 없다.</p>
<p> - HashMap 클래스 내부구조로 Set 자료구조에 key를 보관한 객체가 존재한다.</p>
<p> - set 객체를 통해 key값을 가져온다.</p>
<p><br /></p>
<p><img src="https://funyphp.com/data/editor/2101/20210119150956_12089091dd298d781b6f66cdb7d023fa_acu4.png" alt="handlerMapping.png" /></p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-19T12:11:53+09:00</dc:date>
</item>


<item>
<title>[ jsp ] servlet 폴더 및 구동 설명</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=11</link>
<description><![CDATA[<p>jsp 폴더 및 설명</p>
<p><br /></p>
<p>web-inf 경비실</p>
<p>└ lib - 도구(jar)</p>
<p>└ class -  서블릿 </p>
<p>                 일반 java-model(class) - dto(vo)</p>
<p>                                                      - dao</p>
<p>                                                     - util</p>
<p>                  api(java에서 제공하는 또는 직접만든)</p>
<p>└ web.xml - 배치서술자(안내)</p>
<p>Servers -&gt; Tomcat v8.5 -&gt; server.xml </p>
<p><br /></p>
<p> 1) 톰캣 설정에서 반드시 필요한 것</p>
<p>   - Context path등록을 통해 시작경로를 지정</p>
<p> 2) Context는 웹어플리케이션을 의미</p>
<p> 3) 서버의 구동시 오류가 발생할 때는 서버 설정을 먼저 확인</p>
<p>    web.xml, server.xml 등의 파일</p>
<p>html은 정적인 페이지 - 바뀌지 않는 페이지</p>
<p>정적인 페이지를 동적페이지를 만드는 과정 - 랜더링</p>
<p>jsp페이지에는 jsp의 지시자가 사용된다. &lt;%@ page ~~~%&gt;</p>
<p><br /></p>
<p>비지니스 로직 - 처리구문(처리로직) - jsp구문</p>
<p>프리젠테이션 로직(view) - html이 나오는 구문</p>
<p>비지니스 로직과 프리젠테이션 로직을 분리해서 사용</p>
<p>같은페이지에서 사용할 경우 a/s및 활용에 어렵이 많다.</p>
<p>로직을 서로 나눠서 비지니스 로직에서 수정시 프리젠테이션 로직은 자동으로 수정되게 끔</p>
<p>java = model </p>
<p>jsp = view</p>
<p>servlet = Controller</p>
<p><br /></p>
<p>java에서 사용하는 api :: javaSE -&gt; aip -&gt; rt.jar</p>
<p>jsp에서 사용하는 api :: javaEE -&gt; api -&gt; servlet</p>
<p>(웹에서 사용하는 api형태를 servlet 이라 함, </p>
<p>java코드에 html 코드를 이용해서 동적으로 요청)</p>
<p>이 서블릿을 해석을 해주기 위해서 톰캣이 필요함.</p>
<p>즉 자바웹프로그램은 서블릿이라 한다.</p>
<p>- 100% 자바에 html 섞어서 쓰는 것</p>
<p>- 웹용 api (서블릿 api) 위치</p>
<p>   C:\eGovFrame-3.9.0\bin\apache-tomcat-8.5.50\lib -&gt; servlet-api.jar</p>
<p> - 톰캣이 api가 필요할 때 검색하는 위치</p>
<p> - C:\eGovFrame-3.9.0\bin\apache-tomcat-8.5.50\lib\servlet-api.jar 파일을 복사해서</p>
<p>   WEB-INF -&gt; lib -&gt; servlet-api.jar 넣기</p>
<p> - 서버로 사용하는 프로젝트에서 마우스 우클릭 &gt; build path &gt; Libraries &gt; Add Externam Jars &gt; C:\eGovFrame-3.9.0\workspace.edu\IoTServer\webapp\WEB-INF\lib\servlet-api.jar 선택 &gt; 저장</p>
<p>IotServer</p>
<p> - src 폴더에서 컴파일을 하면 bin 폴더로 들어가진다.</p>
<p> -  하지만, jsp에서는 WEB-INF &gt; classes 로 들어가게 수정해준다.</p>
<p>    IotServer 우클릭 &gt; Build path &gt; Configure build path &gt; Java Build Path &gt; Source &gt; 소스클릭해서 Edit &gt; </p>
<p>    폴더를 WEB-INF&gt;&gt; classes 로 변경 </p>
<p>    browse &gt; IoTServer &gt; WEB-INF &gt; classes &gt; ok</p>
<p>    저장 완료</p>
<p>&lt;%@ --&gt; @가 있는 것은 지시자</p>
<p>m + v( view+controller ) = 모델 1방식</p>
<p>m + v + c = 모델 2방식</p>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-19T09:10:30+09:00</dc:date>
</item>


<item>
<title>[ jsp ] 내장객체</title>
<link>https://funyphp.com/bbs/board.php?bo_table=jsp&amp;amp;wr_id=10</link>
<description><![CDATA[<p>내장객체</p>
<p> </p>
<table border="1" cellpadding="0" cellspacing="0" style="width:90%;font-size:12px;"><colgroup><col width="15%" /><col width="45%" /><col width="40%" /></colgroup>
   <tbody>
      <tr>
         <td>내장객체</td>
         <td>반환값 타입</td>
         <td>설명</td>
         </tr>
      <tr>
         <td>request</td>
         <td>javax.servlet.http.httpServletRequest<font class="font7">또는</font><font class="font6">javax.servlet.ServletRequest</font></td>
         <td>웹브라우저의 요청 정보를 저장하고 있는 객체</td>
         </tr>
      <tr>
         <td>response</td>
         <td>javax.servlet.http.httpServletResponse<font class="font7">또는</font><font class="font6">javax.servlet.ServletResponse</font></td>
         <td>웹브라우저의 요청에 대한 응답 정보를 저장하는 객체</td>
         </tr>
      <tr>
         <td>out</td>
         <td>javax.servlet.jsp.JspWriter</td>
         <td>JSP페이지의 출력할 내용을 가지고 있는 출력 스트림 객체</td>
         </tr>
      <tr>
         <td>session</td>
         <td>javax.servlet.http.HttpSession</td>
         <td>하나의웹 브라우저 내에서 정보를 유지하기 위한 세션 정보를 저장하고 있는 객체</td>
         </tr>
      <tr>
         <td>application</td>
         <td>javax.servlet.ServletContext</td>
         <td>웹애플리케이션 Context의 정보를 담고 있는 객체</td>
         </tr>
      <tr>
         <td>pageContext</td>
         <td>javax.servlet.jsp.PageContext</td>
         <td>JSP페이지에 대한 정보를 저장하고 있는 객체</td>
         </tr>
      <tr>
         <td>page</td>
         <td>java.lang.Object</td>
         <td>JSP페이지를 구현한 자바 클래스 객체</td>
         </tr>
      <tr>
         <td>config</td>
         <td>javax.servlet.ServletConfig</td>
         <td>JSP페이지에 대한 설정 정보를 담고 있는 객체</td>
         </tr>
      <tr>
         <td>exception</td>
         <td>java.lang.Throwable</td>
         <td>JSP페이지에서 예외가 발생한 경우 사용하는 객체</td>
         </tr>
      </tbody>
   </table>]]></description>
<dc:creator>웹지기</dc:creator>
<dc:date>2021-01-15T10:36:54+09:00</dc:date>
</item>

</channel>
</rss>
