<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>SW 다이어리</title>
    <link>https://sw-diary21.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 15 Jun 2026 18:39:24 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Feels_Good</managingEditor>
    <image>
      <title>SW 다이어리</title>
      <url>https://tistory1.daumcdn.net/tistory/4592235/attach/abae25dfbfe34241a291c5b64f588548</url>
      <link>https://sw-diary21.tistory.com</link>
    </image>
    <item>
      <title>[0407][SPRING] 프레임워크, 스프링 IDE, Maven 설치 및 환경설정</title>
      <link>https://sw-diary21.tistory.com/46</link>
      <description>&lt;p&gt;1. 프레임워크(Framework)&lt;/p&gt;
&lt;p&gt;구조가 있고 구조를 기준으로 이미 준비 된 라이브러리를 사용하거나 추가해서 사용 할 수 있다.&lt;/p&gt;
&lt;p&gt;아키텍처를 가지고 있는 골격 - 채워나가는 방법을 배우고 사용&lt;/p&gt;
&lt;p&gt;개발이 빠르다 (반복 구간을 없애고, 필수 기능은 캡슐화 제공)&lt;/p&gt;
&lt;p&gt;쉬운 관리 (유지보수 비용, 개발 비용이 저렴)&lt;/p&gt;
&lt;p&gt;검증 된 아키텍처의 재사용과 일관성 유지 -&amp;gt; 표준화&lt;/p&gt;
&lt;p&gt;신규 개발시에도 표준화 된 프레임워크를 사용하면 빠른 속도로 개발 가능.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Spring, Strurs2, Struts, Django[MVT] =&amp;gt; MVC 기반&lt;/p&gt;
&lt;p&gt;Struts2(Interceptor, Aware), Spring(loc &amp;amp; DI, AOP) =&amp;gt; 모델 기반의 Proxy&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;■ spring framework는 Enterprise Application에서 필요로 하는 기능을 제공하는 오픈 소스 프레임워크다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-38c145ae-dbf0-493c-8969-45decda4c0fa&quot;&gt;&lt;b&gt;■ spring framework는 평범한 자바객체(POJO : Plain Old Java Object)를 이용해서 단순하고, 테스트하기 쉬우며, 객체간의 결합이 느슨한 Enterprise Application 개발이 가능하도록 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a10d69a1-0258-4cab-b262-bc305875a527&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-ccb64159-c5d9-448b-b9fd-2a99b05ba985&quot;&gt;&lt;b&gt;■ spring framework의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-59499cda-ae65-4abc-9288-80e2dcdd9db4&quot;&gt;&lt;b&gt;∎ 스프링은 자바객체를 담고 있는 경량의 컨테이너다. 이들 자바객체의 생성 소멸과 같은 라이프사이클을 관리한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ec27160d-9d12-415b-9aa6-847e75ef4ae6&quot;&gt;&lt;b&gt;∎ 스프링은 의존성 주입(Dependency Injection)을 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a6761e94-e147-46fe-8840-9311ea2d2961&quot;&gt;&lt;b&gt;∎ 스프링은 관점지향 프로그래밍(Aspect Oriented Programming)을 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-80522120-ddfc-4a3d-97a4-a10b90717196&quot;&gt;&lt;b&gt;∎ 스프링은 POJO(Plain Old Java Object)를 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-546a7a73-32bf-40a1-998f-f0e43eb6f2ac&quot;&gt;&lt;b&gt;∎ 스프링은 트랜잭션 처리를 위한 일관된 방법을 제공하며, 설정파일을 통해 트랜잭션 관련정보를 선언적으로 정의할 수 있다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9df9e0dc-3884-44fa-ab34-6071d77ca7bf&quot;&gt;&lt;b&gt;∎ 스프링은 다양한 ORM(Object-Relation Mapping)툴과의 연동을 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d490daae-b741-4459-94a6-a9eb55dbf03e&quot;&gt;&lt;b&gt;∎ 스프링은 Enterprise Application개발에 필요한 다양한 API를 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f5f0c9a2-04b3-41f8-bdbe-74588827b55b&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7e32e1c8-30c5-41ee-ac73-4d372770a3d5&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-53c2ec57-324b-4d61-8a64-51f5af533cb9&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;■ spring framework의 모듈&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVqwvZ/btq140keElF/IDo958GOggfnj8HfRSwMXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVqwvZ/btq140keElF/IDo958GOggfnj8HfRSwMXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVqwvZ/btq140keElF/IDo958GOggfnj8HfRSwMXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVqwvZ%2Fbtq140keElF%2FIDo958GOggfnj8HfRSwMXK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;∎ Spring Core : spring framework의 핵심기능인 의존성 주입기능을 지원하는 모듈이다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9e059435-d25b-47d6-9b8e-045d894966b3&quot;&gt;&lt;b&gt;∎ Spring Context : Spring Core에서 지원하는 기능 외의 추가적인 기능을 지원하고, jndi연결이나 ejb연계를 위한 Adapter를 제공하는 모듈이다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-cc2aaddc-f5fc-4af4-a932-339a742349a5&quot;&gt;&lt;b&gt;∎ Spring Web : Web Application개발에 적합한 Web Application Context를 제공하며, Mulitpart 요청을 처리할 수 있다. Struts와 같은 다른 프레임워크와의 연동을 지원한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-13505746-7e74-4009-a9a4-3943561ea2ba&quot;&gt;&lt;b&gt;∎ Spring DAO : jdbc를 기반으로 DAO클래스 개발할 때 연결취득, statement 생성, ResultSet 처리, 연결 끊기 등의 반복적인 작업을 줄일 수 있는 템플릿 기반의 클래스를 제공한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-3a082dd9-435e-42df-afb4-56a4c38f9258&quot;&gt;&lt;b&gt;∎ Spring ORM : ORM(Object-Relation Mapping)툴과의 연동을 지원하는 모듈이다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-101d836d-cdec-42c5-9279-6cdcb8ba1edc&quot;&gt;&lt;b&gt;∎ Spring AOP : 관점지향 프로그래밍을 지원하는 모듈이다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-ec623a4f-17ce-4345-b82b-07f2223e306c&quot;&gt;&lt;b&gt;∎ Spring MVC : Model-View-Controller 기반의 웹 어플리케이션 개발을 지원하는 모듈이다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7ybEK/btq12xion3E/41RaJNi7zrkkliJJbfnnZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7ybEK/btq12xion3E/41RaJNi7zrkkliJJbfnnZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7ybEK/btq12xion3E/41RaJNi7zrkkliJJbfnnZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7ybEK%2Fbtq12xion3E%2F41RaJNi7zrkkliJJbfnnZ0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;스프링 IDE 설치 및 환경설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/c8AfSD/btq106ZVDcC/VuFVtQnof8k5fgo583mnw0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/EbYoO/btq10RvbBq4/5LiBd1oA77q04bzsHqhB3K/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/pi0oJ/btq16yAMmfT/Aj3ivQlpssNu6Y3TBfp1ek/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cbwyll/btq12wDPh2n/GVzCT6SUpKuWAIRIuG1kQ1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/F80B9/btq16stSUM4/HGKUufK9uIhG5AdkPGuo9K/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bGFnB4/btq17aTXMlY/lrGxafe4707ubboIrK9rok/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/XjInM/btq16iEWScL/zwXAlRbGCUs4GTezdxQXZK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/15XUC/btq16tsM3CX/akGPkhWrpbEzdfisK9suyk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/dHHlz6/btq16stSUxW/B80tK7DDjEd2zjomwTyJV0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/Zl7uj/btq1ZLvlRBX/pZ3PxeTPyMnjMqAMSWAn70/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bEvcnR/btq14Zr54Gj/nHwZ1ktbk5E9xV32ehZqMK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/b4SG1C/btq16y8Cpn6/f2vQcjz6p7kjqVtPxjGfj1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/CBVZo/btq16P3rwmj/KvfGrd39zUHfKm9c2rVHk1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/Q1CMt/btq16z7wrz7/OTmuFgFzXrlFMl1EpEWzBk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/Zx3bN/btq17asTno5/ioXp3Rrrooc6LSyIXRuPT1/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8AfSD/btq106ZVDcC/VuFVtQnof8k5fgo583mnw0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/c8AfSD/btq106ZVDcC/VuFVtQnof8k5fgo583mnw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8AfSD/btq106ZVDcC/VuFVtQnof8k5fgo583mnw0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8AfSD%2Fbtq106ZVDcC%2FVuFVtQnof8k5fgo583mnw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EbYoO/btq10RvbBq4/5LiBd1oA77q04bzsHqhB3K/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/EbYoO/btq10RvbBq4/5LiBd1oA77q04bzsHqhB3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EbYoO/btq10RvbBq4/5LiBd1oA77q04bzsHqhB3K/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEbYoO%2Fbtq10RvbBq4%2F5LiBd1oA77q04bzsHqhB3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pi0oJ/btq16yAMmfT/Aj3ivQlpssNu6Y3TBfp1ek/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/pi0oJ/btq16yAMmfT/Aj3ivQlpssNu6Y3TBfp1ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pi0oJ/btq16yAMmfT/Aj3ivQlpssNu6Y3TBfp1ek/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpi0oJ%2Fbtq16yAMmfT%2FAj3ivQlpssNu6Y3TBfp1ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbwyll/btq12wDPh2n/GVzCT6SUpKuWAIRIuG1kQ1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cbwyll/btq12wDPh2n/GVzCT6SUpKuWAIRIuG1kQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbwyll/btq12wDPh2n/GVzCT6SUpKuWAIRIuG1kQ1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcbwyll%2Fbtq12wDPh2n%2FGVzCT6SUpKuWAIRIuG1kQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F80B9/btq16stSUM4/HGKUufK9uIhG5AdkPGuo9K/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/F80B9/btq16stSUM4/HGKUufK9uIhG5AdkPGuo9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F80B9/btq16stSUM4/HGKUufK9uIhG5AdkPGuo9K/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF80B9%2Fbtq16stSUM4%2FHGKUufK9uIhG5AdkPGuo9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGFnB4/btq17aTXMlY/lrGxafe4707ubboIrK9rok/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bGFnB4/btq17aTXMlY/lrGxafe4707ubboIrK9rok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGFnB4/btq17aTXMlY/lrGxafe4707ubboIrK9rok/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGFnB4%2Fbtq17aTXMlY%2FlrGxafe4707ubboIrK9rok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XjInM/btq16iEWScL/zwXAlRbGCUs4GTezdxQXZK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/XjInM/btq16iEWScL/zwXAlRbGCUs4GTezdxQXZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XjInM/btq16iEWScL/zwXAlRbGCUs4GTezdxQXZK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXjInM%2Fbtq16iEWScL%2FzwXAlRbGCUs4GTezdxQXZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/15XUC/btq16tsM3CX/akGPkhWrpbEzdfisK9suyk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/15XUC/btq16tsM3CX/akGPkhWrpbEzdfisK9suyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/15XUC/btq16tsM3CX/akGPkhWrpbEzdfisK9suyk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F15XUC%2Fbtq16tsM3CX%2FakGPkhWrpbEzdfisK9suyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHHlz6/btq16stSUxW/B80tK7DDjEd2zjomwTyJV0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/dHHlz6/btq16stSUxW/B80tK7DDjEd2zjomwTyJV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHHlz6/btq16stSUxW/B80tK7DDjEd2zjomwTyJV0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHHlz6%2Fbtq16stSUxW%2FB80tK7DDjEd2zjomwTyJV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zl7uj/btq1ZLvlRBX/pZ3PxeTPyMnjMqAMSWAn70/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/Zl7uj/btq1ZLvlRBX/pZ3PxeTPyMnjMqAMSWAn70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zl7uj/btq1ZLvlRBX/pZ3PxeTPyMnjMqAMSWAn70/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZl7uj%2Fbtq1ZLvlRBX%2FpZ3PxeTPyMnjMqAMSWAn70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEvcnR/btq14Zr54Gj/nHwZ1ktbk5E9xV32ehZqMK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bEvcnR/btq14Zr54Gj/nHwZ1ktbk5E9xV32ehZqMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEvcnR/btq14Zr54Gj/nHwZ1ktbk5E9xV32ehZqMK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEvcnR%2Fbtq14Zr54Gj%2FnHwZ1ktbk5E9xV32ehZqMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4SG1C/btq16y8Cpn6/f2vQcjz6p7kjqVtPxjGfj1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/b4SG1C/btq16y8Cpn6/f2vQcjz6p7kjqVtPxjGfj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4SG1C/btq16y8Cpn6/f2vQcjz6p7kjqVtPxjGfj1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4SG1C%2Fbtq16y8Cpn6%2Ff2vQcjz6p7kjqVtPxjGfj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CBVZo/btq16P3rwmj/KvfGrd39zUHfKm9c2rVHk1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/CBVZo/btq16P3rwmj/KvfGrd39zUHfKm9c2rVHk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CBVZo/btq16P3rwmj/KvfGrd39zUHfKm9c2rVHk1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCBVZo%2Fbtq16P3rwmj%2FKvfGrd39zUHfKm9c2rVHk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q1CMt/btq16z7wrz7/OTmuFgFzXrlFMl1EpEWzBk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/Q1CMt/btq16z7wrz7/OTmuFgFzXrlFMl1EpEWzBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q1CMt/btq16z7wrz7/OTmuFgFzXrlFMl1EpEWzBk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ1CMt%2Fbtq16z7wrz7%2FOTmuFgFzXrlFMl1EpEWzBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zx3bN/btq17asTno5/ioXp3Rrrooc6LSyIXRuPT1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/Zx3bN/btq17asTno5/ioXp3Rrrooc6LSyIXRuPT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zx3bN/btq17asTno5/ioXp3Rrrooc6LSyIXRuPT1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZx3bN%2Fbtq17asTno5%2FioXp3Rrrooc6LSyIXRuPT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;span data-index=&quot;8&quot;&gt;8&lt;/span&gt;&lt;span data-index=&quot;9&quot;&gt;9&lt;/span&gt;&lt;span data-index=&quot;10&quot;&gt;10&lt;/span&gt;&lt;span data-index=&quot;11&quot;&gt;11&lt;/span&gt;&lt;span data-index=&quot;12&quot;&gt;12&lt;/span&gt;&lt;span data-index=&quot;13&quot;&gt;13&lt;/span&gt;&lt;span data-index=&quot;14&quot;&gt;14&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/IMd36/btq12kQ4nHo/Gbq0cCRlkbfzbkHwOX1eB1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/240SO/btq10QQAqJM/lctqoUKeNr42QBh8QxVdT0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bbnJU1/btq16Ak4vHR/IxiQjVkcYhLzXU80mw2Ce0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bZbrDK/btq12lh8JFC/D4PIHNjEuNu0To4FjOQoW0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/mrlBx/btq12wqi0UV/vEm5pfWULhXmKnlWhfFZ00/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/YnFLp/btq16RAcaih/8DC514xtZXAfCat595QyUK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/QIYvM/btq1ZGAD0FF/YjaMoq8X6ksi2NssWuiz21/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cEy99E/btq127KIp40/xg17wZkHdloFPrCqEVGaxK/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IMd36/btq12kQ4nHo/Gbq0cCRlkbfzbkHwOX1eB1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/IMd36/btq12kQ4nHo/Gbq0cCRlkbfzbkHwOX1eB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IMd36/btq12kQ4nHo/Gbq0cCRlkbfzbkHwOX1eB1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIMd36%2Fbtq12kQ4nHo%2FGbq0cCRlkbfzbkHwOX1eB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/240SO/btq10QQAqJM/lctqoUKeNr42QBh8QxVdT0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/240SO/btq10QQAqJM/lctqoUKeNr42QBh8QxVdT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/240SO/btq10QQAqJM/lctqoUKeNr42QBh8QxVdT0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F240SO%2Fbtq10QQAqJM%2FlctqoUKeNr42QBh8QxVdT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbnJU1/btq16Ak4vHR/IxiQjVkcYhLzXU80mw2Ce0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bbnJU1/btq16Ak4vHR/IxiQjVkcYhLzXU80mw2Ce0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbnJU1/btq16Ak4vHR/IxiQjVkcYhLzXU80mw2Ce0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbnJU1%2Fbtq16Ak4vHR%2FIxiQjVkcYhLzXU80mw2Ce0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZbrDK/btq12lh8JFC/D4PIHNjEuNu0To4FjOQoW0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bZbrDK/btq12lh8JFC/D4PIHNjEuNu0To4FjOQoW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZbrDK/btq12lh8JFC/D4PIHNjEuNu0To4FjOQoW0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZbrDK%2Fbtq12lh8JFC%2FD4PIHNjEuNu0To4FjOQoW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mrlBx/btq12wqi0UV/vEm5pfWULhXmKnlWhfFZ00/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/mrlBx/btq12wqi0UV/vEm5pfWULhXmKnlWhfFZ00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mrlBx/btq12wqi0UV/vEm5pfWULhXmKnlWhfFZ00/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmrlBx%2Fbtq12wqi0UV%2FvEm5pfWULhXmKnlWhfFZ00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YnFLp/btq16RAcaih/8DC514xtZXAfCat595QyUK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/YnFLp/btq16RAcaih/8DC514xtZXAfCat595QyUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YnFLp/btq16RAcaih/8DC514xtZXAfCat595QyUK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYnFLp%2Fbtq16RAcaih%2F8DC514xtZXAfCat595QyUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QIYvM/btq1ZGAD0FF/YjaMoq8X6ksi2NssWuiz21/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/QIYvM/btq1ZGAD0FF/YjaMoq8X6ksi2NssWuiz21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QIYvM/btq1ZGAD0FF/YjaMoq8X6ksi2NssWuiz21/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQIYvM%2Fbtq1ZGAD0FF%2FYjaMoq8X6ksi2NssWuiz21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEy99E/btq127KIp40/xg17wZkHdloFPrCqEVGaxK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cEy99E/btq127KIp40/xg17wZkHdloFPrCqEVGaxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEy99E/btq127KIp40/xg17wZkHdloFPrCqEVGaxK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEy99E%2Fbtq127KIp40%2Fxg17wZkHdloFPrCqEVGaxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/9LX4F/btq16s8v3gb/GI5t74zXytHyak1meycTQ1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/C7SOV/btq10LBRPrY/bro8jOQ00ckwAUSQQfngI0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bsLjz0/btq1ZFPkABm/7nlIld1DlkSX9KYbzOiHB0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/wGiBE/btq10L2WVPM/vwkgwmXEClgNZaKGCvkiZ0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/yBmY6/btq10Mgr8UB/90McTNPCTxFZCiFuDkmH5k/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/uV54m/btq1ZGtVAU5/ZBsPkFxMpyx3fAyc9N0HB1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/0HcV2/btq11MfTbMK/7yhKnq3KjXBuOB7P0s9xXK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/c4BigX/btq13AeTAab/mOdtuwxjw6IzOmskaSS711/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cisDqR/btq11M1eop0/VzZHS4kG9TRX6uR8efmj21/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/tNLPi/btq128plXoo/Qn0t8Up3XQnkDf3Fke1x6k/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bA4Snp/btq11z13aq1/Nl7pYKiLnEcJtkySECMYgK/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9LX4F/btq16s8v3gb/GI5t74zXytHyak1meycTQ1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/9LX4F/btq16s8v3gb/GI5t74zXytHyak1meycTQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9LX4F/btq16s8v3gb/GI5t74zXytHyak1meycTQ1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9LX4F%2Fbtq16s8v3gb%2FGI5t74zXytHyak1meycTQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C7SOV/btq10LBRPrY/bro8jOQ00ckwAUSQQfngI0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/C7SOV/btq10LBRPrY/bro8jOQ00ckwAUSQQfngI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C7SOV/btq10LBRPrY/bro8jOQ00ckwAUSQQfngI0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC7SOV%2Fbtq10LBRPrY%2Fbro8jOQ00ckwAUSQQfngI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsLjz0/btq1ZFPkABm/7nlIld1DlkSX9KYbzOiHB0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bsLjz0/btq1ZFPkABm/7nlIld1DlkSX9KYbzOiHB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsLjz0/btq1ZFPkABm/7nlIld1DlkSX9KYbzOiHB0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsLjz0%2Fbtq1ZFPkABm%2F7nlIld1DlkSX9KYbzOiHB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wGiBE/btq10L2WVPM/vwkgwmXEClgNZaKGCvkiZ0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/wGiBE/btq10L2WVPM/vwkgwmXEClgNZaKGCvkiZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wGiBE/btq10L2WVPM/vwkgwmXEClgNZaKGCvkiZ0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwGiBE%2Fbtq10L2WVPM%2FvwkgwmXEClgNZaKGCvkiZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yBmY6/btq10Mgr8UB/90McTNPCTxFZCiFuDkmH5k/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/yBmY6/btq10Mgr8UB/90McTNPCTxFZCiFuDkmH5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yBmY6/btq10Mgr8UB/90McTNPCTxFZCiFuDkmH5k/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyBmY6%2Fbtq10Mgr8UB%2F90McTNPCTxFZCiFuDkmH5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uV54m/btq1ZGtVAU5/ZBsPkFxMpyx3fAyc9N0HB1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/uV54m/btq1ZGtVAU5/ZBsPkFxMpyx3fAyc9N0HB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uV54m/btq1ZGtVAU5/ZBsPkFxMpyx3fAyc9N0HB1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuV54m%2Fbtq1ZGtVAU5%2FZBsPkFxMpyx3fAyc9N0HB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0HcV2/btq11MfTbMK/7yhKnq3KjXBuOB7P0s9xXK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/0HcV2/btq11MfTbMK/7yhKnq3KjXBuOB7P0s9xXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0HcV2/btq11MfTbMK/7yhKnq3KjXBuOB7P0s9xXK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0HcV2%2Fbtq11MfTbMK%2F7yhKnq3KjXBuOB7P0s9xXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4BigX/btq13AeTAab/mOdtuwxjw6IzOmskaSS711/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/c4BigX/btq13AeTAab/mOdtuwxjw6IzOmskaSS711/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4BigX/btq13AeTAab/mOdtuwxjw6IzOmskaSS711/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4BigX%2Fbtq13AeTAab%2FmOdtuwxjw6IzOmskaSS711%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cisDqR/btq11M1eop0/VzZHS4kG9TRX6uR8efmj21/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cisDqR/btq11M1eop0/VzZHS4kG9TRX6uR8efmj21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cisDqR/btq11M1eop0/VzZHS4kG9TRX6uR8efmj21/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcisDqR%2Fbtq11M1eop0%2FVzZHS4kG9TRX6uR8efmj21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tNLPi/btq128plXoo/Qn0t8Up3XQnkDf3Fke1x6k/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/tNLPi/btq128plXoo/Qn0t8Up3XQnkDf3Fke1x6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tNLPi/btq128plXoo/Qn0t8Up3XQnkDf3Fke1x6k/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtNLPi%2Fbtq128plXoo%2FQn0t8Up3XQnkDf3Fke1x6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA4Snp/btq11z13aq1/Nl7pYKiLnEcJtkySECMYgK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bA4Snp/btq11z13aq1/Nl7pYKiLnEcJtkySECMYgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA4Snp/btq11z13aq1/Nl7pYKiLnEcJtkySECMYgK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA4Snp%2Fbtq11z13aq1%2FNl7pYKiLnEcJtkySECMYgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;span data-index=&quot;8&quot;&gt;8&lt;/span&gt;&lt;span data-index=&quot;9&quot;&gt;9&lt;/span&gt;&lt;span data-index=&quot;10&quot;&gt;10&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Maven 설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;MyHelloBean.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617783022115&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex2.bean;

// Spring Container에 등록 할 Bean
// xml로 기입
// 패키지를 통째로 scan 하는 방법
// 자동으로 묶어주는 방법.. 등등
public class MyHelloBean {
	
	private String msg;

	public MyHelloBean() {
		System.out.println(&quot;MyHelloBean 생성자 호출!&quot;);
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
	
	public String message() {
		return msg + &quot; ^__________^&quot;;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;myHello.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617782988884&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;ex2.bean.MyHelloBean&quot;%&amp;gt;
&amp;lt;%@page import=&quot;org.springframework.context.support.GenericXmlApplicationContext&quot;%&amp;gt;
&amp;lt;%@page import=&quot;org.springframework.context.ApplicationContext&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%--
	spring 환경을 사용하면 기본적으로 모든 객체가 싱글톤으로 관리가 된다.
	(싱글톤 레지스트리에 등록)
	스프링의 xml로 관리하는 방법
	- xml에 관리 될 bean 객체를 등록하고
	   해당 xml을 인자로 등록해서 스프링 컨테이너를 생성하면 자동으로 객체가 싱글톤으로 생성된다.
 --%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;myHello.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%
	// Spring Container를 생성한다.
	ApplicationContext ctx = new 
		GenericXmlApplicationContext(&quot;ex2/bean/myhello.xml&quot;);
	// 원하는 bean의 주소를 얻어오기
	MyHelloBean ref = ctx.getBean(&quot;mybean&quot;, MyHelloBean.class);
	MyHelloBean ref2 = ctx.getBean(&quot;mybean&quot;, MyHelloBean.class);
	
%&amp;gt; &amp;lt;%=ref.message() %&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%= ref == ref2 %&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%= ref %&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%= ref2 %&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brBTTu/btq1ZF9EfXG/Xx4ksXgCLjmbAzOrwSULY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brBTTu/btq1ZF9EfXG/Xx4ksXgCLjmbAzOrwSULY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brBTTu/btq1ZF9EfXG/Xx4ksXgCLjmbAzOrwSULY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrBTTu%2Fbtq1ZF9EfXG%2FXx4ksXgCLjmbAzOrwSULY1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/46</guid>
      <comments>https://sw-diary21.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 7 Apr 2021 17:12:48 +0900</pubDate>
    </item>
    <item>
      <title>[0406][JSP] MyBatis 구조 이해</title>
      <link>https://sw-diary21.tistory.com/45</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;mybatis 아키텍쳐.png&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;427&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxvLAE/btq1WhOEJ5S/KmMVluU03Scn3KhoE4OwU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxvLAE/btq1WhOEJ5S/KmMVluU03Scn3KhoE4OwU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxvLAE/btq1WhOEJ5S/KmMVluU03Scn3KhoE4OwU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxvLAE%2Fbtq1WhOEJ5S%2FKmMVluU03Scn3KhoE4OwU1%2Fimg.png&quot; data-filename=&quot;mybatis 아키텍쳐.png&quot; data-origin-width=&quot;741&quot; data-origin-height=&quot;427&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- MyBatis 제작 순서&lt;/p&gt;
&lt;p&gt;1) &lt;a href=&quot;http://www.mybatis.org에&quot;&gt;www.mybatis.org&lt;/a&gt; 에 가서 라이브러리를 다운 받고 압축을 해제하고 프로젝트 안에 저장한다.&lt;/p&gt;
&lt;p&gt;2) 테이블을 만들고 vo 클래스를 만든다.&lt;/p&gt;
&lt;p&gt;3) context.xml을 만든다.&lt;/p&gt;
&lt;p&gt;4) MyBatis의 핵심 환경설정인 config.xml을 문서를 보면서 제작한다.&lt;/p&gt;
&lt;p&gt;5) config.xml을 작성시에 configuration에 맞는 DTD를 작성후 환경설정&lt;/p&gt;
&lt;pre id=&quot;code_1617677523887&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE configuration
  PUBLIC &quot;-//mybatis.org//DTD Config 3.0//EN&quot;
  &quot;http://mybatis.org/dtd/mybatis-3-config.dtd&quot;&amp;gt;
  &amp;lt;configuration&amp;gt;
	&amp;lt;environments default=&quot;&quot;&amp;gt;
		&amp;lt;environment id=&quot;&quot;&amp;gt;
			&amp;lt;transactionManager type=&quot;JDBC&quot; /&amp;gt;
			&amp;lt;dataSource type=&quot;JNDI&quot;&amp;gt;
				&amp;lt;property name=&quot;data_source&quot;
					value=&quot;java:comp/env/jdbc/myora&quot; /&amp;gt;
			&amp;lt;/dataSource&amp;gt;
		&amp;lt;/environment&amp;gt;
	&amp;lt;/environments&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;6) mapper.xml을 작성해서 SQL문 문법에 맞게 입력한다.&lt;/p&gt;
&lt;p&gt;이때 mapper에 해당하는 DTD를 작성한다.&lt;/p&gt;
&lt;pre id=&quot;code_1617678984141&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE mapper
  PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
  &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&amp;gt;
&amp;lt;mapper namespace=&quot;board&quot;&amp;gt;
&amp;lt;insert id=&quot;add&quot; parameterType=&quot;vo.BoardVO&quot;&amp;gt;
insert into board values(board_seq.nextVal, #{title}, #{writer}, #{content}, #{pwd}, 0, sysdate)
&amp;lt;/insert&amp;gt;
&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;7) config.xml에서 mapper를 연결한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;8) config.xml을 관리하는 SqlSessionFactory 객체를 생성하는 클래스를 작성한다.&lt;/p&gt;
&lt;pre id=&quot;code_1617706166108&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class FactoryService {
	private static SqlSessionFactory factory;
	
	static {
		try {
			Reader reader = Resources.getResourceAsReader(&quot;config/config.xml&quot;);
			// SqlSessionFactory를 생성해서 줘야 되기 때문에 Reader로 읽어온
			// 환경설정파일을 기준으로 SqlSessionFactoryBuilder()를 사용해서 생성한 것.
			factory = new SqlSessionFactoryBuilder().build(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 클라이언트가 SqlSessionFactory를 받아서 SqlSession이란
	// 클래스로 사용 할 수 있도록 SqlSessionFactory를 반환하는 메서드를 정의
	public static SqlSessionFactory getFactory() {
		return factory;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;9) Dao에 SqlSessionFactory로부터 Sqlsession을 얻어서 해당 작업을 완료한다.&lt;/p&gt;
&lt;p&gt;Sqlsession 생성 한 후 insert, delete, update, selectList:&amp;lt;List&amp;gt;, selectone:Object&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ex) Dao에서 ss.insert(&quot;board.add&quot;. vo); 라면 ===&amp;gt; boardMapper.xml 안에&lt;/p&gt;
&lt;p&gt;&amp;lt;mapper namespace=&quot;board&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;insert=&quot;add&quot; parameterType=&quot;vo.BoardVO&quot;&amp;gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;게시판 기능 mybatis로 만들기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) boardMapper.xml&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617706323509&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE mapper
  PUBLIC &quot;-//mybatis.org//DTD Mapper 3.0//EN&quot;
  &quot;http://mybatis.org/dtd/mybatis-3-mapper.dtd&quot;&amp;gt;
&amp;lt;mapper namespace=&quot;board&quot;&amp;gt;
&amp;lt;insert id=&quot;add&quot; parameterType=&quot;vo.BoardVO&quot;&amp;gt;
	insert into board values(board_seq.nextVal, #{title}, #{writer}, #{content}, #{pwd}, 0, sysdate)
&amp;lt;/insert&amp;gt;
&amp;lt;select id=&quot;list&quot; resultType=&quot;vo.BoardVO&quot;&amp;gt;
	select no, title, writer, hit, regdate from board order by 1 desc
&amp;lt;/select&amp;gt;
&amp;lt;update id=&quot;hit&quot; parameterType=&quot;int&quot;&amp;gt;
	update board set hit = hit + 1 where no = #{no}
&amp;lt;/update&amp;gt;
&amp;lt;select id=&quot;detail&quot; parameterType=&quot;int&quot; resultType=&quot;vo.BoardVO&quot;&amp;gt;
	select no, title, writer, content, pwd, hit, regdate from board where no = #{no}
&amp;lt;/select&amp;gt;
&amp;lt;select id=&quot;pwdChk&quot; parameterType=&quot;vo.BoardVO&quot; resultType=&quot;int&quot;&amp;gt;
	select count(*) as cnt from board where no = #{no} and pwd = #{pwd}
&amp;lt;/select&amp;gt;
&amp;lt;delete id=&quot;del&quot; parameterType=&quot;int&quot;&amp;gt;
	delete board where no = #{no}
&amp;lt;/delete&amp;gt;
&amp;lt;update id=&quot;update&quot; parameterType=&quot;vo.BoardVO&quot;&amp;gt;
	update board set title=#{title}, content=#{content} where no=#{no}
&amp;lt;/update&amp;gt;
&amp;lt;!-- 
	Dao에서 selectList()호출하면 무조건 List 저장해서 반환한다.
	type=&quot;hashmap&quot; List의 제네릭 자료형은 hashmap =&amp;gt; List&amp;lt;Map&amp;lt;String,String&amp;gt;&amp;gt;
	type=&quot;vo&quot; List의 제네릭 자료형은 vo =&amp;gt; List&amp;lt;VO&amp;gt;
 --&amp;gt;

&amp;lt;resultMap type=&quot;hashmap&quot; id=&quot;myMap&quot;&amp;gt;
	&amp;lt;id column=&quot;no&quot; property=&quot;no&quot;/&amp;gt;
	&amp;lt;result column=&quot;title&quot; property=&quot;title&quot;/&amp;gt;
&amp;lt;/resultMap&amp;gt;
&amp;lt;select id=&quot;list2&quot; resultMap=&quot;myMap&quot;&amp;gt;
	select no, title, writer, hit, regdate from board order by 1 desc
&amp;lt;/select&amp;gt;
&amp;lt;/mapper&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) config.xml&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617706375076&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  &amp;lt;mappers&amp;gt;
	&amp;lt;mapper resource=&quot;mapper/boardMapper.xml&quot;/&amp;gt;
  &amp;lt;/mappers&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;b&gt;3) BoardDao&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617706415389&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import service.FactoryService;
import vo.BoardVO;

public class BoardDao {
	private static BoardDao dao;

	public BoardDao() {
	}

	public synchronized static BoardDao getDao() {
		if (dao == null)
			dao = new BoardDao();
		return dao;
	}
	
	// 게시물 추가
	public void insert(BoardVO vo) {
		SqlSession ss = FactoryService.getFactory().openSession(true);
		// 호출
		ss.insert(&quot;board.add&quot;, vo);
		// 반드시 commit 해야한다.
		// ss.commit(); openSession(true); 동일
		ss.close(); // 세션 사용후 반드시 닫아줘야한다.
	}
	
	// 게시물 조회 
	public List&amp;lt;BoardVO&amp;gt; list(){
		SqlSession ss = FactoryService.getFactory().openSession();
		// mapper 인 member.xml에 네임스페이스와 id를 호출
		List&amp;lt;BoardVO&amp;gt; list = ss.selectList(&quot;board.list&quot;);
		ss.close();
		return list;
	}

	// 게시물 조회 
	public List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt; list2(){
		SqlSession ss = FactoryService.getFactory().openSession();
		// mapper 인 member.xml에 네임스페이스와 id를 호출
		List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt; list = ss.selectList(&quot;board.list2&quot;);
		ss.close();
		return list;
	}
	
	//조회수 증가 : update board set hit = hit + 1 where no=?
	public void hit(int no){
		SqlSession ss = FactoryService.getFactory().openSession(true);
		ss.update(&quot;board.hit&quot;, no);
		ss.close();
	}

	//상세정보 조회
	public BoardVO info(int no){ 
		SqlSession ss = FactoryService.getFactory().openSession();
		BoardVO vo = ss.selectOne(&quot;board.detail&quot;, no);
		ss.close();
		return vo;
	}
	
	// 게시물 수정
	public void update(BoardVO vo){
		SqlSession ss = FactoryService.getFactory().openSession(true);
		ss.update(&quot;board.update&quot;, vo);
		ss.close();
	}

	//게시물 삭제
	public void delete(int no){
		SqlSession ss = FactoryService.getFactory().openSession(true);
		ss.delete(&quot;board.del&quot;, no);
		ss.close();
	}
	
	// 패스워드 확인
	public int pwdCheck(BoardVO vo){
		SqlSession ss = FactoryService.getFactory().openSession();
		int cnt = ss.selectOne(&quot;board.pwdChk&quot;, vo);
		ss.close();
		
		return cnt;
	}

}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/45</guid>
      <comments>https://sw-diary21.tistory.com/45#entry45comment</comments>
      <pubDate>Tue, 6 Apr 2021 19:54:10 +0900</pubDate>
    </item>
    <item>
      <title>[0401][JSP] 로그인 세션 , 파일 업로드 구현 하기</title>
      <link>https://sw-diary21.tistory.com/44</link>
      <description>&lt;p&gt;&lt;b&gt;로그인 세션 , 파일 업로드 구현 하기&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-94e870e8-9065-4807-9a8f-8c53dcf28d8e&quot;&gt;&lt;b&gt;​&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-486f7948-b648-4f97-97c0-82c05ff8e52c&quot;&gt;&lt;b&gt;HttpSession 객체&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5384c9ee-503d-474f-b1d7-e1abbd1de179&quot;&gt;&lt;b&gt;■ HTTP 프로토콜은 무상태(stateless) 연결 프로토콜이다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-91586d14-6614-4a36-9701-56444d49de86&quot;&gt;&lt;b&gt;■ 클라이언트가 서버와 연결을 맺고, 요청을 보낸 뒤, 서버가 요청을 처리한 후&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d94b1153-88a5-437b-8231-49ebe9cd2d5d&quot;&gt;&lt;b&gt;응답을 보내면 클라이언트와 서버 사이의 연결은 끊어진다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-371c2e85-27a4-4766-813a-377c088200c4&quot;&gt;&lt;b&gt;■ &lt;span style=&quot;color: #ee2323;&quot;&gt;서버에서 클라이언트의 정보를 유지&lt;/span&gt;하기 위하여 HttpSession 객체를 사용한다.&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d9f2dab3-7fa2-4fba-a26b-18efbfdf5cce&quot;&gt;&lt;b&gt;■ HttpSession의 동작 원리&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DSyHO/btq1xl4jtkU/WJKj6vQdOv1ousRPkK6I1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DSyHO/btq1xl4jtkU/WJKj6vQdOv1ousRPkK6I1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DSyHO/btq1xl4jtkU/WJKj6vQdOv1ousRPkK6I1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDSyHO%2Fbtq1xl4jtkU%2FWJKj6vQdOv1ousRPkK6I1K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;1) 클라이언트의 요청 접수&lt;/p&gt;
&lt;p&gt;2) 클라이언트의 정보를 저장 할 HttpSession 객체를 생성, 고유 id가 부여된다.&lt;/p&gt;
&lt;p&gt;3) HttpSession 객체 안에 클라이언트의 정보를 저장, key, value 저장.&lt;/p&gt;
&lt;p&gt;4) 고유한 id값을 응답에 넣어서 클라이언트에게 보낸다.&lt;/p&gt;
&lt;p&gt;5) 클라이언트는 다음 번 요청부터 고유한 id 값을 서버로 전송한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- 서버는 id에 해당하는 HttpSession 객체를 찾아서 요청을 처리한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;속성(Attribute)과 스코프(Scope)&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-073c6061-8f51-45c3-acf1-ab735e59768e&quot;&gt;■ 속성(Attribute)은 PageContext, HttpServletRequest, HttpSession, ServletContext&lt;/p&gt;
&lt;p id=&quot;SE-d8f98824-0796-4129-8bc1-0b5bcb8b0efb&quot;&gt;객체 중 하나에 설정해놓은(binding해놓은)객체를 말한다.&lt;/p&gt;
&lt;p id=&quot;SE-09aac974-329f-4dbc-b23f-bc682edf545d&quot;&gt;■ 속성은 이들 객체에 Map 인스턴스와 마찬가지로 이름/값의 쌍으로 저장되어 진다.&lt;/p&gt;
&lt;p id=&quot;SE-1187479d-4c8d-4813-bdd0-afab28fbd7b4&quot;&gt;■ 각각의 객체에 저장된 속성들은 서로 다른 생존범위(Scope)를 가진다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H5aSZ/btq1BxXg2MF/6LVIDXU4LGxvrqfu6jxZYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H5aSZ/btq1BxXg2MF/6LVIDXU4LGxvrqfu6jxZYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H5aSZ/btq1BxXg2MF/6LVIDXU4LGxvrqfu6jxZYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH5aSZ%2Fbtq1BxXg2MF%2F6LVIDXU4LGxvrqfu6jxZYK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpu9ST/btq1BxpsaGH/M3uk5hj63lvxZ6YIkzSP2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpu9ST/btq1BxpsaGH/M3uk5hj63lvxZ6YIkzSP2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpu9ST/btq1BxpsaGH/M3uk5hj63lvxZ6YIkzSP2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpu9ST%2Fbtq1BxpsaGH%2FM3uk5hj63lvxZ6YIkzSP2K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brASSy/btq1AGfRQII/LROBOcA8KYWSL2XKbldjfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brASSy/btq1AGfRQII/LROBOcA8KYWSL2XKbldjfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brASSy/btq1AGfRQII/LROBOcA8KYWSL2XKbldjfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrASSy%2Fbtq1AGfRQII%2FLROBOcA8KYWSL2XKbldjfK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;ScopeDemo&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1617261450135&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// 속성(Attribute)와 스코프(scope) 마무리
	pageContext.setAttribute(&quot;pageAtt&quot;, &quot;김길동&quot;);
	request.setAttribute(&quot;reqAtt&quot;, &quot;010-1233-5677&quot;);
	session.setAttribute(&quot;sesAtt&quot;, &quot;gildong@naver.com&quot;);
	application.setAttribute(&quot;appAtt&quot;, &quot;kosmo&quot;);
	// 직접 해보기 second.jsp로 forward 시켜보기
	System.out.println(pageContext.getAttribute(&quot;pageAtt&quot;));
/*  	RequestDispatcher rd = request.getRequestDispatcher(&quot;second.jsp&quot;);
	rd.forward(request, response);  */
	// 리다이렉트로 보내기
	//response.sendRedirect(&quot;second.jsp&quot;);
%&amp;gt;
&amp;lt;%-- &amp;lt;jsp:forward page=&quot;second.jsp&quot;/&amp;gt; JSP에서 포워드(forward) 보내기 --%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;first.jsp&amp;lt;/title&amp;gt;
&amp;lt;%-- &amp;lt;script&amp;gt;
	location = &quot;second.jsp&quot;;	// 리다이렉트
&amp;lt;/script&amp;gt; --%&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;h2&amp;gt;JSP&amp;lt;/h2&amp;gt;
	&amp;lt;a href=&quot;second.jsp&quot;&amp;gt;이동&amp;lt;/a&amp;gt; &amp;lt;%-- 사용자에게 입력 받아서 이동 --%&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt;이름 : &amp;lt;%=pageContext.getAttribute(&quot;pageAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;전번 : &amp;lt;%=request.getAttribute(&quot;reqAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;메일 : &amp;lt;%=session.getAttribute(&quot;sesAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;회사 : &amp;lt;%=application.getAttribute(&quot;appAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
	&amp;lt;h2&amp;gt;EL&amp;lt;/h2&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt;이름 : ${pageAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;전번 : ${reqAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;메일 : ${sesAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;회사 : ${appAtt}&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1617261462615&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;second.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Second.jsp&amp;lt;/h1&amp;gt;
	&amp;lt;h2&amp;gt;JSP&amp;lt;/h2&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt;이름 : &amp;lt;%=pageContext.getAttribute(&quot;pageAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;전번 : &amp;lt;%=request.getAttribute(&quot;reqAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;메일 : &amp;lt;%=session.getAttribute(&quot;sesAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;회사 : &amp;lt;%=application.getAttribute(&quot;appAtt&quot;) %&amp;gt;&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
	&amp;lt;h2&amp;gt;EL&amp;lt;/h2&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt;이름 : ${pageScope.pageAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;전번 : ${requestScope.reqAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;메일 : ${sessionScope.sesAtt}&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt;회사 : ${applicationScope.appAtt}&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;멤버전용 게시판 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;SQL 문&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617263611489&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE member_board
(
  board_num 		NUMBER 		NOT NULL,
  board_id 		VARCHAR2(50),
  board_subject 		VARCHAR2(100),
  board_content 		VARCHAR2(2000), -- clob : 텍스트 저장 (4만자 가량)
  board_file 		VARCHAR2(100), -- blob : 파일 자체를 저장 (주로 클라에서)
  Board_re_ref 		NUMBER,
  Board_re_lev 		NUMBER,
  Board_re_seq 		NUMBER,
  Board_count 		NUMBER,
  Board_date		DATE,
  BOARD_PARENT     	NUMBER,              
  CONSTRAINT PK_Member_Board PRIMARY KEY(board_num),
  constraint pk_board_id foreign key(board_id)
 REFERENCES MEMBER(id)
);

create sequence member_board_seq
increment by 1
start with 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;VO 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617263709128&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package vo;

public class MemberBoardVO {
	private int board_num;			// 글 번호
	private String board_id;		// 글 작성자
	private String board_subject;	// 글 제목
	private String board_content;	// 글 내용
	private String board_file;		// 첨부파일 이름
	private int board_re_ref;		// 글 그룹번호
	private int board_re_lev;		// 답변글 깊이
	private int board_re_seq;		// 답변글 순서
	private int board_count;		// 글 조회수
	private String board_date;		// 글 작성일
	private int board_parent;		// 부모글 번호
	
	public int getBoard_num() {
		return board_num;
	}
	public void setBoard_num(int board_num) {
		this.board_num = board_num;
	}... // 아래에 모든 멤버 변수의 getter, setter 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Dao 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1617265270626&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class MyBoardDao {
	private static MyBoardDao dao;

	public MyBoardDao() {}

	public static synchronized MyBoardDao getDao() {
		if (dao == null) dao = new MyBoardDao();
		return dao;
	}
	
	public void boardInsert(MemberBoardVO vo) {
		StringBuffer sb = new StringBuffer();
		sb.append(&quot;insert into member_board (board_num, board_id,&quot;);
		sb.append(&quot;board_subject, board_content, board_file, Board_date)&quot;);
		sb.append(&quot; values(member_board_seq.nextVal, ?, ?, ?, ?, sysdate)&quot;);
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sb.toString());
			pstmt.setString(1, vo.getBoard_id());
			pstmt.setString(2, vo.getBoard_subject());
			pstmt.setString(3, vo.getBoard_content());
			pstmt.setString(4, vo.getBoard_file());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			ClosedObj.autoCloseObj(con, pstmt);
		}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/44</guid>
      <comments>https://sw-diary21.tistory.com/44#entry44comment</comments>
      <pubDate>Thu, 1 Apr 2021 17:22:41 +0900</pubDate>
    </item>
    <item>
      <title>[0326][Web-JSP] Model 1 방식으로 만드는 기본 CRUD</title>
      <link>https://sw-diary21.tistory.com/43</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;게시판 기능 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;board.jpg&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;752&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdbcwH/btq09zHOfky/yecqLg9Fq4LJLO87mqYLo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdbcwH/btq09zHOfky/yecqLg9Fq4LJLO87mqYLo0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdbcwH/btq09zHOfky/yecqLg9Fq4LJLO87mqYLo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdbcwH%2Fbtq09zHOfky%2FyecqLg9Fq4LJLO87mqYLo0%2Fimg.jpg&quot; data-filename=&quot;board.jpg&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;752&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. index.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616730549791&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;HOME&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;css/main.css&quot;&amp;gt;
&amp;lt;style&amp;gt;
#content {
	width: 100%;
}

#content table {
	width: 350px;
	margin: auto
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;div id=&quot;wrap&quot;&amp;gt;
		&amp;lt;div id=&quot;navigation&quot;&amp;gt;
			&amp;lt;ul&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;로그인&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;회원가입&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;board/list.jsp&quot;&amp;gt;게시판&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;갤러리&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
			&amp;lt;/ul&amp;gt;
		&amp;lt;/div&amp;gt;
		&amp;lt;div id=&quot;content&quot;&amp;gt;&amp;lt;/div&amp;gt;
	&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. main.css&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616730572174&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@charset &quot;EUC-KR&quot;;
	/* css에서의 주석 
	E : element 요소
	id : id 속성 = 반드시 한 페이지에서는 유일해야한다. (unique) #아이디
	class : class 속성, 한 페이지에서 중복 가능, 하나 이상을 설정 할 수 있다. .클래스
	[E, #id, .class, 자식 &amp;gt; , 부모 후손, 이웃요소] { css문법 -&amp;gt; 예) color:&quot;red&quot;; size:200px; } 
	*/
#wrap {
	width: 800px;
	margin: auto; /* 레이아웃이 중앙으로 배치가 된다 */
}

#navigation {
	height: 40px;
	background: #0080ff;
	color: #ffffff;
	font-weight: bold;
	clear: borth; /* float을 취소한다(가로정렬) */
}

#navigation ul {
	padding: 0;
	margin: 0;
}

#navigation ul li {
	list-style: none;
	float: left;
	margin-left: 20px;
}
/* link style */
#navigation ul li a {
	text-decoration: none; /* 링크선 해제 */
	color: #ffffff;
	background: #ff3333;
	padding: 5px;
	margin: 0;
}

#navigation ul li a:hover { /* 마우스를 올렸을 때 */
	background: #6666;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. head.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751334065&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;자유게시판&amp;lt;/title&amp;gt;
&amp;lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../css/main.css&quot;&amp;gt;
&amp;lt;style&amp;gt;
#content {
	width: 100%; margin: auto;
}

#content table {
	width: 350px;
	margin: auto
}

#content table, td, th {
	border: 1px solid black;
}

#content table {
	  width: 100%;
	  border-collapse: collapse;
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;div id=&quot;wrap&quot;&amp;gt;
		&amp;lt;div id=&quot;navigation&quot;&amp;gt;
			&amp;lt;ul&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;../index.jsp&quot;&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;로그인&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;회원가입&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;../board/list.jsp&quot;&amp;gt;게시판&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;갤러리&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
			&amp;lt;/ul&amp;gt;
		&amp;lt;/div&amp;gt;
		&amp;lt;div id=&quot;bgx&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. list.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751377107&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@page import=&quot;java.util.ArrayList&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	ArrayList&amp;lt;BoardVO&amp;gt; list = BoardDao.getDao().list();
%&amp;gt;
&amp;lt;%@include file=&quot;../head.jsp&quot; %&amp;gt;
		&amp;lt;div id=&quot;content&quot; style=&quot;text-align: center;&quot;&amp;gt;
			&amp;lt;table&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;th colspan=&quot;5&quot;&amp;gt;게시물 목록&amp;lt;/th&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;번호&amp;lt;/td&amp;gt;
					&amp;lt;td width=&quot;352&quot;&amp;gt;제목&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;등록일&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;조회수&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;!-- 데이터 반복 시작 --&amp;gt;
				&amp;lt;%
				for (BoardVO e : list) {
				%&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;td&amp;gt;&amp;lt;%=e.getNo()%&amp;gt;&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;&amp;lt;a href=&quot;hit.jsp?no=&amp;lt;%=e.getNo()%&amp;gt;&quot;&amp;gt; &amp;lt;%=e.getTitle()%&amp;gt;
					&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;&amp;lt;%=e.getWriter()%&amp;gt;&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;&amp;lt;%=e.getRegdate()%&amp;gt;&amp;lt;/td&amp;gt;
					&amp;lt;td&amp;gt;&amp;lt;%=e.getHit()%&amp;gt;&amp;lt;/td&amp;gt;
				&amp;lt;/tr&amp;gt;
				&amp;lt;%
				}
				%&amp;gt;
				&amp;lt;!-- 데이터 반복 끝 --&amp;gt;
				&amp;lt;tr&amp;gt;
					&amp;lt;th colspan=&quot;5&quot;&amp;gt;&amp;lt;input type=&quot;button&quot; value=&quot;새 글쓰기&quot; 
                    onclick=&quot;location.href='write.jsp'&quot;&amp;gt;
					&amp;lt;/th&amp;gt;
				&amp;lt;/tr&amp;gt;
			&amp;lt;/table&amp;gt;
		&amp;lt;/div&amp;gt; &amp;lt;%-- content 종료 --%&amp;gt;
	&amp;lt;/div&amp;gt;	&amp;lt;%-- wrap 종료 --%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5. info.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751415150&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
// list.jsp에서 선택한 링크를 통해서 get방식으로 전송 되어온 파라미터 값
// no
int no = Integer.parseInt(request.getParameter(&quot;no&quot;));
BoardVO vo = BoardDao.getDao().info(no);
%&amp;gt;
&amp;lt;%@include file=&quot;../head.jsp&quot;%&amp;gt;
&amp;lt;div id=&quot;content&quot;&amp;gt;
		&amp;lt;table border=&quot;1&quot;&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;게시물 상세보기&amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;번호&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;no&quot; id=&quot;no&quot; value=&quot;&amp;lt;%=no%&amp;gt;&quot;
					readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;writer&quot; id=&quot;writer&quot;
					value=&quot;&amp;lt;%=vo.getWriter()%&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot; id=&quot;title&quot;
					value=&quot;&amp;lt;%=vo.getTitle()%&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;내용&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;textarea style=&quot;width: 90%;&quot; name=&quot;content&quot; id=&quot;content&quot; 
                readonly=&quot;readonly&quot;&amp;gt;&amp;lt;%=vo.getContent()%&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;
				&amp;lt;%-- onclick 속성 : 해당 Element를 클릭 했을 때
					 자바 스크립트를 실행 할 수 있는 속성
					 &quot; location = '이동할 경로' &quot; 
				--%&amp;gt;
				&amp;lt;input type=&quot;button&quot; value=&quot;수정&quot; 
				onclick=&quot;location='pwdCheckForm.jsp?keyv=up&amp;amp;no=&amp;lt;%=no%&amp;gt;'&quot;&amp;gt; &amp;amp;nbsp;
				&amp;lt;input type=&quot;button&quot; value=&quot;삭제&quot;
				onclick=&quot;location='pwdCheckForm.jsp?keyv=del&amp;amp;no=&amp;lt;%=no%&amp;gt;'&quot;&amp;gt; &amp;amp;nbsp;
				&amp;lt;input type=&quot;button&quot; value=&quot;리스트&quot;
				onclick=&quot;location='list.jsp'&quot;&amp;gt; &amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
		&amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- content 종료 --%&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- wrap 종료 --%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6. write.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751453854&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%@include file=&quot;../head.jsp&quot;%&amp;gt;
&amp;lt;div id=&quot;content&quot;&amp;gt;
	&amp;lt;form method=&quot;post&quot; action=&quot;insert.jsp&quot;&amp;gt;
		&amp;lt;table border=&quot;1&quot;&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;게시물 작성하기&amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot; id=&quot;title&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;writer&quot; id=&quot;writer&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;내용&amp;lt;/td&amp;gt;
				&amp;lt;td &amp;gt;&amp;lt;textarea style=&quot;width: 90%;&quot; name=&quot;content&quot; 
                id=&quot;content&quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;비밀번호&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;password&quot; name=&quot;pwd&quot; id=&quot;pwd&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;&amp;lt;input type=&quot;submit&quot; value=&quot;등록&quot;&amp;gt; &amp;lt;input
					type=&quot;reset&quot; value=&quot;취소&quot;&amp;gt;&amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
		&amp;lt;/table&amp;gt;
	&amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- content 종료 --%&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- wrap 종료 --%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;7. hit.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751491481&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// 리스트에서 전송 되어 온 파라미터 no를 받아서
	// Dao에 전달해서 조회수를 업데이트 시킨다.
	int no = Integer.parseInt(request.getParameter(&quot;no&quot;));
	BoardDao.getDao().hit(no);
	response.sendRedirect(&quot;info.jsp?no=&quot;+no);
%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8. pwdCheckForm.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751520960&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%@include file=&quot;../head.jsp&quot;%&amp;gt;
&amp;lt;%--
	&amp;lt;link rel= .. =&amp;gt; 외부 스타일, 공통적인 스타일 : 우선순위 3
	&amp;lt;style&amp;gt;&amp;lt;/style&amp;gt; =&amp;gt; 내부 스타일 : 우선순위 2
	&amp;lt;element style=&quot;&quot;&amp;gt; =&amp;gt; 인라인(inline) 스타일 : 우선순위 1

 --%&amp;gt;
 &amp;lt;%
	request.setCharacterEncoding(&quot;euc-kr&quot;);
 	String no = request.getParameter(&quot;no&quot;);
 	String keyv = request.getParameter(&quot;keyv&quot;);
 %&amp;gt;
&amp;lt;div id=&quot;content&quot;&amp;gt;
&amp;lt;div style=&quot;height: 80px;&quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;
&amp;lt;form method=&quot;post&quot; action=&quot;pwdCheck.jsp&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;no&quot; id=&quot;no&quot; value=&quot;&amp;lt;%=no%&amp;gt;&quot;&amp;gt;
&amp;lt;input type=&quot;hidden&quot; name=&quot;keyv&quot; id=&quot;keyv&quot; value=&quot;&amp;lt;%=keyv%&amp;gt;&quot;&amp;gt;
&amp;lt;table border=&quot;1&quot; style=&quot;width: 70%; margin: auto;&quot;&amp;gt;
	&amp;lt;tr&amp;gt;
		&amp;lt;th colspan=&quot;2&quot;&amp;gt;비밀번호 입력&amp;lt;/th&amp;gt;
	&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;
		&amp;lt;td&amp;gt;비밀번호&amp;lt;/td&amp;gt;
		&amp;lt;td&amp;gt;&amp;lt;input type=&quot;password&quot; name=&quot;pwd&quot; id=&quot;pwd&quot;&amp;gt;&amp;lt;/td&amp;gt;
	&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;
		&amp;lt;th colspan=&quot;2&quot;&amp;gt;
		&amp;lt;input type=&quot;submit&quot; value=&quot;전송&quot;&amp;gt;
		&amp;lt;/th&amp;gt;
	&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt; &amp;lt;%-- content 종료 --%&amp;gt;
&amp;lt;/div&amp;gt; &amp;lt;%-- wrap 종료 --%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;9. pwdCheck.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751549348&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// To do : 비밀번호를 받아와서 dao에 전달하고 
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	if (request.getMethod().equals(&quot;POST&quot;)) {
		BoardDao dao = BoardDao.getDao();
		BoardVO vo = new BoardVO();
		String keyv = request.getParameter(&quot;keyv&quot;);
		vo.setNo(Integer.parseInt(request.getParameter(&quot;no&quot;)));
		vo.setPwd(request.getParameter(&quot;pwd&quot;));
		int res = dao.pwdCheck(vo);
		if (res &amp;gt; 0) {
			if (keyv.equals(&quot;up&quot;)) {
				System.out.println(&quot;글수정&quot;);
				response.sendRedirect(&quot;modify.jsp?no=&quot;+vo.getNo());
			} else if (keyv.equals(&quot;del&quot;)){
				System.out.println(&quot;글삭제&quot;);
				dao.delete(vo.getNo());
				%&amp;gt;
				&amp;lt;script type=&quot;text/javascript&quot;&amp;gt; alert('게시글이 삭제되었습니다!');
					location.href=&quot;list.jsp&quot;;
				&amp;lt;/script&amp;gt;
				&amp;lt;%
			}
		} else {
			%&amp;gt;
			&amp;lt;script type=&quot;text/javascript&quot;&amp;gt; alert('비밀번호가 틀렸습니다!');
				location.href=&quot;info.jsp?no=&amp;lt;%=vo.getNo()%&amp;gt;&quot;;
			&amp;lt;/script&amp;gt;
			&amp;lt;%
		}
		System.out.println(&quot;no? : &quot; + vo.getNo());
		System.out.println(&quot;pwd? : &quot; + vo.getPwd());
		System.out.println(&quot;keyv? : &quot; + keyv);
	} else {
%&amp;gt;
		&amp;lt;p style=&quot;color:red&quot;&amp;gt;잘못 된 접근입니다.&amp;lt;/p&amp;gt;
		&amp;lt;h2&amp;gt;당신의&amp;lt;%=request.getRemoteAddr() %&amp;gt; 아이피는 저장되었습니다.&amp;lt;/h2&amp;gt;
&amp;lt;%
	}
%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;10. modify.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751793741&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
	pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	int no = Integer.parseInt(request.getParameter(&quot;no&quot;));
	BoardVO vo = BoardDao.getDao().info(no);
	System.out.println(&quot;no1 : &quot; + vo.getNo());
	System.out.println(&quot;title1 : &quot; + vo.getTitle());
	System.out.println(&quot;content1 : &quot; + vo.getContent());
%&amp;gt;
&amp;lt;%@include file=&quot;../head.jsp&quot;%&amp;gt;
&amp;lt;form method=&quot;post&quot; action=&quot;update.jsp&quot;&amp;gt;
&amp;lt;div id=&quot;content&quot;&amp;gt;
		&amp;lt;table border=&quot;1&quot;&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;게시물 수정하기&amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;번호&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;no&quot; id=&quot;no&quot; value=&quot;&amp;lt;%=no%&amp;gt;&quot;
					readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;writer&quot; id=&quot;writer&quot;
					value=&quot;&amp;lt;%=vo.getWriter()%&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot; id=&quot;title&quot;
					value=&quot;&amp;lt;%=vo.getTitle()%&amp;gt;&quot; &amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;td&amp;gt;내용&amp;lt;/td&amp;gt;
				&amp;lt;td&amp;gt;&amp;lt;textarea style=&quot;width: 90%;&quot; name=&quot;content&quot; id=&quot;content&quot;&amp;gt;
                &amp;lt;%=vo.getContent()%&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;
			&amp;lt;/tr&amp;gt;
			&amp;lt;tr&amp;gt;
				&amp;lt;th colspan=&quot;2&quot;&amp;gt;
				&amp;lt;input type=&quot;submit&quot; value=&quot;게시글 수정&quot;&amp;gt;&amp;lt;/th&amp;gt;
			&amp;lt;/tr&amp;gt;
		&amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- content 종료 --%&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;%-- wrap 종료 --%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;11. update.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616751821784&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	BoardVO vo = new BoardVO();
	vo.setNo(Integer.parseInt(request.getParameter(&quot;no&quot;)));
	vo.setTitle(request.getParameter(&quot;title&quot;));
	vo.setContent(request.getParameter(&quot;content&quot;));
	System.out.println(&quot;no2 : &quot; + vo.getNo());
	System.out.println(&quot;title2 : &quot; + vo.getTitle());
	System.out.println(&quot;content2 : &quot; + vo.getContent());
	
	BoardDao.getDao().update(vo);
%&amp;gt;
	&amp;lt;script type=&quot;text/javascript&quot;&amp;gt; alert('게시글이 수정되었습니다!');
				location.href=&quot;info.jsp?no=&amp;lt;%=vo.getNo()%&amp;gt;&quot;;
	&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/43</guid>
      <comments>https://sw-diary21.tistory.com/43#entry43comment</comments>
      <pubDate>Fri, 26 Mar 2021 18:44:09 +0900</pubDate>
    </item>
    <item>
      <title>[0325][Web - JSP] Connection Pool, DAO, DTO, Model 1 의 개념과 실습</title>
      <link>https://sw-diary21.tistory.com/42</link>
      <description>&lt;p&gt;* Connection Pool, DAO, DTO, Model 1 (개발 방식) 의 개념과 실습&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Connection Pool&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-14be0d39-fc8f-46a1-8efd-72ffa257cc54&quot;&gt;■ JDBC 프로그램은 Connection 자원을 획득하는데 많은 시간이 소요된다.&lt;/p&gt;
&lt;p id=&quot;SE-81ced6ee-757c-4efa-adc7-b193b0aad822&quot;&gt;■ Connection Pool은 미리 DB와 연결을 유지하고 있는 Connection객체를 생성해서&lt;/p&gt;
&lt;p id=&quot;SE-1ff02138-649b-428c-99f0-284952ad0413&quot;&gt;Vector와 같은 타입의 객체에 넣어두고, 필요할 때 꺼내서 사용하고, 사용을 마친&lt;/p&gt;
&lt;p id=&quot;SE-7082147d-a9a5-40cd-abe8-682ec2eaf2f8&quot;&gt;Connection 객체는 다시 Pool로 반납하는 구조다.&lt;/p&gt;
&lt;p id=&quot;SE-24d4fa75-323e-448b-b74e-e47466146669&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-2da6e1a5-e3e9-4984-83d5-f467ce0e6ea2&quot;&gt;[context.xml을 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;읽어와서 InitContext &lt;/span&gt;JNDI 의 lookup(java:comp/env/jdbc/myora) 메서드로 호출&lt;/p&gt;
&lt;p id=&quot;SE-29a1107b-c7f5-4a0c-bf2a-831825a2d613&quot;&gt;​​&lt;/p&gt;
&lt;p id=&quot;SE-3b73c5f4-e3ed-400c-9977-3dad0971c3b8&quot;&gt;Context&lt;/p&gt;
&lt;p id=&quot;SE-41a43a75-91e3-45f5-9f0b-1ee5311bd305&quot;&gt;&amp;nbsp; &amp;nbsp; Resource&lt;/p&gt;
&lt;p id=&quot;SE-9c872e90-f5a8-45e4-a1d5-c1cd9711d8d2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DataSource[jdbc/myora] -&amp;gt;인증 후 Connection&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* include , useBean Action&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f0398c66-2d5a-4c21-9ec9-e2b498169425&quot;&gt;&amp;lt;HTML5&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-b0220fd4-3acf-4a10-a192-5fd6ea4d46aa&quot;&gt;Head / Main / Footer 분리 =&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-8f75d383-1833-489b-b46e-a762839b0cba&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-ab56fccd-f48b-4240-b0cd-430af2531e9d&quot;&gt;&amp;lt;div&amp;gt; : 레이아웃 만들 때 사용하는 태그.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;환경설정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 톰캣에 ojdbc6.jar 파일을 lib에 복붙하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;ojdbc6_lib 톰캣에 복사하기.gif&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;770&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBrzNc/btq0Xo1kUA0/XCorp6uGuMMHdwCdrWum20/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBrzNc/btq0Xo1kUA0/XCorp6uGuMMHdwCdrWum20/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBrzNc/btq0Xo1kUA0/XCorp6uGuMMHdwCdrWum20/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bBrzNc/btq0Xo1kUA0/XCorp6uGuMMHdwCdrWum20/img.gif&quot; data-filename=&quot;ojdbc6_lib 톰캣에 복사하기.gif&quot; data-origin-width=&quot;1006&quot; data-origin-height=&quot;770&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 오라클 DB 접속 계정 생성 및 권한 주기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;cmd로 DB에 jsp79 계정 만들기.gif&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;512&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSOZhR/btq0ZLuxAQr/3HUEObkE7ThtDulc5fEhp1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSOZhR/btq0ZLuxAQr/3HUEObkE7ThtDulc5fEhp1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSOZhR/btq0ZLuxAQr/3HUEObkE7ThtDulc5fEhp1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bSOZhR/btq0ZLuxAQr/3HUEObkE7ThtDulc5fEhp1/img.gif&quot; data-filename=&quot;cmd로 DB에 jsp79 계정 만들기.gif&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;512&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. 오라클 디벨로퍼에서 새 접속 만들기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;오라클 SQL Developer에서 DB 접속만들기.gif&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;911&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9R08p/btq0ZLuxpi3/N4WfZq2NhBUktg3V0tbqBk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9R08p/btq0ZLuxpi3/N4WfZq2NhBUktg3V0tbqBk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9R08p/btq0ZLuxpi3/N4WfZq2NhBUktg3V0tbqBk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/c9R08p/btq0ZLuxpi3/N4WfZq2NhBUktg3V0tbqBk/img.gif&quot; data-filename=&quot;오라클 SQL Developer에서 DB 접속만들기.gif&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;911&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. context.xml 작성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;context 만들기.gif&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;731&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lCnUL/btq0UdeYYdp/Y5xoPpVqbEXxYvdrXI0lh0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lCnUL/btq0UdeYYdp/Y5xoPpVqbEXxYvdrXI0lh0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lCnUL/btq0UdeYYdp/Y5xoPpVqbEXxYvdrXI0lh0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/lCnUL/btq0UdeYYdp/Y5xoPpVqbEXxYvdrXI0lh0/img.gif&quot; data-filename=&quot;context 만들기.gif&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;731&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5. Myconn.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616641475778&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package jsp_0325;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class MyConn {
	// context.xml에 작성한 Context를 읽어와서
	// DataSource 객체를 획득해서 Connection을
	// 반환하는 메서드를 정의하는 것이 목적
	private static DataSource ds;
	static {
		// context.xml에 Resource 객체를 통해서
		// DataSourcefmf 읽어들이기 위한 객체
		try {
			InitialContext ctx = new InitialContext(); // Ctrl + 1 : try-catch
			ds = (DataSource) ctx.lookup(&quot;java:comp/env/jdbc/myora&quot;);
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	public static Connection getDs() throws SQLException {
		return ds.getConnection();
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;6. ConnectionTest.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616641514241&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;jsp_0325.MyConn&quot;%&amp;gt;
&amp;lt;%@page import=&quot;java.sql.Connection&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;ConnectionTest.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%
	Connection con = MyConn.getDs();
%&amp;gt;
	&amp;lt;h1&amp;gt;Connection Test&amp;lt;/h1&amp;gt;
	&amp;lt;p&amp;gt; &amp;lt;%=con %&amp;gt; &amp;lt;/p&amp;gt;
&amp;lt;%
	con.close();
%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;캡처1.PNG&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;306&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FiLiZ/btq0Ucf44ln/jIsBQqOh9AQ49aINE9YWRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FiLiZ/btq0Ucf44ln/jIsBQqOh9AQ49aINE9YWRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FiLiZ/btq0Ucf44ln/jIsBQqOh9AQ49aINE9YWRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFiLiZ%2Fbtq0Ucf44ln%2FjIsBQqOh9AQ49aINE9YWRk%2Fimg.png&quot; data-filename=&quot;캡처1.PNG&quot; data-origin-width=&quot;594&quot; data-origin-height=&quot;306&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p id=&quot;SE-ecebc8d0-e777-4cf9-b6e7-f2a4d9d78ebf&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;∎ Model1방식의 웹 개발 방식&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-50c36a2f-5bf5-46fe-a351-21d54b740af6&quot;&gt;디자인코드(HTML)와 자바코드(비즈니스 로직)를 구분하지 않고 하나의 jsp&lt;/p&gt;
&lt;p id=&quot;SE-66a137c7-554f-4e4d-8261-fbc920118714&quot;&gt;파일 내에 함께 기술해서 웹 프로그램을 제작하는 방식이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e4945691-62bb-4a40-a86c-11fd92db3077&quot;&gt;장점 : 개발하기 쉽고, 배우기 쉽다.&lt;/p&gt;
&lt;p id=&quot;SE-9b11f82a-13c9-48bc-a932-d4da62860f72&quot;&gt;단점 : 디자인코드와 비즈니스로직의 구분이 명확하지 않아 복잡도가 높다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-1a1fe2ad-44ac-4b4a-baa0-7ce7d721b85e&quot;&gt;수정사항이 발생했을 때마다 디자이너와 개발자의 협업이 필요하다.&lt;/p&gt;
&lt;p id=&quot;SE-efaac3fd-6b49-4d39-87c9-041f88d96361&quot;&gt;비즈니스 로직의 재사용성이 떨어진다.&lt;/p&gt;
&lt;p id=&quot;SE-a9f595ff-f8dd-41c6-a643-368ab6ce9d77&quot;&gt;유지보수하기 어렵다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;447&quot; data-filename=&quot;model1.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYXW47/btq0XQKZf8l/KMa6SBVwH15kYgz4KEuTa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYXW47/btq0XQKZf8l/KMa6SBVwH15kYgz4KEuTa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYXW47/btq0XQKZf8l/KMa6SBVwH15kYgz4KEuTa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYXW47%2Fbtq0XQKZf8l%2FKMa6SBVwH15kYgz4KEuTa0%2Fimg.png&quot; data-origin-width=&quot;863&quot; data-origin-height=&quot;447&quot; data-filename=&quot;model1.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. board 테이블 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616642184248&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create table board (
no number constraint board_no_pk primary key,
title varchar2(100),
writer varchar2(50),
content varchar2(400),
pwd varchar2(10),
hit number(5),
regdate date);

create sequence board_seq
increment by 1
start with 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. boardVO 클래스 만들기&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616642399110&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package vo;

public class BoardVO {
	private int no;
	private String title;
	private String writer;
	private String content;
	private String pwd;
	private int hit;
	private String regdate;
	
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public int getHit() {
		return hit;
	}
	public void setHit(int hit) {
		this.hit = hit;
	}
	public String getRegdate() {
		return regdate;
	}
	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;b&gt;3. boardDao 클래스 만들기&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616652604029&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import conn.MyConn;
import vo.BoardVO;

public class BoardDao {
	private static BoardDao dao;

	public BoardDao() {
	}

	// Thread에 의해서 호출이 되기 때문에
	// Thread의 성질 때문에 동기화란 개념
	// synchronized 동기화 설정
	// lock pool에서 현재 getDao() 메서드가 호출되어
	// Thread가 안전하게 끝날 때 까지 보장을 받는다.
	public synchronized static BoardDao getDao() {
		if (dao == null)
			dao = new BoardDao();
		return dao;
	}
	
	// 게시물 추가
	public void insert(BoardVO vo) {
		StringBuffer sql = new StringBuffer();
		sql.append(&quot;insert into board &quot;);
		sql.append(&quot;values(board_seq.nextVal, ?, ?, ?, ?, 0, sysdate)&quot;);
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql.toString());
			pstmt.setString(1, vo.getTitle());
			pstmt.setString(2, vo.getWriter());
			pstmt.setString(3, vo.getContent());
			pstmt.setString(4, vo.getPwd());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt);
		}
	}
	// 게시물 조회 
	public ArrayList&amp;lt;BoardVO&amp;gt; list(){
		ArrayList&amp;lt;BoardVO&amp;gt; arBoard = new ArrayList&amp;lt;BoardVO&amp;gt;();
		StringBuffer sql = new StringBuffer();
		sql.append(&quot;select no, title, writer, content, hit, regdate from board order by 1 desc&quot;);
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql.toString());
			rs = pstmt.executeQuery();
			while (rs.next()) {
				BoardVO vo = new BoardVO();
				vo.setNo(rs.getInt(&quot;no&quot;));
				vo.setTitle(rs.getString(&quot;title&quot;));
				vo.setWriter(rs.getString(&quot;writer&quot;));
				vo.setContent(rs.getString(&quot;content&quot;));
				vo.setHit(rs.getInt(&quot;hit&quot;));
				vo.setRegdate(rs.getString(&quot;regdate&quot;));
				arBoard.add(vo);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt, rs);
		}
		return arBoard;
	}

	//조회수 증가 : update board set hit = hit + 1 where no=?
	public void hit(int no){
		String sql = &quot;update board set hit = hit + 1 where no=?&quot;;
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, no);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt);
		}
	}

	//상세정보 조회
	public BoardVO info(int no){ 
		BoardVO vo = new BoardVO();
		String sql = &quot;select no, title, writer, content, hit, regdate from board where no=?&quot;;
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, no);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				vo.setNo(rs.getInt(&quot;no&quot;));
				vo.setTitle(rs.getString(&quot;title&quot;));
				vo.setWriter(rs.getString(&quot;writer&quot;));
				vo.setContent(rs.getString(&quot;content&quot;));
				vo.setHit(rs.getInt(&quot;hit&quot;));
				vo.setRegdate(rs.getString(&quot;regdate&quot;));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt, rs);
		}
		return vo;
	}
	
	// 게시물 수정
	public void update(BoardVO vo){
		String sql = &quot;update board set title=?, content=? where no=? and pwd=?&quot;;
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, vo.getTitle());
			pstmt.setString(2, vo.getContent());
			pstmt.setInt(3, vo.getNo());
			pstmt.setString(4, vo.getPwd());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt);
		}
	}

	//게시물 삭제
	public void delete(int no){
		String sql = &quot;delete board where no=?&quot;;
		Connection con = null;
		PreparedStatement pstmt = null;
		try {
			con = MyConn.getDs();
			pstmt = con.prepareStatement(sql);
			pstmt.setInt(1, no);
			pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			autoCloseObj(con, pstmt);
		}
	}
	
	public void autoCloseObj(Connection con, PreparedStatement pstmt) {
		try {if (pstmt != null)pstmt.close();} catch (SQLException e) {e.printStackTrace();}
		try {if (con != null)con.close();} catch (SQLException e) {e.printStackTrace();}
	}
	public void autoCloseObj(Connection con, PreparedStatement pstmt, ResultSet rs) {
		try {if (pstmt != null)pstmt.close();} catch (SQLException e) {e.printStackTrace();}
		try {if (con != null)con.close();} catch (SQLException e) {e.printStackTrace();}
		try {if (rs != null)rs.close();} catch (SQLException e) {e.printStackTrace();}
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;b&gt;4. boardTest.jsp 만들기&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616652697789&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;java.util.ArrayList&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;% // boardTest.jsp
//입력 , 출력, 수정, 삭제 테스트 하기 
BoardDao dao = BoardDao.getDao();
BoardVO vo = new BoardVO();
vo.setWriter(&quot;이진아&quot;);
vo.setTitle(&quot;곧 점심시간입니다.&quot;);
vo.setContent(&quot;성공 했습니다.&quot;);
vo.setPwd(&quot;22&quot;);
dao.insert(vo);		// 게시물 추가
%&amp;gt; &amp;lt;h1&amp;gt; 게시물 리스트 &amp;lt;/h1&amp;gt; &amp;lt;%
ArrayList&amp;lt;BoardVO&amp;gt; list = dao.list();	// 게시물 리스트 출력
	for(BoardVO e : list) {
	%&amp;gt; 
	&amp;lt;%=e.getNo()%&amp;gt;
	&amp;lt;%=e.getWriter()%&amp;gt;
	&amp;lt;%=e.getTitle()%&amp;gt;
	&amp;lt;%=e.getContent()%&amp;gt;
	&amp;lt;%=e.getRegdate()%&amp;gt;
	&amp;lt;%
	}%&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;%
	BoardVO vo1 = dao.info(15);		// 게시물 상세 정보
%&amp;gt;&amp;lt;h1&amp;gt; 게시물 상세정보 &amp;lt;/h1&amp;gt;
&amp;lt;%=vo1.getTitle()%&amp;gt;
&amp;lt;%=vo1.getWriter()%&amp;gt;
&amp;lt;%=vo1.getContent()%&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%
BoardVO vo2 = new BoardVO();
vo2.setTitle(&quot;제목 수정&quot;);
vo2.setContent(&quot;내용 수정 성공 했습니다.&quot;);
vo2.setPwd(&quot;22&quot;);
vo2.setNo(15);
dao.update(vo2);		// 게시물 수정

BoardVO vo3 = dao.info(15);		// 게시물 상세 정보
%&amp;gt;&amp;lt;h1&amp;gt; 게시물 수정 후 게시물 정보 &amp;lt;/h1&amp;gt;
&amp;lt;%=vo3.getTitle()%&amp;gt;
&amp;lt;%=vo3.getWriter()%&amp;gt;
&amp;lt;%=vo3.getContent()%&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&amp;lt;%
dao.delete(15);	// 게시물 삭제
%&amp;gt;&amp;lt;h1&amp;gt; 게시물 삭제 후 리스트 &amp;lt;/h1&amp;gt;&amp;lt;%
ArrayList&amp;lt;BoardVO&amp;gt; list1 = dao.list();	// 게시물 리스트 출력
	for(BoardVO e : list1) {
	%&amp;gt;
	&amp;lt;%=e.getNo()%&amp;gt;
	&amp;lt;%=e.getWriter()%&amp;gt;
	&amp;lt;%=e.getTitle()%&amp;gt;
	&amp;lt;%=e.getContent()%&amp;gt;
	&amp;lt;%=e.getRegdate()%&amp;gt;&amp;lt;br&amp;gt;
	&amp;lt;%
	}
	%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;게시판 만들기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;board.jpg&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;752&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIBuqV/btq0Xo8Yzz9/KEhrOE7cyvD0TVS8KdkBiK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIBuqV/btq0Xo8Yzz9/KEhrOE7cyvD0TVS8KdkBiK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIBuqV/btq0Xo8Yzz9/KEhrOE7cyvD0TVS8KdkBiK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIBuqV%2Fbtq0Xo8Yzz9%2FKEhrOE7cyvD0TVS8KdkBiK%2Fimg.jpg&quot; data-filename=&quot;board.jpg&quot; data-origin-width=&quot;1137&quot; data-origin-height=&quot;752&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;b&gt;1. writer.jsp 만들기&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616662587498&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;write.jsp&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
	#cont { margin: auto; width: 450px; }
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div id=&quot;cont&quot;&amp;gt;
&amp;lt;form method=&quot;post&quot; action=&quot;insert.jsp&quot;&amp;gt;
	&amp;lt;table border=&quot;1&quot;&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;2&quot;&amp;gt; 게시물 작성하기&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot; id=&quot;title&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;writer&quot; id=&quot;writer&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;내용&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;textarea name=&quot;content&quot; id=&quot;content&quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;비밀번호&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;password&quot; name=&quot;pwd&quot; id=&quot;pwd&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;2&quot;&amp;gt;&amp;lt;input type=&quot;submit&quot; value=&quot;등록&quot;&amp;gt;
	&amp;lt;input type=&quot;reset&quot; value=&quot;취소&quot;&amp;gt;&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
	
&amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-841ac7ed-ae96-437e-8397-5bc5db837b7f&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;b&gt;2. insert.jsp 만들기&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616662720312&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	// 파라미터를 받아서 vo에 저장한 후 Dao에 전달하기
	// title, writer, content, pwd
%&amp;gt;
&amp;lt;!-- JSP 액션 태그 : 현재는 거의 사용되지 않는다. --&amp;gt;
&amp;lt;jsp:useBean id=&quot;vo&quot; class=&quot;vo.BoardVO&quot;/&amp;gt;
&amp;lt;jsp:setProperty property=&quot;*&quot; name=&quot;vo&quot;/&amp;gt;
&amp;lt;%--
	BoardDao dao = new BoardDao();
	BoardVO vo = new BoardVO();
	vo.setTitle(request.getParameter(&quot;title&quot;));
	vo.setWriter(request.getParameter(&quot;writer&quot;));
	vo.setContent(request.getParameter(&quot;content&quot;));
	vo.setPwd(request.getParameter(&quot;pwd&quot;));
	dao.insert(vo);
--%&amp;gt;
&amp;lt;%
	BoardDao dao = new BoardDao();
	dao.insert(vo);
	// 이동 방식
	response.sendRedirect(&quot;list.jsp&quot;);
%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. list.jsp 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616662755584&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@page import=&quot;java.util.ArrayList&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	ArrayList&amp;lt;BoardVO&amp;gt; list = BoardDao.getDao().list();
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;list.jsp&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
	#cont { margin: auto; width: 550px; }
	table, td, th {
	  border: 1px solid black;
	}
	
	table {
	  width: 100%;
	  border-collapse: collapse;
	}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div id=&quot;cont&quot;&amp;gt;
 &amp;lt;table border=&quot;1&quot;&amp;gt;
 &amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;5&quot;&amp;gt;게시물 목록&amp;lt;/th&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;번호&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;조회수&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;등록일&amp;lt;/td&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;!-- 데이터 반복 시작 --&amp;gt;
 &amp;lt;% for (BoardVO e : list) { %&amp;gt;
 &amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;%=e.getNo()%&amp;gt;&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;%=e.getTitle()%&amp;gt;&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;%=e.getWriter()%&amp;gt;&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;%=e.getHit()%&amp;gt;&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;%=e.getRegdate()%&amp;gt;&amp;lt;/td&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;% } %&amp;gt;
  &amp;lt;!-- 데이터 반복 끝 --&amp;gt;
 &amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;5&quot;&amp;gt;
	&amp;lt;input type=&quot;button&quot; value=&quot;새 글쓰기&quot; onclick=&quot;&quot;&amp;gt;	
	&amp;lt;/th&amp;gt;
 &amp;lt;/tr&amp;gt;
 &amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. info.jsp 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616668863909&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;dao.BoardDao&quot;%&amp;gt;
&amp;lt;%@page import=&quot;vo.BoardVO&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// list.jsp에서 선택한 링크를 통해서 get방식으로 전송 되어온 파라미터 값
	// no
	int no = Integer.parseInt(request.getParameter(&quot;no&quot;));
	BoardVO vo = BoardDao.getDao().info(no);
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;info.jsp&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
	#cont { margin: auto; width: 450px; }
	table {
	  text-align: center;
	}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;div id=&quot;cont&quot;&amp;gt;
	&amp;lt;table border=&quot;1&quot;&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;2&quot;&amp;gt;게시물 상세보기&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;번호&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;pwd&quot; id=&quot;no&quot; 
			value=&quot;&amp;lt;%=no %&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;제목&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;title&quot; id=&quot;title&quot; 
			value=&quot;&amp;lt;%=vo.getTitle()%&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;작성자&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;writer&quot; id=&quot;writer&quot; 
			value=&quot;&amp;lt;%=vo.getWriter()%&amp;gt;&quot; readonly=&quot;readonly&quot;&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;td&amp;gt;내용&amp;lt;/td&amp;gt;
	&amp;lt;td&amp;gt;&amp;lt;textarea name=&quot;content&quot; id=&quot;content&quot;&amp;gt;&amp;lt;%=vo.getContent()%&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
	&amp;lt;th colspan=&quot;2&quot;&amp;gt;&amp;lt;form action=&quot;list.jsp&quot;&amp;gt;&amp;lt;input type=&quot;submit&quot; value=&quot;리스트&quot;&amp;gt;
	&amp;lt;input type=&quot;reset&quot; value=&quot;취소&quot;&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;/th&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/42</guid>
      <comments>https://sw-diary21.tistory.com/42#entry42comment</comments>
      <pubDate>Thu, 25 Mar 2021 19:41:52 +0900</pubDate>
    </item>
    <item>
      <title>[0324] [Web - JSP] HTML5 : Form태그 요소, GET,POST , Parameter정리, JSP등 기본 문법</title>
      <link>https://sw-diary21.tistory.com/41</link>
      <description>&lt;p&gt;HTML5 : Form태그 요소, GET,POST , Parameter정리, JSP등 기본 문법&lt;/p&gt;
&lt;p id=&quot;SE-01fd35e4-3fb9-4f36-9544-f19d4858a918&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-eca040b0-d4b8-4b57-a954-71c1a7258cd6&quot;&gt;1) JSP등 기본 문법&lt;/p&gt;
&lt;p id=&quot;SE-9d45e643-b4bf-4140-a533-a96467aba794&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-ba4c4c0c-9937-46b9-bb2f-bc08233bc24d&quot;&gt;1. JSP 기본 구성 요소&lt;/p&gt;
&lt;p id=&quot;SE-87816a12-bb9f-4687-966b-9c399245e0fc&quot;&gt;&amp;nbsp; 1.1 주석(Comment) : JSP =&amp;gt; &amp;lt;%-- --%&amp;gt;, HTML5 주석 =&amp;gt; &amp;lt;!-- --&amp;gt;, Java 주석 =&amp;gt; //, /**/, /** */&lt;/p&gt;
&lt;p id=&quot;SE-0b249bab-a882-4d76-9953-9ed6cd43cb9d&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;1.2 지시어(Directive) : &amp;lt;%@ %&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-93e6ce87-c7ae-4647-8000-daa55130ff46&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(1) Page 지시어(Directive) : &amp;lt;%@page %&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616547119029&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%-- contentType=&quot;text/html; charset=EUC-KR&quot; =&amp;gt; MIME Type 이라고 한다 --%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;comment&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;!-- html 주석 : 클라이언트가 조회 가능 : 중요한 내용 작성 XX --&amp;gt;
&amp;lt;%-- jsp 주석 : 웹서버에서 파싱, 클라이언트에서 조회 불가능 : View단에서 주로 사용 --%&amp;gt;
&amp;lt;%
	// 자바 주석 : 클라이언트에서 보여지지 않음
%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;SE-4aa10f53-c49e-4196-8ce9-660ea2174e9c&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(2) Include 지시어 : &amp;lt;%@include %&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-0e43efde-f240-40e3-b2bb-bd8052e425d7&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(3) Taglib 지시어 &amp;lt;%@taglib %&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-bee734d1-1d14-479d-b4b7-e2011c99aa54&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;1.3 JSP page Scripting Elements&lt;/p&gt;
&lt;p id=&quot;SE-9ab18230-5df2-4f4c-b282-8e99ae402dcc&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(1) Scriptlet : &amp;lt;% %&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-62d56c6d-c326-4f0a-8b8d-680385467b7c&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;(2) 표현식(Expression) : &amp;lt;%= %&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-0399050a-f873-4dee-aa63-734760b17feb&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;(3) 선언(Declaration) : &amp;lt;%! %&amp;gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;2. Form 태그 요소&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2.1 서블릿으로 데이터를 전송하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ex2.formParam.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616551264830&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;ex2_formParam.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%--
 - HTML5은 웹페이지를 만들기 위한 표준 마크업 언어이다.
 - HTML5은 Hyper Text Markup Language를 나타낸다.
 - HTML은 웹 페이지의 구조를 설명합니다.
 - 페이지 디자인, 레이아웃 설정 등등의 기능은 하지 않는다.
 - 데이터를 전송 받아서 서버측 스크립트로 전송 태그 뿐만 아니라
 - 이미지, 영상을 보여주고 제어한다.
 	&amp;lt;!DOCTYPE html&amp;gt; 선언이 해당 문서가 HTML5 문서임을 정의
 	&amp;lt;html&amp;gt; 요소는 HTML 페이지의 root 요소이다.
 	&amp;lt;head&amp;gt; 요소는 HTML 페이지에 대한 메타 정보를 포함
 	&amp;lt;title&amp;gt; 요소는 브라우저의 제목 표시 줄이나 페이지의 탭에 표시되는
 	        HTML 페이지의 제목을 지정한다.
 	&amp;lt;body&amp;gt; 요소는 문서의 본문을 정의하며 제목, 단락, 이미지, 하이퍼 링크,
 	표, 목록 등과 같은 표시되는 모든 콘텐츠에 대한 컨테이너이다.
 --%&amp;gt;
 &amp;lt;%-----------------------------------------------------------%&amp;gt;
 &amp;lt;%--
 	데이터를 전송하기 위한 form 태그 요소
 	속성 : action : form의 데이터를 파라미터로 전송하기 위한 서버측 주소
 	속성 : method : 생략시 get 방식
 	form 요소의 하위 속성 중 name : 파라미터의 이름이다.
  --%&amp;gt;
  &amp;lt;h1&amp;gt;Form 태그 속성 Demo&amp;lt;/h1&amp;gt;
  &amp;lt;%-- 1. 서블릿으로 데이터를 전송하는 방법 : 이 방법이 주로 사용된다.
       2. JSP로 전송하는 방법 --%&amp;gt;
 &amp;lt;form action=&quot;ex2_formPro&quot; method=&quot;post&quot;&amp;gt;
 	아이디 : &amp;lt;input type=&quot;text&quot; name=&quot;id&quot; id=&quot;id&quot;&amp;gt; &amp;lt;br&amp;gt;
 	비밀번호 : &amp;lt;input type=&quot;password&quot; name=&quot;pwd&quot; id=&quot;pwd&quot;&amp;gt; &amp;lt;br&amp;gt;
 	나이 : &amp;lt;input type=&quot;number&quot; name=&quot;age&quot; id=&quot;age&quot; 
 	                  min=&quot;19&quot; max=&quot;200&quot; value=&quot;19&quot;&amp;gt; &amp;lt;br&amp;gt;
 	좋아하는 색상 : &amp;lt;input type=&quot;color&quot; name=&quot;mycol&quot; id=&quot;mycol&quot;&amp;gt; &amp;lt;br&amp;gt;
 	선호 url : &amp;lt;input type=&quot;url&quot; name=&quot;website&quot; id=&quot;website&quot;
 	list=&quot;weblist&quot;&amp;gt; &amp;lt;br&amp;gt;
 	&amp;lt;datalist id=&quot;weblist&quot;&amp;gt;
 		&amp;lt;option value=&quot;http://www.google.co.kr&quot; label=&quot;Google&quot;&amp;gt;
 		&amp;lt;option value=&quot;http://www.ikosmo.co.kr&quot; label=&quot;Ikosmo&quot;&amp;gt;
 		&amp;lt;option value=&quot;http://www.naver.co.kr&quot; label=&quot;Naver&quot;&amp;gt;
 	&amp;lt;/datalist&amp;gt;
 	좋아하는 날짜 1 : 
 	&amp;lt;input type=&quot;date&quot; name=&quot;mydate1&quot; id=&quot;mydate1&quot;&amp;gt;&amp;lt;br&amp;gt;
 	좋아하는 시간 2 : 
 	&amp;lt;input type=&quot;datetime-local&quot; name=&quot;mydate2&quot; id=&quot;mydate2&quot;&amp;gt;&amp;lt;br&amp;gt;
 	좋아하는 시간 3 : 
 	&amp;lt;input type=&quot;week&quot; name=&quot;mydate3&quot; id=&quot;mydate3&quot;&amp;gt;&amp;lt;br&amp;gt;
 	좋아하는 시간 4 : 
 	&amp;lt;input type=&quot;time&quot; name=&quot;mytime&quot; id=&quot;mytime&quot;&amp;gt;&amp;lt;br&amp;gt;
 	&amp;lt;input type=&quot;submit&quot; value=&quot;전송&quot;&amp;gt;
 	&amp;lt;input type=&quot;reset&quot; value=&quot;작성 취소&quot;&amp;gt;
 &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Ex2_FormParamServlet.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616553173046&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/ex2_formPro&quot;)
public class Ex2_FormParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		System.out.println(&quot;doGet 호출&quot;);
		String id = request.getParameter(&quot;id&quot;);
		PrintWriter out = response.getWriter();
		out.println(&quot;userID : &quot; + id);
		out.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		System.out.println(&quot;doPost 호출&quot;);
		// &amp;lt;form&amp;gt; 태그 안에 name으로 지정한 파라미터 이름
		// url일 경우 get 방식의 파라미터 이름 test?id=xman&amp;amp;name=kim
		String id = request.getParameter(&quot;id&quot;);
		PrintWriter out = response.getWriter();
		out.println(&quot;userID : &quot; + id);
		out.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&amp;nbsp; 2.2 jsp로 데이터를 전송하는 방법&lt;/p&gt;
&lt;p&gt;&lt;b&gt;ex2.formParam.jsp =&amp;gt; form action 수정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616553791761&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; &amp;lt;form action=&quot;ex2_process.jsp&quot; method=&quot;post&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ex2.process.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616553884744&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// 파라미터의 값이 한글일 경우 한글 처리
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	String id = request.getParameter(&quot;id&quot;);
	int age = Integer.parseInt(request.getParameter(&quot;age&quot;));
	String msg = &quot;&quot;;
	if (age &amp;lt;= 19) {
		msg = &quot;미성년 입니다.&quot;;
	} else {
		msg = &quot;성년 입니다.&quot;;
	}
	String mycol = request.getParameter(&quot;mycol&quot;);
	System.out.println(&quot;mycol : &quot; + mycol);
	
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;ex2_process.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body bgcolor=&quot;yellow&quot;&amp;gt;
	&amp;lt;h1&amp;gt; 회원 정보 출력 &amp;lt;/h1&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt; 아이디 : &amp;lt;%=id %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt; 나이 : &amp;lt;%=age %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt; 성년/미성년 : &amp;lt;%=msg %&amp;gt;&amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt; 선호색상 : &amp;lt;%=mycol %&amp;gt;&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;연습문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;myprofile.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616567631670&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;myprofile.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

  &amp;lt;h1&amp;gt; 회원 정보 입력 &amp;lt;/h1&amp;gt; 
 &amp;lt;form action=&quot;exam_profile.jsp&quot;&amp;gt;
 	아이디 : &amp;lt;input type=&quot;text&quot; name=&quot;id&quot; id=&quot;id&quot;&amp;gt; &amp;lt;br&amp;gt;
 	비밀번호 : &amp;lt;input type=&quot;password&quot; name=&quot;pwd&quot; id=&quot;pwd&quot;&amp;gt; &amp;lt;br&amp;gt;
 	이름 : &amp;lt;input type=&quot;text&quot; name=&quot;name&quot; id=&quot;name&quot;&amp;gt; &amp;lt;br&amp;gt;
 	좋아하는 색상 : &amp;lt;input type=&quot;color&quot; name=&quot;mycol&quot; id=&quot;mycol&quot;&amp;gt; &amp;lt;br&amp;gt;
 	이메일 : 	&amp;lt;input type=&quot;text&quot; name=&quot;email&quot; id=&quot;email&quot;&amp;gt;&amp;lt;br&amp;gt;
    성별 : &amp;lt;input type=&quot;radio&quot; id=&quot;genderChoice1&quot; name=&quot;gender&quot; value=&quot;남성&quot;&amp;gt; 남성
          &amp;lt;input type=&quot;radio&quot; id=&quot;genderChoice2&quot; name=&quot;gender&quot; value=&quot;여성&quot; checked&amp;gt; 여성 &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
 	 &amp;lt;input type=&quot;submit&quot; value=&quot;전송&quot;&amp;gt;
 	&amp;lt;input type=&quot;reset&quot; value=&quot;작성 취소&quot;&amp;gt;
 &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;exam_profile.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616567653725&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	// 파라미터의 값이 한글일 경우 한글 처리
	request.setCharacterEncoding(&quot;euc-kr&quot;);
	String id = request.getParameter(&quot;id&quot;);
	String pwd = request.getParameter(&quot;pwd&quot;);
	String name = request.getParameter(&quot;name&quot;);
	String mycol = request.getParameter(&quot;mycol&quot;);
	String email = request.getParameter(&quot;email&quot;);
	String gender = request.getParameter(&quot;gender&quot;);
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;exam_profile&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body bgcolor=&quot;yellow&quot;&amp;gt;
	&amp;lt;h1&amp;gt; 회원 정보 출력 &amp;lt;/h1&amp;gt;
	  &amp;lt;table border=&quot;1&quot;&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 아이디 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=id %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 비밀번호 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=pwd %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 이름 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=name %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 선호색상 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=mycol %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 이메일 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=email %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 성별 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%=gender %&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
	  &amp;lt;/table&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;라디오 버튼, 콤보 박스, 체크 박스&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ex3_checkFormParam&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616567815894&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;ex3_checkFormParam.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;	&amp;lt;%-- radio는 하나만 선택 : name의 이름이 동일하다. --%&amp;gt;
	&amp;lt;form action=&quot;ex3_check.jsp&quot; method=&quot;post&quot;&amp;gt;
		성별 : &amp;lt;input type=&quot;radio&quot; name=&quot;gender&quot; id=&quot;gender&quot; value=&quot;남자&quot; checked&amp;gt; 남자
		      &amp;lt;input type=&quot;radio&quot; name=&quot;gender&quot; id=&quot;gender&quot; value=&quot;여자&quot; checked&amp;gt; 여자 &amp;lt;br&amp;gt;
		      &amp;lt;%-- name은 하나이고 value로 선택 된 값이 전송된다. --%&amp;gt;
		전화번호 :
		&amp;lt;select name=&quot;phone&quot;&amp;gt;
			&amp;lt;option value=&quot;&quot;&amp;gt;선택&amp;lt;/option&amp;gt;
			&amp;lt;option value=&quot;02&quot;&amp;gt;02&amp;lt;/option&amp;gt;
			&amp;lt;option value=&quot;032&quot;&amp;gt;032&amp;lt;/option&amp;gt;
			&amp;lt;option value=&quot;055&quot;&amp;gt;055&amp;lt;/option&amp;gt;
		&amp;lt;/select&amp;gt; &amp;lt;hr&amp;gt;
		&amp;lt;%-- name의 이름이 동일하고 value로 선택 된 값들이 전송 --%&amp;gt;
		과일 :
		&amp;lt;input type=&quot;checkbox&quot; name=&quot;fruit&quot; value=&quot;1&quot;&amp;gt; 사과
		&amp;lt;input type=&quot;checkbox&quot; name=&quot;fruit&quot; value=&quot;2&quot;&amp;gt; 배
		&amp;lt;input type=&quot;checkbox&quot; name=&quot;fruit&quot; value=&quot;3&quot;&amp;gt; 감귤
		&amp;lt;input type=&quot;checkbox&quot; name=&quot;fruit&quot; value=&quot;4&quot;&amp;gt; 딸기
		&amp;lt;input type=&quot;checkbox&quot; name=&quot;fruit&quot; value=&quot;5&quot;&amp;gt; 토마토 &amp;lt;br&amp;gt;
		&amp;lt;input type=&quot;submit&quot; value=&quot;전송&quot;&amp;gt;
		&amp;lt;input type=&quot;reset&quot; value=&quot;취소&quot;&amp;gt;
	&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ex3_check.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616567844229&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%

	request.setCharacterEncoding(&quot;euc-kr&quot;);
	// 파라미터 정리
	// gender, phone
	// checkbox =&amp;gt; fruit 배열로 처리
	String gender = request.getParameter(&quot;gender&quot;);
	String phone = request.getParameter(&quot;phone&quot;);
	String[] fruit = request.getParameterValues(&quot;fruit&quot;);
	
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;ex3_check.jsp&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%-- ul : 순서가 없는 목록 , ol : 순서가 있는 목록
	img : src 속성 값으로 이미지의 경로(url 포함)
 --%&amp;gt;
	&amp;lt;ul&amp;gt;
		&amp;lt;li&amp;gt; gender : &amp;lt;%=gender %&amp;gt; &amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt; phone : &amp;lt;%=phone %&amp;gt; &amp;lt;/li&amp;gt;
		&amp;lt;li&amp;gt; fruit : 
		&amp;lt;%
			for(String f : fruit) { 
		%&amp;gt; 
			&amp;lt;p&amp;gt; &amp;lt;%=f %&amp;gt; : 
			&amp;lt;a href=&quot;&quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;img src=&quot;img/&amp;lt;%=f%&amp;gt;.jpg&quot; width=&quot;100&quot;&amp;gt; &amp;lt;/a&amp;gt;
			&amp;lt;/p&amp;gt;
		&amp;lt;% 
			} %&amp;gt;
		&amp;lt;/li&amp;gt;
	&amp;lt;/ul&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;구구단 과제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;구구단 수와 범위를 입력 받아서 출력해주고 입력 받은 단수에는&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;사용자가 선택한 배경 컬러를 넣어주기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;exam_gugudan.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616633199046&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;exam_gugudan&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;h1&amp;gt; 계산할 구구단 수 입력 &amp;lt;/h1&amp;gt; 
	&amp;lt;form action=&quot;exam_gugudanExe.jsp&quot;&amp;gt;
	단수 : &amp;lt;input type=&quot;number&quot; name=&quot;dan&quot; id=&quot;dan&quot; value=&quot;1&quot; min=&quot;1&quot; max=&quot;1000&quot;&amp;gt; 
	범위 제한 : &amp;lt;input type=&quot;number&quot; name=&quot;bound&quot; id=&quot;bound&quot; value=&quot;1&quot; step=&quot;2&quot; min=&quot;1&quot; max=&quot;9&quot;&amp;gt; &amp;lt;br&amp;gt;
	컬러 : &amp;lt;input type=&quot;color&quot; name=&quot;color&quot; id=&quot;color&quot;&amp;gt; &amp;lt;hr&amp;gt;
	&amp;lt;input type=&quot;submit&quot; value=&quot;구구단 GO&quot;&amp;gt;
	&amp;lt;input type=&quot;reset&quot; value=&quot;다시 선택&quot;&amp;gt;
	&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;exam_gugudanExe.jsp&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616633268955&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@page import=&quot;java.util.StringTokenizer&quot;%&amp;gt;
&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;%
	int dan = Integer.parseInt(request.getParameter(&quot;dan&quot;));
	int bound = Integer.parseInt(request.getParameter(&quot;bound&quot;));
	String color = request.getParameter(&quot;color&quot;);
	System.out.println(&quot;color 1: &quot; + color);
	StringTokenizer st = new StringTokenizer(color);
	color = st.nextToken(&quot;#&quot;);
	System.out.println(&quot;color 2: &quot; + color);
	int start = dan - (bound/2);
	int end = dan + (bound/2) +1;
%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;exam_gugudanExe&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;table border=&quot;1&quot;&amp;gt;
		&amp;lt;%
			for (int i=0; i&amp;lt;=9; i++) {
		%&amp;gt;	&amp;lt;tr&amp;gt;
		&amp;lt;%
				for (int j=start; j&amp;lt;end; j++) {
					if (i == 0){
						if (j == dan) {
		%&amp;gt;					&amp;lt;td bgcolor=&amp;lt;%=color %&amp;gt;&amp;gt;&amp;lt;%=j %&amp;gt;단&amp;lt;/td&amp;gt;
		&amp;lt;%				} else {
		%&amp;gt;					&amp;lt;td&amp;gt;&amp;lt;%=j %&amp;gt; 단&amp;lt;/td&amp;gt;
						
		&amp;lt;%				}
					} else {
						if (j == dan) {
		%&amp;gt;					&amp;lt;td bgcolor=&amp;lt;%=color %&amp;gt;&amp;gt;&amp;lt;%=j %&amp;gt; * &amp;lt;%=i %&amp;gt; = &amp;lt;%=j*i %&amp;gt;&amp;lt;/td&amp;gt;
		&amp;lt;%				} else {
		%&amp;gt;					&amp;lt;td&amp;gt;&amp;lt;%=j %&amp;gt; * &amp;lt;%=i %&amp;gt; = &amp;lt;%=j*i %&amp;gt;&amp;lt;/td&amp;gt;
		&amp;lt;%				}
					}
				}
		%&amp;gt;
			&amp;lt;/tr&amp;gt;
		&amp;lt;%
			}
		%&amp;gt;
	&amp;lt;/table&amp;gt;
	&amp;lt;hr&amp;gt;
	&amp;lt;form action=&quot;exam_gugudanExe.jsp&quot;&amp;gt;
	&amp;lt;a href=&quot;exam_gugudanExe.jsp?dan=&amp;lt;%=dan-1%&amp;gt;&amp;amp;bound=&amp;lt;%=bound%&amp;gt;&amp;amp;color=&amp;lt;%=color%&amp;gt;&quot;&amp;gt;
		&amp;lt;input type=&quot;button&quot; name=&quot;before&quot; id=&quot;before&quot; value=&quot;이전 단&quot;&amp;gt; &amp;lt;/a&amp;gt; 
	&amp;lt;a href=&quot;exam_gugudanExe.jsp?dan=&amp;lt;%=dan+1%&amp;gt;&amp;amp;bound=&amp;lt;%=bound%&amp;gt;&amp;amp;color=&amp;lt;%=color%&amp;gt;&quot;&amp;gt;
		&amp;lt;input type=&quot;button&quot; name=&quot;next&quot; id=&quot;next&quot; value=&quot;다음 단&quot;&amp;gt; &amp;lt;/a&amp;gt; 
	&amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;결과화면 gif )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;0324_과제5.gif&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLmwvn/btq0Vpe7MUg/pxXAgN0n9D7zEa78PNNcRk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLmwvn/btq0Vpe7MUg/pxXAgN0n9D7zEa78PNNcRk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLmwvn/btq0Vpe7MUg/pxXAgN0n9D7zEa78PNNcRk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bLmwvn/btq0Vpe7MUg/pxXAgN0n9D7zEa78PNNcRk/img.gif&quot; data-filename=&quot;0324_과제5.gif&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/41</guid>
      <comments>https://sw-diary21.tistory.com/41#entry41comment</comments>
      <pubDate>Wed, 24 Mar 2021 19:39:36 +0900</pubDate>
    </item>
    <item>
      <title>[0323] [Web - JSP] HTML5, Servlet 생명주기 , Servlet에서 이동방식</title>
      <link>https://sw-diary21.tistory.com/40</link>
      <description>&lt;p&gt;클라이언트 - &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;html5, javascript, xml &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-283d2a3f-a6d2-4b3d-81ab-f778a3160822&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-4d2f90e7-5582-437f-84f8-ddb0fa48f74e&quot;&gt;서버측 언어 구별 - &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Servlet&amp;amp;jsp, Django(python)&lt;/b&gt;&lt;/span&gt;, Flask, php, asp&lt;/p&gt;
&lt;p id=&quot;SE-5c20aaed-df27-485f-bf7b-aa38dba0039d&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-4030f0c8-91d5-4672-a42a-bc6be1776ce1&quot;&gt;Servlet 생명주기&lt;/p&gt;
&lt;p id=&quot;SE-96c3d0a1-f98e-4ef0-b120-33d08fff22f2&quot;&gt;​생성자에서는 자바 객체를 초기화하며 init()에서는 서블릿 객체를 초기화한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTpy1E/btq0JxYALaD/IMQrb8n4qXvFgAfpEGa9D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTpy1E/btq0JxYALaD/IMQrb8n4qXvFgAfpEGa9D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTpy1E/btq0JxYALaD/IMQrb8n4qXvFgAfpEGa9D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTpy1E%2Fbtq0JxYALaD%2FIMQrb8n4qXvFgAfpEGa9D0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;■ 서블릿의 라이프 사이클 관련 메소드&lt;/p&gt;
&lt;p id=&quot;SE-efa7f311-066c-4691-be5a-a891a37e2480&quot;&gt;&lt;b&gt;init()&amp;nbsp;&lt;/b&gt;: 디폴트 생성자를 이용해서 서블릿 객체를 생성함으로 init()메소드를 사용해서 서블릿 객체를 초기화한다.&lt;/p&gt;
&lt;p id=&quot;SE-e8c5c5f2-5af1-45f7-b970-d161b3d21672&quot;&gt;서블릿의 일생동안 단 한번 호출된다.&lt;/p&gt;
&lt;p id=&quot;SE-32685e58-3388-43ab-8bee-6d137b25e5d9&quot;&gt;&lt;b&gt;service()&lt;/b&gt;&amp;nbsp;: HTTP 메소드를 참조하여 doGet()을 호출할지, doPost()를 호출할지 결정한다.&lt;/p&gt;
&lt;p id=&quot;SE-d9167380-537e-40b3-beb4-2e15c3a00ffd&quot;&gt;요청이 있을때 마다 호출된다.&lt;/p&gt;
&lt;p id=&quot;SE-5771ee78-1daf-4792-bdde-2ca760fb016c&quot;&gt;&lt;b&gt;destroy()&lt;/b&gt;&amp;nbsp;: 서블릿이 소멸될때 호출된다. 자원해제와 관련된 작업을 한다.&lt;/p&gt;
&lt;p id=&quot;SE-6f4ee484-a7b4-40fe-b62d-e43af3e14b45&quot;&gt;서블릿의 일생동안 단 한번 호출된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;대용량은 주로 post 방식 (getPost())를 통해 처리된다.&lt;/p&gt;
&lt;p&gt;doGet은 적은 용량(aka문자)로 처리되고 패스워드를 get으로 보내면 안되며 바이너리를 보내지 못한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;======================================================================&lt;/p&gt;
&lt;p id=&quot;SE-f8391d65-2eb2-4b46-9d4d-368b10a6c89e&quot;&gt;&lt;b&gt;ServletConfig : 한 서블릿에 제한적인 객체&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-048b9960-5230-4ebe-bb0d-17cd017114be&quot;&gt;■ ServletConfig 객체는 Container가 서블릿을 생성할 때 생성되는 객체다.&lt;/p&gt;
&lt;p id=&quot;SE-1eae431f-cc03-450c-b4b8-4939b1569423&quot;&gt;■ DD(web.xml)를 읽어서 이름/값의 쌍으로 된 초기화 파라미터를 읽어서 저장한다.&lt;/p&gt;
&lt;p id=&quot;SE-bd630cf8-0454-4382-a3c4-afa2cbc6c083&quot;&gt;■ ServletConfig 객체는 Servlet 객체당 한 개씩 생성된다.&lt;/p&gt;
&lt;p id=&quot;SE-49193803-1201-48b0-b4ca-54ed2b0b2ff8&quot;&gt;■ Servlet에서는 getServletConfig()를 이용해서 Servlet과 관련된 ServletConfig&lt;/p&gt;
&lt;p id=&quot;SE-05f50111-a9f4-4645-baed-6ccfef1486ae&quot;&gt;객체를 얻을 수 있다.&lt;/p&gt;
&lt;p id=&quot;SE-1eedfccf-dcb1-42f8-9065-805e4cb6589f&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-07f0b30b-6d15-4fa6-be44-0ff86f90b143&quot;&gt;&lt;b&gt;ServletContext : 여러 서블릿에서 사용 가능&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-caea0f9f-8fe7-4f30-bc9c-f46f0016ffdb&quot;&gt;■ ServletContext 객체는 web application 당 하나씩 생성된다.&lt;/p&gt;
&lt;p id=&quot;SE-243336f6-22eb-4dbc-a1b8-a12f03eec230&quot;&gt;■ web application 전체에서 참조할 수 있는 초기화 파라미터를 저장할 수 있다.&lt;/p&gt;
&lt;p id=&quot;SE-64237d4d-b872-49ac-88e9-a2908322981f&quot;&gt;■ Servlet에서는 getServletContext()를 이용해서 ServletContext 객체를 얻을 수 있다.&lt;/p&gt;
&lt;p id=&quot;SE-3841b132-ff95-4e2c-8c4d-60dadc242747&quot;&gt;​======================================================================&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Ex1_LifeServlet.java&lt;/b&gt; (servlet으로 파일 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1616484247132&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/Ex1_LifeServlet&quot;)
public class Ex1_LifeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public Ex1_LifeServlet() {
    	System.out.println(&quot;생성자 호출!&quot;);
    }

	public void init(ServletConfig config) throws ServletException {
		System.out.println(&quot;init 호출!&quot;);
	}

	public void destroy() {
		System.out.println(&quot;destroy 호출!&quot;);
	}

	protected void service(HttpServletRequest request, HttpServletResponse response) 
    						throws ServletException, IOException {
		System.out.println(&quot;service 호출!&quot;);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;b&gt;ServletConfig, &lt;b&gt;&lt;b&gt;ServletContext&lt;/b&gt;&lt;/b&gt; 예제&lt;/b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;ServletConDemo.java&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;(Class 파일로 생성하여 HttpServlet 상속, Override에서 init, doGet 선택)&lt;/p&gt;
&lt;pre id=&quot;code_1616465171630&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/Ex1_LifeServlet&quot;)
public class ServletConDemo extends HttpServlet{

	private String email;
	private String tel;
	private String company;
	private String website;
    
	@Override
	public void init() throws ServletException {
		System.out.println(&quot;init 호출!&quot;);
		// &amp;lt;init-param&amp;gt; 은 ServletConfig에 해당
		// getInitParameter(&quot;파라미터이름&quot;);
		// JAVA에서의 Properties 처럼 사용 가능.
		email = getServletConfig().getInitParameter(&quot;email&quot;);
		tel = getServletConfig().getInitParameter(&quot;tel&quot;);
		company = getServletContext().getInitParameter(&quot;company&quot;);
		website = getServletContext().getInitParameter(&quot;website&quot;);
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    					throws ServletException, IOException {
		System.out.println(&quot;doGet 호출!&quot;);
		resp.setContentType(&quot;text/html; charset=euc-kr&quot;);
		PrintWriter out = resp.getWriter();
		out.println(&quot;&amp;lt;h1&amp;gt; ServletConDemo !! &amp;lt;/h1&amp;gt;&quot;);
		out.println(&quot;&amp;lt;p&amp;gt; 이메일 : &quot; + email + &quot;&amp;lt;/p&amp;gt;&quot;);
		out.println(&quot;&amp;lt;p&amp;gt; 전화번호 : &quot; + tel + &quot;&amp;lt;/p&amp;gt;&quot;);
		out.println(&quot;&amp;lt;ol&amp;gt;&quot;);
		out.println(&quot;&amp;lt;li&amp;gt; 회사 : &quot; + company + &quot;&amp;lt;/li&amp;gt;&quot;); // &amp;lt;li&amp;gt; 리스트 형식으로 출력 됨
		out.println(&quot;&amp;lt;li&amp;gt; 사이트 : &quot; + website + &quot;&amp;lt;/li&amp;gt;&quot;);
		out.println(&quot;&amp;lt;/ol&amp;gt;&quot;);
		out.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;web.xml&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616465287410&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;web-app xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; 
xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot; 
xsi:schemaLocation=&quot;http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd&quot; id=&quot;WebApp_ID&quot; version=&quot;4.0&quot;&amp;gt;

  &amp;lt;display-name&amp;gt;servlet_0323&amp;lt;/display-name&amp;gt;
  &amp;lt;!-- 한글 주석 가능 --&amp;gt;
  &amp;lt;context-param&amp;gt;
  	&amp;lt;param-name&amp;gt;company&amp;lt;/param-name&amp;gt;
  	&amp;lt;param-value&amp;gt;ikosmo&amp;lt;/param-value&amp;gt;
  &amp;lt;/context-param&amp;gt;
  &amp;lt;context-param&amp;gt;
  	&amp;lt;param-name&amp;gt;website&amp;lt;/param-name&amp;gt;
  	&amp;lt;param-value&amp;gt;http://www.ikosmo.co.kr&amp;lt;/param-value&amp;gt;
  &amp;lt;/context-param&amp;gt;
  &amp;lt;servlet&amp;gt;
 	&amp;lt;servlet-name&amp;gt;sdemo&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;servlet-class&amp;gt;ex1.ServletConDemo&amp;lt;/servlet-class&amp;gt;
  	&amp;lt;init-param&amp;gt;  &amp;lt;!-- init param의 파라미터는 다른 서블릿에서 사용 불가! --&amp;gt;
  		&amp;lt;param-name&amp;gt;email&amp;lt;/param-name&amp;gt; &amp;lt;!-- private 개념 --&amp;gt;
  		&amp;lt;param-value&amp;gt;kosmo@naver.com&amp;lt;/param-value&amp;gt;
  	&amp;lt;/init-param&amp;gt;
  	&amp;lt;init-param&amp;gt;
  		&amp;lt;param-name&amp;gt;tel&amp;lt;/param-name&amp;gt;
  		&amp;lt;param-value&amp;gt;010-7777-9999&amp;lt;/param-value&amp;gt;
  	&amp;lt;/init-param&amp;gt;
  &amp;lt;/servlet&amp;gt;
  &amp;lt;servlet-mapping&amp;gt;
  	&amp;lt;servlet-name&amp;gt;sdemo&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;url-pattern&amp;gt;/sdemo&amp;lt;/url-pattern&amp;gt;
  &amp;lt;/servlet-mapping&amp;gt;
  
  &amp;lt;welcome-file-list&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.htm&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.html&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.htm&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.jsp&amp;lt;/welcome-file&amp;gt;
  &amp;lt;/welcome-file-list&amp;gt;
&amp;lt;/web-app&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 id=&quot;SE-d141c1ee-f5b7-4cba-9f59-081272377613&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Servlet 에서 이동방식&lt;/b&gt;(&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;매우 중요***&lt;/span&gt;&lt;/b&gt;) : &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Forward, Redirect&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;Config == private (해당 서블릿만 사용이 가능하다 ex. init parameter)&lt;/p&gt;
&lt;p&gt;Request == default (req와 res 객체를 전달 받은 서블릿까지 사용 가능)&lt;/p&gt;
&lt;p&gt;Session == protected (세션은 관련 된 서블릿을 구분하여 담을 수 있고 해당 서블릿만 접근 가능)&lt;/p&gt;
&lt;p&gt;Context == public (모든 서블릿에서 접근 가능하다)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;02.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;608&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z7YG7/btq0MUGtPGV/bR8kXH7ptWVKvuhxdxgYck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z7YG7/btq0MUGtPGV/bR8kXH7ptWVKvuhxdxgYck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z7YG7/btq0MUGtPGV/bR8kXH7ptWVKvuhxdxgYck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ7YG7%2Fbtq0MUGtPGV%2FbR8kXH7ptWVKvuhxdxgYck%2Fimg.png&quot; data-filename=&quot;02.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;608&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;03.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;626&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C6VXp/btq0SHligH7/3waomi6mkcen9W1qxKS6j0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C6VXp/btq0SHligH7/3waomi6mkcen9W1qxKS6j0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C6VXp/btq0SHligH7/3waomi6mkcen9W1qxKS6j0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC6VXp%2Fbtq0SHligH7%2F3waomi6mkcen9W1qxKS6j0%2Fimg.png&quot; data-filename=&quot;03.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;626&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;b&gt;Redirect 예제 코드)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;index.html&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616471089063&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;index.html&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;a href=&quot;FirstRedirectDemo&quot;&amp;gt;첫번째 페이지 Redirect&amp;lt;/a&amp;gt;
|
&amp;lt;a href=&quot;first2&quot;&amp;gt;첫번째 페이지 Forward&amp;lt;/a&amp;gt;
|
&amp;lt;a href=&quot;http://www.ikosmo.co.kr&quot;&amp;gt;kosmo&amp;lt;/a&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;FirstRedirectDemo.java&lt;/b&gt; (Servlet으로 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1616472321265&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/FirstRedirectDemo&quot;)
public class FirstRedirectDemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
						throws ServletException, IOException {
		response.setContentType(&quot;text/html; charset=euc-kr&quot;);
		System.out.println(&quot;FirstRedirectDemo doGet 호출 !&quot;);
		// 비지니스 로직이 수행 후 request 객체를 사용해서 값을 저장
		request.setAttribute(&quot;msg&quot;, &quot;Redirect ok&quot;);
		System.out.println(&quot;msg : &quot; + request.getAttribute(&quot;msg&quot;));
		System.out.println(&quot;-------------first--------------&quot;);
		// 두번째 페이지로 이동!
		response.sendRedirect(&quot;SecondRedirectDemo&quot;);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;SecondRedirectDemo.java&lt;/b&gt; (Servlet으로 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1616472334432&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/SecondRedirectDemo&quot;)
public class SecondRedirectDemo extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
						throws ServletException, IOException {
		response.setContentType(&quot;text/html; charset=euc-kr&quot;);
		System.out.println(&quot;SecondRedirectDemo doGet 호출!&quot;);
		// redirect 이기 때문에 request에 저장한 값이 새롭게 생성되어
		// first 에서 저장한 request 의 값이 유지 되지 않는다.
		String test = (String)getServletContext().getAttribute(&quot;test&quot;);
		String msgv = (String) request.getAttribute(&quot;msg&quot;);
		System.out.println(&quot;request 값 : &quot; + msgv);
		PrintWriter out = response.getWriter();
		out.println(&quot;&amp;lt;h1&amp;gt;두번째 페이지&amp;lt;/h1&amp;gt;&quot;);
		out.println(&quot;&amp;lt;h2&amp;gt;Msg =&amp;gt; Request : &quot; + msgv + &quot;&amp;lt;/h2&amp;gt;&quot;);
		out.println(&quot;&amp;lt;h2&amp;gt;Test =&amp;gt; ServletContext : &quot; + test + &quot;&amp;lt;/h2&amp;gt;&quot;);
		out.println(&quot;&amp;lt;a href=\&quot;index.html\&quot;&amp;gt;index&amp;lt;/a&amp;gt;&quot;);
		out.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tQZrD/btq0MVkTOt5/zVjXiPrKfrE5RuaoR0pJpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tQZrD/btq0MVkTOt5/zVjXiPrKfrE5RuaoR0pJpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tQZrD/btq0MVkTOt5/zVjXiPrKfrE5RuaoR0pJpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtQZrD%2Fbtq0MVkTOt5%2FzVjXiPrKfrE5RuaoR0pJpK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;&lt;b&gt;Forward 예제 코드)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;index.html&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616478660610&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;index.html&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;a href=&quot;FirstRedirectDemo&quot;&amp;gt;첫번째 페이지 Redirect&amp;lt;/a&amp;gt;
|
&amp;lt;a href=&quot;FirstForwardDemo&quot;&amp;gt;첫번째 페이지 Forward&amp;lt;/a&amp;gt;
|
&amp;lt;a href=&quot;http://www.ikosmo.co.kr&quot;&amp;gt;kosmo&amp;lt;/a&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;FirstForwardDemo.java&lt;/b&gt;&amp;nbsp;(Servlet으로 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1616478852642&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/FirstForwardDemo&quot;)
public class FirstForwardDemo extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
						throws ServletException, IOException {
		response.setContentType(&quot;text/html; charset=euc-kr&quot;);
		System.out.println(&quot;FirstForwardDemo doGet 호출 !&quot;);
		// 비지니스 로직이 수행 후 request 객체를 사용해서 값을 저장
		request.setAttribute(&quot;msg&quot;, &quot;Forward ok&quot;);
		System.out.println(&quot;msg : &quot; + request.getAttribute(&quot;msg&quot;));
		System.out.println(&quot;-------------first--------------&quot;);
		// 두번째 페이지로 이동! forward로 이동시킬 주소를 우선 순위로 잡는다.
		RequestDispatcher rd = request.getRequestDispatcher(&quot;SecondForwardDemo&quot;);
		// 기존의 request, response 객체를 다른 서블릿으로 전달한다.
		rd.forward(request, response);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SecondForwardDemo.java&lt;/b&gt;&amp;nbsp;(Servlet으로 생성)&lt;/p&gt;
&lt;pre id=&quot;code_1616478887986&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@WebServlet(&quot;/SecondForwardDemo&quot;)
public class SecondForwardDemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    						throws ServletException, IOException {
		response.setContentType(&quot;text/html; charset=euc-kr&quot;);
		System.out.println(&quot;SecondForwardDemo doGet 호출!&quot;);
		String msgv = (String) request.getAttribute(&quot;msg&quot;);
		System.out.println(&quot;request 값 : &quot; + msgv);
		PrintWriter out = response.getWriter();
		out.println(&quot;&amp;lt;h1&amp;gt;두번째 페이지&amp;lt;/h1&amp;gt;&quot;);
		out.println(&quot;&amp;lt;h2&amp;gt;Msg : &quot; + msgv + &quot;&amp;lt;/h2&amp;gt;&quot;);
		out.println(&quot;&amp;lt;a href=\&quot;index.html\&quot;&amp;gt;index&amp;lt;/a&amp;gt;&quot;);
		out.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kRpMQ/btq0HbhJPcc/4nbFyMrGUxIqIUKcsmZSk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kRpMQ/btq0HbhJPcc/4nbFyMrGUxIqIUKcsmZSk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kRpMQ/btq0HbhJPcc/4nbFyMrGUxIqIUKcsmZSk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkRpMQ%2Fbtq0HbhJPcc%2F4nbFyMrGUxIqIUKcsmZSk1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&amp;lt; jsp 기본 개념 &amp;gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1616482931437&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
    &amp;lt;%!
    	// 멤버 영역 : 선언부 (사용하면 좋지 않다.)
    	private String msg;
    	public void test() {
    		System.out.println(&quot;test 호출&quot;);
    	}
    %&amp;gt;
&amp;lt;!-- 필수 개념 ***** 복습
	service 영역 안에서 ......
	jsp에서 아래의 HTML 코드, 내용은 모두 서블릿으로 변환 될 때
	PrintWriter의 out.println(&quot;태그, 내용&quot;); 
	호출 되어서 브라우저로 전달되는 구조이다.
 --&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;% 
	// 필수 개념 ***** 복습
	// service 메서드 영역 안이다. (local 영역) : 스크립트 릿 영역
	// 지역변수, 상수, 메서드를 호출, 로컬내부클래스 정의
	msg = &quot;선언부 변수&quot;;
	System.out.println(&quot;호출1&quot; + msg);
	test();
%&amp;gt;
&amp;lt;%
	System.out.println(&quot;호출2&quot;);
%&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;gugudan.jsp 예제)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616483827141&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=EUC-KR&quot;
    pageEncoding=&quot;EUC-KR&quot;%&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;meta charset=&quot;EUC-KR&quot;&amp;gt;
&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;%--
	&amp;lt;%! %&amp;gt; : 멤버영역, 선언부
	&amp;lt;%  %&amp;gt; : 스크립트 릿 영역, service 영역
	&amp;lt;%= %&amp;gt; : out.println(), 표현식 
 --%&amp;gt;
  &amp;lt;table border=&quot;1&quot;&amp;gt;
&amp;lt;%
	for (int i=0; i&amp;lt;=9; i++) {
	out.println(&quot; &amp;lt;tr&amp;gt; &quot;);
		for (int j=2; j&amp;lt;=9; j++) {
			if (i == 0) {
				out.println(&quot;&amp;lt;td&amp;gt;&quot; + j + &quot;단&quot; + &quot;&amp;lt;/td&amp;gt;&quot;);
			} else {
				out.println(&quot;&amp;lt;td&amp;gt;&quot; + j + &quot;x&quot; + i + &quot;=&quot; + (j*i) + &quot;&amp;lt;/td&amp;gt;&quot;);
			}
		}
	out.println(&quot; &amp;lt;/tr&amp;gt; &quot;);
}
%&amp;gt;
  &amp;lt;/table&amp;gt;
  
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p id=&quot;SE-641233cf-fa1d-4082-9484-380fbf0d4ec6&quot;&gt;&lt;b&gt;HTML5 필수 요소&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6ebc962e-9c16-4dee-aeef-6ad574ebc0ec&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-9f5cc066-ecb8-40dd-a773-71dcff6268fe&quot;&gt;&lt;b&gt;HTML 요소 란 무엇입니까?&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-44af96be-8c3e-4553-b1fd-1ffbcc7e29db&quot;&gt;HTML 요소는 시작 태그, 일부 콘텐츠 및 종료 태그로 정의됩니다.&lt;/p&gt;
&lt;p id=&quot;SE-32c6d5ac-fac3-4b7d-bba4-278130399626&quot;&gt;&amp;lt; tagname &amp;gt; 여기에 콘텐츠 입력 ... &amp;lt; / tagname &amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-612ee3ff-579e-4899-bf89-7ff6ad1e1229&quot;&gt;​&lt;/p&gt;
&lt;p id=&quot;SE-cedee802-a5b8-4d7b-81d7-1e64741923c4&quot;&gt;HTML &lt;b&gt;요소&lt;/b&gt; 는 시작 태그에서 끝 태그까지의 모든 것입니다.&lt;/p&gt;
&lt;p id=&quot;SE-3ee8801b-6cfb-465d-a52c-7e0c3617f300&quot;&gt;&amp;lt; h1 &amp;gt; 나의 첫 번째 제목 &amp;lt; / h1 &amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-de1a2c4d-40cb-4528-910f-575dfefffbe2&quot;&gt;&amp;lt; p &amp;gt; 내 첫 단락. &amp;lt; / p &amp;gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-645037fe-e1a0-4964-82cb-0fe9caeb5d1f&quot;&gt;&lt;b&gt;Start tag&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-29e3f165-48d5-4500-97ca-814dd9afea94&quot;&gt;&lt;b&gt;Element content&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-707a7466-49dd-406f-a848-e7e54b3d27a7&quot;&gt;&lt;b&gt;End tag&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-741a4fec-d82e-4a9d-a21c-0cd4c20984a6&quot;&gt;&amp;lt;h1&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-e370c339-03ea-44e3-b914-476474dd5c77&quot;&gt;My First Heading&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-a1d6f415-5bb0-4f85-a6d8-9e98888cf207&quot;&gt;&amp;lt;/h1&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-dd4ddb2b-3474-4433-aa24-54a231ae8ec5&quot;&gt;&amp;lt;p&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-6ddd26b4-8bc0-4911-8f06-c73cb8f6c7fe&quot;&gt;My first paragraph.&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-7a63fb8a-9d25-4557-b1ac-a5d3416ba1d0&quot;&gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-499ada09-84b8-463e-af03-90cbaebdbb78&quot;&gt;&amp;lt;br&amp;gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-347f0f52-3a6e-4a63-99bc-6ad5c0a09f3a&quot;&gt;&lt;i&gt;none&lt;/i&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;p id=&quot;SE-85949d82-2d20-4dd6-81d8-d9e5c16758d8&quot;&gt;&lt;i&gt;none&lt;/i&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p id=&quot;SE-8e492ad7-4edc-455a-afb7-63bc3aceaf65&quot;&gt;​&lt;/p&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/40</guid>
      <comments>https://sw-diary21.tistory.com/40#entry40comment</comments>
      <pubDate>Tue, 23 Mar 2021 16:23:11 +0900</pubDate>
    </item>
    <item>
      <title>[0322] [Web - JSP] JSP 개발 환경 및 기초 문법</title>
      <link>https://sw-diary21.tistory.com/39</link>
      <description>&lt;p&gt;JSP 개발 환경 및 기초 문법&lt;/p&gt;
&lt;p id=&quot;SE-b916349f-8f82-48e6-9351-adc497d8e810&quot;&gt;​&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1. 개발 환경 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;SE-0a09657b-9cdf-4684-8967-85034390779c&quot;&gt;- Eclipse(이클립스) 설치 , Tomcat (톰캣, 웹컨테이너, WAS - 웹어플리케이션 서비스)&lt;/p&gt;
&lt;p&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Tomcat&lt;/span&gt;은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;웹어플리케이션 서버 중에 하나&lt;/span&gt;이다. (동적 데이터 처리)&lt;/p&gt;
&lt;p&gt;HttpServletRequest,&amp;nbsp;HttpServletResponse&lt;/p&gt;
&lt;p&gt;: WebServer - Apache는 웹서버 중에 하나이다. (정적 데이터 처리)&lt;/p&gt;
&lt;p&gt;HttpRequest,&amp;nbsp;HttpResponse&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;=&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://www.eclipse.org/downloads/packages/&quot;&gt;https://www.eclipse.org/downloads/packages/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/file/d/1vi_uSndiIl_DCZwspiCSZFYB7SEAdPR_/view?usp=sharing&quot;&gt;drive.google.com/file/d/1vi_uSndiIl_DCZwspiCSZFYB7SEAdPR_/view?usp=sharing&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; Eclipse IDE for Enterprise Java and Web Developers &amp;gt;&amp;gt;&amp;gt;&amp;nbsp; Windows x86_64&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;=&amp;gt; &lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://tomcat.apache.org/&quot;&gt;tomcat.apache.org/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://drive.google.com/file/d/1Lp-WlzljDMBwsnh43w2qux_2OcHW4v17/view?usp=sharing&quot;&gt;drive.google.com/file/d/1Lp-WlzljDMBwsnh43w2qux_2OcHW4v17/view?usp=sharing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Download &amp;gt;&amp;gt; Tomcat9 &amp;gt;&amp;gt; 9.0.44 &amp;gt;&amp;gt; Binary Distributions &amp;gt;&amp;gt; 64-bit&amp;nbsp;Windows&amp;nbsp;zip 파일 다운로드&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;eclipse-jee-2020-12-R-win32-x86_64 압축 해제후 eclipse.exe 실행 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;실행 오류시&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://shshsh.tistory.com/88&quot;&gt;shshsh.tistory.com/88&lt;/a&gt;&amp;nbsp;참고&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xGNRP/btq0HbAneJC/odkxhZACXjGasQRYjrKD6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xGNRP/btq0HbAneJC/odkxhZACXjGasQRYjrKD6K/img.png&quot; data-alt=&quot;워크스페이스 경로 지정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xGNRP/btq0HbAneJC/odkxhZACXjGasQRYjrKD6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxGNRP%2Fbtq0HbAneJC%2FodkxhZACXjGasQRYjrKD6K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;워크스페이스 경로 지정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/eczw0F/btq0HavzLcN/MH0cS7NGC31wqP9yJTpkYk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bcyvHg/btq0Pdj3YG4/TuhdT6JPeNQoOGYqxljdHk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bFFOEZ/btq0EDdIxPV/cSPHEkoBEHk0aTc9hAW6o1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cUDqLG/btq0NwLapLc/RoU62pbDH6ytwLWsTi4Tm0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/d3OA4L/btq0Drkpvqj/vCGTROaKf2u7gGIGOcg7j1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/K3lZy/btq0EDY9V3m/pfsdhIt2kS0QiBvveo0KAK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cXLzWN/btq0HaWH32x/kf2SaySL4DZlcQNrdzBuVk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bsFf2c/btq0OjLADXQ/BmxrZGrEn9UO5h20Ntzbek/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/b0OyMc/btq0DswMNFV/aatnU1kOsNv5IxxsdcZGNk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bRPjgA/btq0HavzH1u/dELpcd5qZgoZt2Kj8ar8N1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/dEmPLp/btq0Hb85SRB/B4maZflFQgqoIBJp12FTKK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/YXLOO/btq0JxYlS4t/kbA3UrC0AbR1FkzWDC0KOk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bnz88m/btq0DspY3kA/cfkCmREAH2E2MWQAnfMBJ0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/dq5fum/btq0Pb7Cb3z/LfybRoeKtuittb7kOa1ga1/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eczw0F/btq0HavzLcN/MH0cS7NGC31wqP9yJTpkYk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/eczw0F/btq0HavzLcN/MH0cS7NGC31wqP9yJTpkYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eczw0F/btq0HavzLcN/MH0cS7NGC31wqP9yJTpkYk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feczw0F%2Fbtq0HavzLcN%2FMH0cS7NGC31wqP9yJTpkYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcyvHg/btq0Pdj3YG4/TuhdT6JPeNQoOGYqxljdHk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bcyvHg/btq0Pdj3YG4/TuhdT6JPeNQoOGYqxljdHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcyvHg/btq0Pdj3YG4/TuhdT6JPeNQoOGYqxljdHk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcyvHg%2Fbtq0Pdj3YG4%2FTuhdT6JPeNQoOGYqxljdHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFFOEZ/btq0EDdIxPV/cSPHEkoBEHk0aTc9hAW6o1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bFFOEZ/btq0EDdIxPV/cSPHEkoBEHk0aTc9hAW6o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFFOEZ/btq0EDdIxPV/cSPHEkoBEHk0aTc9hAW6o1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFFOEZ%2Fbtq0EDdIxPV%2FcSPHEkoBEHk0aTc9hAW6o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUDqLG/btq0NwLapLc/RoU62pbDH6ytwLWsTi4Tm0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cUDqLG/btq0NwLapLc/RoU62pbDH6ytwLWsTi4Tm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUDqLG/btq0NwLapLc/RoU62pbDH6ytwLWsTi4Tm0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUDqLG%2Fbtq0NwLapLc%2FRoU62pbDH6ytwLWsTi4Tm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3OA4L/btq0Drkpvqj/vCGTROaKf2u7gGIGOcg7j1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/d3OA4L/btq0Drkpvqj/vCGTROaKf2u7gGIGOcg7j1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3OA4L/btq0Drkpvqj/vCGTROaKf2u7gGIGOcg7j1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3OA4L%2Fbtq0Drkpvqj%2FvCGTROaKf2u7gGIGOcg7j1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K3lZy/btq0EDY9V3m/pfsdhIt2kS0QiBvveo0KAK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/K3lZy/btq0EDY9V3m/pfsdhIt2kS0QiBvveo0KAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K3lZy/btq0EDY9V3m/pfsdhIt2kS0QiBvveo0KAK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK3lZy%2Fbtq0EDY9V3m%2FpfsdhIt2kS0QiBvveo0KAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXLzWN/btq0HaWH32x/kf2SaySL4DZlcQNrdzBuVk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cXLzWN/btq0HaWH32x/kf2SaySL4DZlcQNrdzBuVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXLzWN/btq0HaWH32x/kf2SaySL4DZlcQNrdzBuVk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXLzWN%2Fbtq0HaWH32x%2Fkf2SaySL4DZlcQNrdzBuVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsFf2c/btq0OjLADXQ/BmxrZGrEn9UO5h20Ntzbek/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bsFf2c/btq0OjLADXQ/BmxrZGrEn9UO5h20Ntzbek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsFf2c/btq0OjLADXQ/BmxrZGrEn9UO5h20Ntzbek/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsFf2c%2Fbtq0OjLADXQ%2FBmxrZGrEn9UO5h20Ntzbek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0OyMc/btq0DswMNFV/aatnU1kOsNv5IxxsdcZGNk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/b0OyMc/btq0DswMNFV/aatnU1kOsNv5IxxsdcZGNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0OyMc/btq0DswMNFV/aatnU1kOsNv5IxxsdcZGNk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0OyMc%2Fbtq0DswMNFV%2FaatnU1kOsNv5IxxsdcZGNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRPjgA/btq0HavzH1u/dELpcd5qZgoZt2Kj8ar8N1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bRPjgA/btq0HavzH1u/dELpcd5qZgoZt2Kj8ar8N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRPjgA/btq0HavzH1u/dELpcd5qZgoZt2Kj8ar8N1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRPjgA%2Fbtq0HavzH1u%2FdELpcd5qZgoZt2Kj8ar8N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEmPLp/btq0Hb85SRB/B4maZflFQgqoIBJp12FTKK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/dEmPLp/btq0Hb85SRB/B4maZflFQgqoIBJp12FTKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEmPLp/btq0Hb85SRB/B4maZflFQgqoIBJp12FTKK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEmPLp%2Fbtq0Hb85SRB%2FB4maZflFQgqoIBJp12FTKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YXLOO/btq0JxYlS4t/kbA3UrC0AbR1FkzWDC0KOk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/YXLOO/btq0JxYlS4t/kbA3UrC0AbR1FkzWDC0KOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YXLOO/btq0JxYlS4t/kbA3UrC0AbR1FkzWDC0KOk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYXLOO%2Fbtq0JxYlS4t%2FkbA3UrC0AbR1FkzWDC0KOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnz88m/btq0DspY3kA/cfkCmREAH2E2MWQAnfMBJ0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bnz88m/btq0DspY3kA/cfkCmREAH2E2MWQAnfMBJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnz88m/btq0DspY3kA/cfkCmREAH2E2MWQAnfMBJ0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnz88m%2Fbtq0DspY3kA%2FcfkCmREAH2E2MWQAnfMBJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dq5fum/btq0Pb7Cb3z/LfybRoeKtuittb7kOa1ga1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/dq5fum/btq0Pb7Cb3z/LfybRoeKtuittb7kOa1ga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dq5fum/btq0Pb7Cb3z/LfybRoeKtuittb7kOa1ga1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdq5fum%2Fbtq0Pb7Cb3z%2FLfybRoeKtuittb7kOa1ga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;span data-index=&quot;8&quot;&gt;8&lt;/span&gt;&lt;span data-index=&quot;9&quot;&gt;9&lt;/span&gt;&lt;span data-index=&quot;10&quot;&gt;10&lt;/span&gt;&lt;span data-index=&quot;11&quot;&gt;11&lt;/span&gt;&lt;span data-index=&quot;12&quot;&gt;12&lt;/span&gt;&lt;span data-index=&quot;13&quot;&gt;13&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/eus2vE/btq0LOldzui/vYUskFVoZ5TkUGbfd8SuK0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/b84kqM/btq0EEXZOwM/J56mJKKRKeitsPr6fdDrek/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/kzFSh/btq0DsKhXrP/3fCtcoRfWWDiT1JJblbQb0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bhUEtQ/btq0BD6laXM/IHbMkKRJCKUoStCM5B3iE0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bgJolg/btq0HaClhhw/PD8iygs492rpJQ50aVMDV1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cr3fEi/btq0DqZY6Im/phRJIMkIKovuwjhkuJOIPk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/2N6kJ/btq0BDrOsyx/1HWCTtabYwUwlcnZMRQbx0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bM8i9P/btq0LPxGxsL/AdsjarAWKHK8gsvv9UJgZK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/JUfCi/btq0MU6xNiM/OhWtxMqODPMWESBvKmC0zK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bdVGYh/btq0BDyyXvv/JqO8MBlaAY25fDbKciCjN0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/dx5doq/btq0Jx49p4Y/UXk70wn3CQKLmphkEHECFK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cX0Vj4/btq0PcZJJE6/DRp4ACtFzmQFovwq5Fxohk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/0SwuU/btq0BExwfdC/KLZjXfYZ8LLt4eK7KA4pcK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/uvFmV/btq0Nwj5CyF/iGopGodWxiM3YIaCiGvUKK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bUI1lF/btq0NvlaDnx/hEpyAkI49s2P7OXHCPBapk/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eus2vE/btq0LOldzui/vYUskFVoZ5TkUGbfd8SuK0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/eus2vE/btq0LOldzui/vYUskFVoZ5TkUGbfd8SuK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eus2vE/btq0LOldzui/vYUskFVoZ5TkUGbfd8SuK0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feus2vE%2Fbtq0LOldzui%2FvYUskFVoZ5TkUGbfd8SuK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b84kqM/btq0EEXZOwM/J56mJKKRKeitsPr6fdDrek/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/b84kqM/btq0EEXZOwM/J56mJKKRKeitsPr6fdDrek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b84kqM/btq0EEXZOwM/J56mJKKRKeitsPr6fdDrek/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb84kqM%2Fbtq0EEXZOwM%2FJ56mJKKRKeitsPr6fdDrek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kzFSh/btq0DsKhXrP/3fCtcoRfWWDiT1JJblbQb0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/kzFSh/btq0DsKhXrP/3fCtcoRfWWDiT1JJblbQb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kzFSh/btq0DsKhXrP/3fCtcoRfWWDiT1JJblbQb0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkzFSh%2Fbtq0DsKhXrP%2F3fCtcoRfWWDiT1JJblbQb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhUEtQ/btq0BD6laXM/IHbMkKRJCKUoStCM5B3iE0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bhUEtQ/btq0BD6laXM/IHbMkKRJCKUoStCM5B3iE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhUEtQ/btq0BD6laXM/IHbMkKRJCKUoStCM5B3iE0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhUEtQ%2Fbtq0BD6laXM%2FIHbMkKRJCKUoStCM5B3iE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgJolg/btq0HaClhhw/PD8iygs492rpJQ50aVMDV1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bgJolg/btq0HaClhhw/PD8iygs492rpJQ50aVMDV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgJolg/btq0HaClhhw/PD8iygs492rpJQ50aVMDV1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgJolg%2Fbtq0HaClhhw%2FPD8iygs492rpJQ50aVMDV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr3fEi/btq0DqZY6Im/phRJIMkIKovuwjhkuJOIPk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cr3fEi/btq0DqZY6Im/phRJIMkIKovuwjhkuJOIPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr3fEi/btq0DqZY6Im/phRJIMkIKovuwjhkuJOIPk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr3fEi%2Fbtq0DqZY6Im%2FphRJIMkIKovuwjhkuJOIPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2N6kJ/btq0BDrOsyx/1HWCTtabYwUwlcnZMRQbx0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/2N6kJ/btq0BDrOsyx/1HWCTtabYwUwlcnZMRQbx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2N6kJ/btq0BDrOsyx/1HWCTtabYwUwlcnZMRQbx0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2N6kJ%2Fbtq0BDrOsyx%2F1HWCTtabYwUwlcnZMRQbx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM8i9P/btq0LPxGxsL/AdsjarAWKHK8gsvv9UJgZK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bM8i9P/btq0LPxGxsL/AdsjarAWKHK8gsvv9UJgZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM8i9P/btq0LPxGxsL/AdsjarAWKHK8gsvv9UJgZK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM8i9P%2Fbtq0LPxGxsL%2FAdsjarAWKHK8gsvv9UJgZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JUfCi/btq0MU6xNiM/OhWtxMqODPMWESBvKmC0zK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/JUfCi/btq0MU6xNiM/OhWtxMqODPMWESBvKmC0zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JUfCi/btq0MU6xNiM/OhWtxMqODPMWESBvKmC0zK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJUfCi%2Fbtq0MU6xNiM%2FOhWtxMqODPMWESBvKmC0zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdVGYh/btq0BDyyXvv/JqO8MBlaAY25fDbKciCjN0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bdVGYh/btq0BDyyXvv/JqO8MBlaAY25fDbKciCjN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdVGYh/btq0BDyyXvv/JqO8MBlaAY25fDbKciCjN0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdVGYh%2Fbtq0BDyyXvv%2FJqO8MBlaAY25fDbKciCjN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dx5doq/btq0Jx49p4Y/UXk70wn3CQKLmphkEHECFK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/dx5doq/btq0Jx49p4Y/UXk70wn3CQKLmphkEHECFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dx5doq/btq0Jx49p4Y/UXk70wn3CQKLmphkEHECFK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdx5doq%2Fbtq0Jx49p4Y%2FUXk70wn3CQKLmphkEHECFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX0Vj4/btq0PcZJJE6/DRp4ACtFzmQFovwq5Fxohk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cX0Vj4/btq0PcZJJE6/DRp4ACtFzmQFovwq5Fxohk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX0Vj4/btq0PcZJJE6/DRp4ACtFzmQFovwq5Fxohk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX0Vj4%2Fbtq0PcZJJE6%2FDRp4ACtFzmQFovwq5Fxohk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0SwuU/btq0BExwfdC/KLZjXfYZ8LLt4eK7KA4pcK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/0SwuU/btq0BExwfdC/KLZjXfYZ8LLt4eK7KA4pcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0SwuU/btq0BExwfdC/KLZjXfYZ8LLt4eK7KA4pcK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0SwuU%2Fbtq0BExwfdC%2FKLZjXfYZ8LLt4eK7KA4pcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uvFmV/btq0Nwj5CyF/iGopGodWxiM3YIaCiGvUKK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/uvFmV/btq0Nwj5CyF/iGopGodWxiM3YIaCiGvUKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uvFmV/btq0Nwj5CyF/iGopGodWxiM3YIaCiGvUKK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuvFmV%2Fbtq0Nwj5CyF%2FiGopGodWxiM3YIaCiGvUKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUI1lF/btq0NvlaDnx/hEpyAkI49s2P7OXHCPBapk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bUI1lF/btq0NvlaDnx/hEpyAkI49s2P7OXHCPBapk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUI1lF/btq0NvlaDnx/hEpyAkI49s2P7OXHCPBapk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUI1lF%2Fbtq0NvlaDnx%2FhEpyAkI49s2P7OXHCPBapk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;span data-index=&quot;8&quot;&gt;8&lt;/span&gt;&lt;span data-index=&quot;9&quot;&gt;9&lt;/span&gt;&lt;span data-index=&quot;10&quot;&gt;10&lt;/span&gt;&lt;span data-index=&quot;11&quot;&gt;11&lt;/span&gt;&lt;span data-index=&quot;12&quot;&gt;12&lt;/span&gt;&lt;span data-index=&quot;13&quot;&gt;13&lt;/span&gt;&lt;span data-index=&quot;14&quot;&gt;14&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cjAXU9/btq0Ojrgto0/lHkKNuUzK2jHpLuo6PxT2k/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/AOglg/btq0MUMhaZc/TKJdEeRavDu2CmWSBuFWL0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/Bu24O/btq0EDkwijo/znqkEkkK6WbbanZtzmTvZ0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/40jwT/btq0NwK9fn1/M8JduivklzSnHWpPuviow1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/rJAt0/btq0MUFxVJ7/b4MPLNA4O1Kg5KdGrDxdS0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/dvRySu/btq0Hah5xlQ/8KJH92EvR09xdky0qeZ8w0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cLF8tc/btq0Jw6bZPI/0ilYSvLcB1yHXeVSZDMus0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/P5TsD/btq0HavyyQ3/MVqZTaMjpr7jfNQDbkPbKk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/eaxNfH/btq0Nwj5GKV/kxbiyZ7PaZBEyQ4KdDIiwK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bvyKgj/btq0EDY8GCB/50jczzgIPpzFysuoXh8P31/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/YOyas/btq0DrLna6v/t0mzoLmAcTEa0ZgxwxOeh1/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjAXU9/btq0Ojrgto0/lHkKNuUzK2jHpLuo6PxT2k/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cjAXU9/btq0Ojrgto0/lHkKNuUzK2jHpLuo6PxT2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjAXU9/btq0Ojrgto0/lHkKNuUzK2jHpLuo6PxT2k/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjAXU9%2Fbtq0Ojrgto0%2FlHkKNuUzK2jHpLuo6PxT2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AOglg/btq0MUMhaZc/TKJdEeRavDu2CmWSBuFWL0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/AOglg/btq0MUMhaZc/TKJdEeRavDu2CmWSBuFWL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AOglg/btq0MUMhaZc/TKJdEeRavDu2CmWSBuFWL0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAOglg%2Fbtq0MUMhaZc%2FTKJdEeRavDu2CmWSBuFWL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bu24O/btq0EDkwijo/znqkEkkK6WbbanZtzmTvZ0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/Bu24O/btq0EDkwijo/znqkEkkK6WbbanZtzmTvZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bu24O/btq0EDkwijo/znqkEkkK6WbbanZtzmTvZ0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBu24O%2Fbtq0EDkwijo%2FznqkEkkK6WbbanZtzmTvZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/40jwT/btq0NwK9fn1/M8JduivklzSnHWpPuviow1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/40jwT/btq0NwK9fn1/M8JduivklzSnHWpPuviow1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/40jwT/btq0NwK9fn1/M8JduivklzSnHWpPuviow1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F40jwT%2Fbtq0NwK9fn1%2FM8JduivklzSnHWpPuviow1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rJAt0/btq0MUFxVJ7/b4MPLNA4O1Kg5KdGrDxdS0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/rJAt0/btq0MUFxVJ7/b4MPLNA4O1Kg5KdGrDxdS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rJAt0/btq0MUFxVJ7/b4MPLNA4O1Kg5KdGrDxdS0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrJAt0%2Fbtq0MUFxVJ7%2Fb4MPLNA4O1Kg5KdGrDxdS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvRySu/btq0Hah5xlQ/8KJH92EvR09xdky0qeZ8w0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/dvRySu/btq0Hah5xlQ/8KJH92EvR09xdky0qeZ8w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvRySu/btq0Hah5xlQ/8KJH92EvR09xdky0qeZ8w0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvRySu%2Fbtq0Hah5xlQ%2F8KJH92EvR09xdky0qeZ8w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLF8tc/btq0Jw6bZPI/0ilYSvLcB1yHXeVSZDMus0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cLF8tc/btq0Jw6bZPI/0ilYSvLcB1yHXeVSZDMus0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLF8tc/btq0Jw6bZPI/0ilYSvLcB1yHXeVSZDMus0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLF8tc%2Fbtq0Jw6bZPI%2F0ilYSvLcB1yHXeVSZDMus0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P5TsD/btq0HavyyQ3/MVqZTaMjpr7jfNQDbkPbKk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/P5TsD/btq0HavyyQ3/MVqZTaMjpr7jfNQDbkPbKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P5TsD/btq0HavyyQ3/MVqZTaMjpr7jfNQDbkPbKk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP5TsD%2Fbtq0HavyyQ3%2FMVqZTaMjpr7jfNQDbkPbKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaxNfH/btq0Nwj5GKV/kxbiyZ7PaZBEyQ4KdDIiwK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/eaxNfH/btq0Nwj5GKV/kxbiyZ7PaZBEyQ4KdDIiwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaxNfH/btq0Nwj5GKV/kxbiyZ7PaZBEyQ4KdDIiwK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaxNfH%2Fbtq0Nwj5GKV%2FkxbiyZ7PaZBEyQ4KdDIiwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvyKgj/btq0EDY8GCB/50jczzgIPpzFysuoXh8P31/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bvyKgj/btq0EDY8GCB/50jczzgIPpzFysuoXh8P31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvyKgj/btq0EDY8GCB/50jczzgIPpzFysuoXh8P31/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvyKgj%2Fbtq0EDY8GCB%2F50jczzgIPpzFysuoXh8P31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YOyas/btq0DrLna6v/t0mzoLmAcTEa0ZgxwxOeh1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/YOyas/btq0DrLna6v/t0mzoLmAcTEa0ZgxwxOeh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YOyas/btq0DrLna6v/t0mzoLmAcTEa0ZgxwxOeh1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYOyas%2Fbtq0DrLna6v%2Ft0mzoLmAcTEa0ZgxwxOeh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;529&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;span data-index=&quot;7&quot;&gt;7&lt;/span&gt;&lt;span data-index=&quot;8&quot;&gt;8&lt;/span&gt;&lt;span data-index=&quot;9&quot;&gt;9&lt;/span&gt;&lt;span data-index=&quot;10&quot;&gt;10&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/6Z81Z/btq0Hb85jYX/lOP9Z2zCi3uOUqcCfibOKk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/vmd44/btq0Nwdktrp/8XpnJWUtnwoG7L3M45XcIK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/yDLhi/btq0EDSl1lG/dXDWVQ3SebLjDpAAra0foK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/b9Mddp/btq0BD6l3E0/mlQ6WoFQMvH52S6BnlFfv1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/zIgXf/btq0EDLziFP/YnMDN1wHtyKWw1ILKj0Na0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bjsyLb/btq0EDEOiiw/PiYPQQzFY0NvDkW3PdzB41/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Z81Z/btq0Hb85jYX/lOP9Z2zCi3uOUqcCfibOKk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/6Z81Z/btq0Hb85jYX/lOP9Z2zCi3uOUqcCfibOKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Z81Z/btq0Hb85jYX/lOP9Z2zCi3uOUqcCfibOKk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Z81Z%2Fbtq0Hb85jYX%2FlOP9Z2zCi3uOUqcCfibOKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vmd44/btq0Nwdktrp/8XpnJWUtnwoG7L3M45XcIK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/vmd44/btq0Nwdktrp/8XpnJWUtnwoG7L3M45XcIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vmd44/btq0Nwdktrp/8XpnJWUtnwoG7L3M45XcIK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvmd44%2Fbtq0Nwdktrp%2F8XpnJWUtnwoG7L3M45XcIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yDLhi/btq0EDSl1lG/dXDWVQ3SebLjDpAAra0foK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/yDLhi/btq0EDSl1lG/dXDWVQ3SebLjDpAAra0foK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yDLhi/btq0EDSl1lG/dXDWVQ3SebLjDpAAra0foK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyDLhi%2Fbtq0EDSl1lG%2FdXDWVQ3SebLjDpAAra0foK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Mddp/btq0BD6l3E0/mlQ6WoFQMvH52S6BnlFfv1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/b9Mddp/btq0BD6l3E0/mlQ6WoFQMvH52S6BnlFfv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Mddp/btq0BD6l3E0/mlQ6WoFQMvH52S6BnlFfv1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Mddp%2Fbtq0BD6l3E0%2FmlQ6WoFQMvH52S6BnlFfv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zIgXf/btq0EDLziFP/YnMDN1wHtyKWw1ILKj0Na0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/zIgXf/btq0EDLziFP/YnMDN1wHtyKWw1ILKj0Na0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zIgXf/btq0EDLziFP/YnMDN1wHtyKWw1ILKj0Na0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzIgXf%2Fbtq0EDLziFP%2FYnMDN1wHtyKWw1ILKj0Na0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjsyLb/btq0EDEOiiw/PiYPQQzFY0NvDkW3PdzB41/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bjsyLb/btq0EDEOiiw/PiYPQQzFY0NvDkW3PdzB41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjsyLb/btq0EDEOiiw/PiYPQQzFY0NvDkW3PdzB41/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjsyLb%2Fbtq0EDEOiiw%2FPiYPQQzFY0NvDkW3PdzB41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;747&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;web.xml&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616412348606&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;web-app xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; 
xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot; 
xsi:schemaLocation=&quot;http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd&quot; id=&quot;WebApp_ID&quot; version=&quot;4.0&quot;&amp;gt;

  &amp;lt;display-name&amp;gt;servlet_0322&amp;lt;/display-name&amp;gt;
  
  &amp;lt;servlet&amp;gt;
  	&amp;lt;servlet-name&amp;gt;hello&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;servlet-class&amp;gt;ex1.EX1_HelloWebServlet&amp;lt;/servlet-class&amp;gt;
  &amp;lt;/servlet&amp;gt;
  &amp;lt;servlet-mapping&amp;gt;
  	&amp;lt;servlet-name&amp;gt;hello&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;url-pattern&amp;gt;/hello&amp;lt;/url-pattern&amp;gt;
  &amp;lt;/servlet-mapping&amp;gt;
  
  
  &amp;lt;servlet&amp;gt;
  	&amp;lt;servlet-name&amp;gt;MyProfile&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;servlet-class&amp;gt;exam.MyProfile&amp;lt;/servlet-class&amp;gt;
  &amp;lt;/servlet&amp;gt;
  &amp;lt;servlet-mapping&amp;gt;
  	&amp;lt;servlet-name&amp;gt;MyProfile&amp;lt;/servlet-name&amp;gt;
  	&amp;lt;url-pattern&amp;gt;/MyProfile&amp;lt;/url-pattern&amp;gt;
  &amp;lt;/servlet-mapping&amp;gt;
  
  
  &amp;lt;welcome-file-list&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.htm&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.html&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.htm&amp;lt;/welcome-file&amp;gt;
    &amp;lt;welcome-file&amp;gt;default.jsp&amp;lt;/welcome-file&amp;gt;
  &amp;lt;/welcome-file-list&amp;gt;
&amp;lt;/web-app&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;EX1_HelloWebServlet.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616412393181&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// HttpServlet을 상속 받았기 때문에 WAS에 의해서 관리 될 객체가 된다.
public class EX1_HelloWebServlet extends HttpServlet{
	// 알트 + 시프트 + S
	public EX1_HelloWebServlet() {
		System.out.println(&quot;생성자 호출!&quot;);
		// TODO Auto-generated constructor stub
	}
	
	// doGet, service 메서드는 thread에 의해서 관리된다.
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(req, resp);
		System.out.println(&quot;service 메서드 호출!&quot;);
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println(&quot;get 메서드 호출!&quot;);
		// resp : 서버가 브라우저에게 응답하는 객체
		// MIME TYPE을 전송한다.
		resp.setContentType(&quot;text/html; charset=EUC-KR&quot;);
		PrintWriter out = resp.getWriter();
		out.println(&quot;&amp;lt;h1&amp;gt;&quot;);
		out.println(&quot;안녕하세요오!! 나의 첫번째 서블릿입니다!!.&quot;);
		out.println(&quot;&amp;lt;/h1&amp;gt;&quot;);
		out.close();
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;MyProfile.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616412437101&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package exam;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyProfile extends HttpServlet{

	public MyProfile() {
		System.out.println(&quot;MyProfile 생성자 호출!&quot;);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println(&quot;MyProfile doget 메서드 호출!&quot;);			
		resp.setContentType(&quot;text/html; charset=EUC-KR&quot;);
		PrintWriter out = resp.getWriter();
		String name = &quot;홍길동&quot;;
		out.println(&quot;&amp;lt;h2&amp;gt;&quot;);
		out.println(&quot;나의 소개 &amp;lt;/br&amp;gt;&quot;);
		out.println(&quot;이름은 &quot; + name + &quot;입니다.&amp;lt;/br&amp;gt;&quot;);
		out.println(&quot;지금 가산에 있습니다.&amp;lt;/br&amp;gt;&quot;);
		out.println(&quot;&amp;lt;/h2&amp;gt;&quot;);
		out.close();
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(req, resp);
		System.out.println(&quot;MyProfile service 메서드 호출!&quot;);
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;GugudanServlet.java&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1616412496869&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package ex1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class GugudanServlet
 * Servlet 3.0부터 어노테이션 기반이 제공, web.xml 작성이 불필요하다.
 */
@WebServlet(&quot;/GugudanServlet&quot;) // web.xml을 대신한다.
public class GugudanServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
		// SetvletResponse 객체, 즉 웹 브라우저로 전송하는 스트림
		response.setContentType(&quot;text/html; charset=EUC-KR&quot;); // 최상위
		PrintWriter out = response.getWriter();
		StringBuffer sb = new StringBuffer();
		sb.append(&quot;&amp;lt;!DOCTYPE html&amp;gt;&quot;);
		sb.append(&quot;&amp;lt;html&amp;gt;&quot;);
		 sb.append(&quot;&amp;lt;head&amp;gt;&quot;);
		  sb.append(&quot;&amp;lt;meta charset=\&quot;euc-kr\&quot;&amp;gt;&quot;);
		  sb.append(&quot;&amp;lt;title&amp;gt; 구구단&quot;).append(&quot;&amp;lt;/title&amp;gt;&quot;);
		 sb.append(&quot;&amp;lt;/head&amp;gt;&quot;);
		 sb.append(&quot;&amp;lt;body&amp;gt;&quot;);
		  sb.append(&quot;&amp;lt;table border=\&quot;1\&quot;&amp;gt;&quot;);

		  // tr 태그는 하나의 row, td는 하나의 column
		  // &amp;lt;td&amp;gt;데이터&amp;lt;/td&amp;gt;
		  // 최소한 한개의 td는 반드시 한개의 tr로 이루어진다
		  for (int i=0; i&amp;lt;=9; i++) {
			  sb.append(&quot;&amp;lt;tr&amp;gt;&quot;);	  
			  for (int j=2; j&amp;lt;=9; j++) {
				  if(i == 0) {
					  sb.append(&quot;&amp;lt;td&amp;gt;&quot;).append(j);
					  sb.append(&quot;단&quot;);
					  sb.append(&quot;&amp;lt;/td&amp;gt;&quot;);  
				  } else {
					  sb.append(&quot;&amp;lt;td&amp;gt;&quot;).append(j);
					  sb.append(&quot;x&quot;).append(i);
					  sb.append(&quot;=&quot;).append(i*j);
					  sb.append(&quot;&amp;lt;/td&amp;gt;&quot;);
				  }
			  }
			  sb.append(&quot;&amp;lt;/tr&amp;gt;&quot;);
		  }
		  sb.append(&quot;&amp;lt;/table&amp;gt;&quot;);
		 sb.append(&quot;&amp;lt;/body&amp;gt;&quot;);
		sb.append(&quot;&amp;lt;/html&amp;gt;&quot;);
		out.println(sb.toString());
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;- cgi : C언어 기반으로 웹 어플리케이션을 처리&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;프로세스 단위로 이루어져 있다. 단점 : 무겁고 어렵다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;lt;Thread 기반&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- php : 인터프리터 기반, Apache의 웹 어플리케이션 모듈&lt;/p&gt;
&lt;p&gt;- asp : 비주얼 베이직 기반의 웹 어플리케이션&lt;/p&gt;
&lt;p&gt;- servletJSP : 자바 기반의 스레드 단위로 동작하는 웹 어플리케이션&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-0a32e727-a562-46a8-87d9-e04d3765ddc0&quot;&gt;- Servlet의 기본 아키텍처와 JSP&lt;/p&gt;
&lt;p id=&quot;SE-6b5907c2-590a-4fb6-80af-127a21f7c149&quot;&gt;- JSP 표기법 - 스크립트 릿 방식&lt;/p&gt;
&lt;p id=&quot;SE-d05a5a4f-df0e-4b1e-987c-43fd16c2d73f&quot;&gt;- JSP 개발 방법 : Model1, Model2 , 패턴 - &amp;gt; MVC 패턴&lt;/p&gt;
&lt;p id=&quot;SE-f3be576b-2f2d-4a01-81d9-79a46515f808&quot;&gt;- JSP 내장 API : request,respose =&amp;gt;&lt;/p&gt;
&lt;p id=&quot;SE-422df6b9-2754-41df-919a-d4a45196f7d1&quot;&gt;- JSP Scope&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;26.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;502&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XlIx7/btq0Q8JOiin/Lf2nMbcBNR8Q3zgzE72Us1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XlIx7/btq0Q8JOiin/Lf2nMbcBNR8Q3zgzE72Us1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XlIx7/btq0Q8JOiin/Lf2nMbcBNR8Q3zgzE72Us1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXlIx7%2Fbtq0Q8JOiin%2FLf2nMbcBNR8Q3zgzE72Us1%2Fimg.png&quot; data-filename=&quot;26.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;502&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;***** &amp;lt; 웹 라이프사이클&amp;gt; *****&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;클라이언트가 요청&lt;/span&gt;을 한다.&lt;/p&gt;
&lt;p&gt;2. web.xml에서 해당 요청의 url을 확인한 후에 요청으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;매핑 된 Servlet을 최초로 생성&lt;/span&gt;한다&lt;/p&gt;
&lt;p&gt;&amp;nbsp;(톰 캣이 처음 시작되었을 때...)&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 2-1. &lt;span style=&quot;color: #ee2323;&quot;&gt;WAS&lt;/span&gt;는 무조건 새로운 요청이 왔을 때 &lt;span style=&quot;color: #ee2323;&quot;&gt;HttpServletRequest, HttpServletResponse를 생성&lt;/span&gt;해둔다.&lt;/p&gt;
&lt;p&gt;3. init() 을 호출한다. - 서블릿 객체 초기화&lt;/p&gt;
&lt;p&gt;4. service() 를 호출할 때 2-1에서 생성해둔 두 객체를 인자값으로 전달하면서 호출한다. (Thread)&lt;/p&gt;
&lt;p&gt;5. service() 에서 분석 된 전송방식(get,post)에 따라서 doXXX 메서드를 호출하면서&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp; HttpServletRequest, HttpServletResponse 를 전달하게 된다.&lt;/p&gt;
&lt;p&gt;6. doGet() 이나 doPost()를 통해서 할일을 하고(비지니스 로직)&lt;/p&gt;
&lt;p&gt;7. Response 객체를 통해서 브라우저로 전송한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;============================================&lt;/p&gt;
&lt;p id=&quot;SE-0247570f-8fec-41f2-a54c-466a779205e4&quot;&gt;&lt;b&gt;HTTP 프로토콜 (웹 서버) - &lt;span style=&quot;color: #ee2323;&quot;&gt;HttpRequest,&amp;nbsp;HttpResponse&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-895b1737-e7d8-4587-be3a-f397c9efe161&quot;&gt;■ HTTP 프로토콜은 웹 서버와 웹 브라우저사이의 통신에 사용하는 프로토콜이다.&lt;/p&gt;
&lt;p id=&quot;SE-3deb5b28-f3b4-4a44-8b61-535167603c5f&quot;&gt;■ HTTP 프로토콜은 요청(Request)과 응답(Response)으로 이루어진 프로토콜이다.&lt;/p&gt;
&lt;p id=&quot;SE-8b1a3806-64a0-412f-8666-1f0ea36d241e&quot;&gt;■ HTTP 요청은 HTTP 메소드, 요청 URL, 서버에 전달한 정보로 이루어져 있다.&lt;/p&gt;
&lt;p id=&quot;SE-cff1e0f5-db0a-4b50-b624-39de72642c94&quot;&gt;■ HTTP 응답은 요청에 대한 서버의 응답으로서 상태코드, 컨텐츠 타입정보, 컨텐츠로 구성되어 있다.&lt;/p&gt;
&lt;p id=&quot;SE-ea18a001-ca5b-49bf-a909-43ebb3a0d570&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-2187ea18-e58b-43a6-a0ed-502c4c36780a&quot;&gt;&lt;b&gt;Web Container (웹 컨테이너, WAS) - &lt;span style=&quot;color: #ee2323;&quot;&gt;HttpServletRequest,&amp;nbsp;HttpServletResponse&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-079fde53-96fd-4f28-9f80-c6328b7ed11a&quot;&gt;■ 컨테이너는 웹서버와 서블릿 사이의 통신을 지원한다.&lt;/p&gt;
&lt;p id=&quot;SE-8807f2a9-4f0f-47d3-8a88-2c849fc37f6f&quot;&gt;■ 컨테이너는 서블릿의 생명주기를 관리한다.&lt;/p&gt;
&lt;p id=&quot;SE-564da448-5ea2-4056-a6bc-89a3a89bb517&quot;&gt;■ 컨테이너는 새로운 요청이 들어올 때 마다 자바 스레드를 생성해서 사용자의 요청을 처리한다.&lt;/p&gt;
&lt;p id=&quot;SE-618d4417-ba87-495b-a56d-d33b328592b5&quot;&gt;■ 컨테이너는 선언적인 방법으로 보안관련 내용을 설정할 수 있다.&lt;/p&gt;
&lt;p&gt;-&amp;gt; 사용자의 요청을 대기하는 스레드를 통해서 Servlet을 관리한다&lt;/p&gt;
&lt;p id=&quot;SE-ca5b0de5-b1c0-4c1a-984a-eb4917ce3c25&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-87e64c58-30be-468f-ac87-6d2fde322401&quot;&gt;&lt;b&gt;서블릿&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-21ff4c30-124e-4476-853a-f65effff5bb6&quot;&gt;■ 서블릿은 웹 서버에서 실행되는 자바 프로그램이다. (톰캣[WAS]에서 관리되는..)&lt;/p&gt;
&lt;p id=&quot;SE-bb194b25-c9d7-4ebe-a9ee-ea01a117dcc9&quot;&gt;■ 서블릿은 사용자의 요구에 따라서 동적으로 웹 컨텐츠를 생산해서 클라이언트 측에 전송하는 자바 기술이다.&lt;/p&gt;
&lt;p id=&quot;SE-2c6714bb-2685-403f-a9be-0b17e3738552&quot;&gt;■ javax.servlet.http.HttpServlet 클래스를 상속받아서 사용자정의 서블릿 프로그램을 작성한다.&lt;/p&gt;
&lt;p id=&quot;SE-d8d37608-17c2-4e2e-8742-d898cd292a21&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8f4fe38e-dfa6-427b-970d-20b53311b404&quot;&gt;&lt;b&gt;서블릿의 실행과정&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fc68224c-0e27-4a12-a51f-8be8ca40d0da&quot;&gt;■ 사용자가 url을 클릭해서 컨테이너(ex.톰캣)에 새로운 요청을 한다.&lt;/p&gt;
&lt;p id=&quot;SE-3249399e-f80b-4c17-958f-8941a5c0fcf2&quot;&gt;■ 컨테이너는 요청을 접수한 다음, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;HttpServletRequest와 HttpServletResponse&lt;/u&gt;&lt;/span&gt;&lt;/b&gt; 객체를 생성한다.&lt;/p&gt;
&lt;p id=&quot;SE-ffe22251-42a3-4462-b74f-86d8721d1a39&quot;&gt;■ 접수된 url을 분석해서 해당 서블릿 객체를 생성하고, 사용자의 요청을 처리하기 위해 스레드를 생성한다.&lt;/p&gt;
&lt;p id=&quot;SE-750291d4-0d3a-4197-b912-e48b308eb98f&quot;&gt;■ 서블릿의 service() 메소드를 호출하고, 요청방식에 따라서 어떤 메소드를 호출할지 결정한다. get, post&lt;/p&gt;
&lt;p id=&quot;SE-bc063642-dd75-49e7-8352-a9430fd2e436&quot;&gt;■ 서블릿의 doGet()메소드를 호출해서 사용자의 요청을 처리하고, 응답을 작성한다.&lt;/p&gt;
&lt;p id=&quot;SE-0deaa270-08fd-4be0-84ba-5706490d2633&quot;&gt;■ 작성된 응답을 클라이언트에 전송한다.&lt;/p&gt;
&lt;p id=&quot;SE-b3d4078d-8bf8-4d1c-9303-cc029a436742&quot;&gt;■ 사용자의 요청을 처리하기 위해 생성한 스레드를 소멸시킨다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;배포 서술자(web.xml)&lt;/b&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fd09d57e-8220-4028-b08c-13df6a619204&quot;&gt;■ 배포 서술자는 서블릿과 jsp를 어떻게 실행하는냐에 관한 정보가 들어있다.&lt;/p&gt;
&lt;p id=&quot;SE-4288fe0c-6019-4a8e-8159-4063b1fe76d0&quot;&gt;■ 배포 서술자에서는 서블릿과 URL을 매핑시키는 작업을 한다.&lt;/p&gt;
&lt;p id=&quot;SE-dd3c2063-21bd-479a-b264-4e04748d014b&quot;&gt;■ 배포 서술자는 URL 매핑외에 보안역할 설정, 오류 페이지 설정, 초기화 구성&lt;/p&gt;
&lt;p id=&quot;SE-7c4c9428-178a-4924-a5fd-d622595f58b4&quot;&gt;등의 내용을 설정할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/39</guid>
      <comments>https://sw-diary21.tistory.com/39#entry39comment</comments>
      <pubDate>Mon, 22 Mar 2021 20:02:41 +0900</pubDate>
    </item>
    <item>
      <title>[세미 프로젝트] 4. GUI 제작 및 테이블, DTO 설계, 추상메서드</title>
      <link>https://sw-diary21.tistory.com/33</link>
      <description>&lt;p&gt;&lt;span&gt;일시 : 2021년 3월 13일(토) 오후 2시 30분 4차 회의&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-86c93d35-fc24-4d65-b077-0df5018a11eb&quot; data-ke-size=&quot;size18&quot;&gt;시간 : 4시간&lt;/p&gt;
&lt;p id=&quot;SE-8330fde0-305c-4c28-8cdf-6170cf56e3da&quot; data-ke-size=&quot;size18&quot;&gt;내용 :&lt;span&gt; &lt;/span&gt;&lt;b&gt;GUI&amp;nbsp;제작&amp;nbsp;및&amp;nbsp;테이블,&amp;nbsp;DTO&amp;nbsp;설계,&amp;nbsp;추상메서드&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;토요일 팀원 모두 강의실에 같이 바로바로 의견나누며 GUI와 테이블 제작해보기 위해 모였습니다.&lt;/p&gt;
&lt;p&gt;김미연님과 홍영의님이 GUI를 제작하셨고 이건님, 윤하늘님, 윤상필 3명이서 테이블 구성 및 추상메서드를&lt;/p&gt;
&lt;p&gt;정의해보았습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1615812670433&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-------고객정보 테이블
create table customer(
cnum number,
cname varchar2(35)constraint customer_cname_nn not null, 
cphone varchar2(30) constraint customer_cphone_nn not null, 
caddr varchar2(100),
constraint customer_cnum_pk primary key(cnum),
constraint customer_cphone_uq unique(cphone)
 );
create sequence customer_seq
increment by 1
start with 1;
--------관리자 계정
insert into customer values(customer_seq.nextval,'admin','kosmo7979','');   --마지막 칸에 null값이 들어간다
--------관리자 계정 확인
select cnum 고객번호, cname 고객명, cphone 고객연락처, caddr 주소 from customer;
/*  -- 실행 오류
insert into customer 
(cnum,cname,cphone)
values(customer_seq.nextval,'kosmo79','kosmo7979');
*/
-------제품 테이블
create table product(
pronum number,
proname varchar2(100) constraint product_proname_nn not null,
proprice number(20) constraint product_proprice_nn not null,
prostock number(7) constraint product_prostock_nn not null,
constraint product_pronum_pk primary key(pronum),
constraint product_proname_uq unique(proname)
);
create sequence product_seq
increment by 1
start with 1;

-------제품 입력
insert into product values(product_seq.nextval,'새우깡', 1500, 150);
insert into product values(product_seq.nextval,'자갈치', 1500, 150);
insert into product values(product_seq.nextval,'감자깡', 1500, 150);
insert into product values(product_seq.nextval,'고구마깡', 1500, 150);
insert into product values(product_seq.nextval,'치토스', 1500, 150);
insert into product values(product_seq.nextval,'바나나킥', 1500, 150);
insert into product values(product_seq.nextval,'홈런볼', 1500, 150);
insert into product values(product_seq.nextval,'커피', 1200, 150);
insert into product values(product_seq.nextval,'홍차', 800, 150);
insert into product values(product_seq.nextval,'프링글스', 4500, 150);
insert into product values(product_seq.nextval,'핫바', 1800, 150);
insert into product values(product_seq.nextval,'떢볶이', 3500, 150);
insert into product values(product_seq.nextval,'뿌셔뿌셔', 1500, 150);
insert into product values(product_seq.nextval,'빼빼로', 1000, 150);
insert into product values(product_seq.nextval,'사이다', 1200, 150);
insert into product values(product_seq.nextval,'콜라', 1400, 150);
insert into product values(product_seq.nextval,'환타', 1100, 150);
insert into product values(product_seq.nextval,'맥콜', 800, 150);
insert into product values(product_seq.nextval,'여명', 4500, 150);
insert into product values(product_seq.nextval,'햇반', 2500, 150);
insert into product values(product_seq.nextval,'삼각김밥', 1200, 150);
insert into product values(product_seq.nextval,'김밥', 2000, 150);
insert into product values(product_seq.nextval,'샌드위치', 2000, 150);
insert into product values(product_seq.nextval,'도시락', 4800, 150);
insert into product values(product_seq.nextval,'손톱깍이', 2800, 150);
insert into product values(product_seq.nextval,'소독약', 1600, 150);
insert into product values(product_seq.nextval,'라면', 800, 150);
insert into product values(product_seq.nextval,'타이레놀', 3000, 150);
insert into product values(product_seq.nextval,'문화상품권', 10000, 150);
insert into product values(product_seq.nextval,'핸드폰 충전기', 7000, 150);
commit;

--제품입력 확인
select pronum 상품코드, proname 상품명, proprice 가격, prostock 수량 from product;


&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bT04tk/btqZ9DEUFZu/Oau3keFHesRKWjdMNSKFFk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/3JwyO/btqZ3f564LC/ykdr6ROlGIoc0meqSnoRlK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/upoa3/btqZ4zwnTCX/vUk7WMplVEHKOdpGpk2RWk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bdu9k4/btq0doNNoCS/f5ZZR1KR0vKYh1HyJ3pxJ0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cH0Dhx/btqZ6jGVn36/vZLnZ9jbjykhGpigKcOvxK/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/2BpjV/btq0fkjNBmL/17iwyOqNlHID9k6ZSlKMv0/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/sUbMo/btqZ9ClICDC/ciQkTOhsEgTRpY3TTa2C4k/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT04tk/btqZ9DEUFZu/Oau3keFHesRKWjdMNSKFFk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bT04tk/btqZ9DEUFZu/Oau3keFHesRKWjdMNSKFFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT04tk/btqZ9DEUFZu/Oau3keFHesRKWjdMNSKFFk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT04tk%2FbtqZ9DEUFZu%2FOau3keFHesRKWjdMNSKFFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3JwyO/btqZ3f564LC/ykdr6ROlGIoc0meqSnoRlK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/3JwyO/btqZ3f564LC/ykdr6ROlGIoc0meqSnoRlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3JwyO/btqZ3f564LC/ykdr6ROlGIoc0meqSnoRlK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3JwyO%2FbtqZ3f564LC%2Fykdr6ROlGIoc0meqSnoRlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/upoa3/btqZ4zwnTCX/vUk7WMplVEHKOdpGpk2RWk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/upoa3/btqZ4zwnTCX/vUk7WMplVEHKOdpGpk2RWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/upoa3/btqZ4zwnTCX/vUk7WMplVEHKOdpGpk2RWk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fupoa3%2FbtqZ4zwnTCX%2FvUk7WMplVEHKOdpGpk2RWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdu9k4/btq0doNNoCS/f5ZZR1KR0vKYh1HyJ3pxJ0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bdu9k4/btq0doNNoCS/f5ZZR1KR0vKYh1HyJ3pxJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdu9k4/btq0doNNoCS/f5ZZR1KR0vKYh1HyJ3pxJ0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdu9k4%2Fbtq0doNNoCS%2Ff5ZZR1KR0vKYh1HyJ3pxJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cH0Dhx/btqZ6jGVn36/vZLnZ9jbjykhGpigKcOvxK/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cH0Dhx/btqZ6jGVn36/vZLnZ9jbjykhGpigKcOvxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cH0Dhx/btqZ6jGVn36/vZLnZ9jbjykhGpigKcOvxK/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcH0Dhx%2FbtqZ6jGVn36%2FvZLnZ9jbjykhGpigKcOvxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2BpjV/btq0fkjNBmL/17iwyOqNlHID9k6ZSlKMv0/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/2BpjV/btq0fkjNBmL/17iwyOqNlHID9k6ZSlKMv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2BpjV/btq0fkjNBmL/17iwyOqNlHID9k6ZSlKMv0/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2BpjV%2Fbtq0fkjNBmL%2F17iwyOqNlHID9k6ZSlKMv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sUbMo/btqZ9ClICDC/ciQkTOhsEgTRpY3TTa2C4k/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/sUbMo/btqZ9ClICDC/ciQkTOhsEgTRpY3TTa2C4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sUbMo/btqZ9ClICDC/ciQkTOhsEgTRpY3TTa2C4k/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsUbMo%2FbtqZ9ClICDC%2FciQkTOhsEgTRpY3TTa2C4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;span data-index=&quot;5&quot;&gt;5&lt;/span&gt;&lt;span data-index=&quot;6&quot;&gt;6&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>JAVA/Study</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/33</guid>
      <comments>https://sw-diary21.tistory.com/33#entry33comment</comments>
      <pubDate>Mon, 15 Mar 2021 22:01:07 +0900</pubDate>
    </item>
    <item>
      <title>넷빈즈(NetBeans) 소스 비교 기능</title>
      <link>https://sw-diary21.tistory.com/27</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;넷빈즈 소스 비교.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;750&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0qmeU/btqZKBafsFm/tEdM8M9g1vlVH7tVvEpkR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0qmeU/btqZKBafsFm/tEdM8M9g1vlVH7tVvEpkR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0qmeU/btqZKBafsFm/tEdM8M9g1vlVH7tVvEpkR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0qmeU%2FbtqZKBafsFm%2FtEdM8M9g1vlVH7tVvEpkR1%2Fimg.png&quot; data-filename=&quot;넷빈즈 소스 비교.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;750&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>JAVA/Tip</category>
      <author>Feels_Good</author>
      <guid isPermaLink="true">https://sw-diary21.tistory.com/27</guid>
      <comments>https://sw-diary21.tistory.com/27#entry27comment</comments>
      <pubDate>Wed, 10 Mar 2021 21:28:20 +0900</pubDate>
    </item>
  </channel>
</rss>