<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>gummistory_it.log</title>
        <link>https://velog.io/</link>
        <description>비전공자의 개발일기</description>
        <lastBuildDate>Thu, 22 Aug 2024 06:44:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. gummistory_it.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/gummistory_it" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[오버로딩과 오버라이딩]]></title>
            <link>https://velog.io/@gummistory_it/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</link>
            <guid>https://velog.io/@gummistory_it/%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</guid>
            <pubDate>Thu, 22 Aug 2024 06:44:17 GMT</pubDate>
            <description><![CDATA[<h2 id="오버로딩-overloading">오버로딩 (OverLoading)</h2>
<p><strong>특징</strong></p>
<ul>
<li>같은 이름의 메서드를 여러 개 정의</li>
<li>매개변수의 타입, 개수, 순서가 달라야함</li>
<li>반환 타입은 달라도 상관 없음</li>
<li>컴파일 타임에 결정됨</li>
</ul>
<h3 id="예시-코드"><strong>예시 코드:</strong></h3>
<pre><code class="language-java">public class Example {
    void print(int a) {
        System.out.println(&quot;Integer: &quot; + a);
    }

    void print(String a) {
        System.out.println(&quot;String: &quot; + a);
    }
}
</code></pre>
<h2 id="오버라이딩-overriding">오버라이딩 (Overriding)</h2>
<p><strong>특징</strong></p>
<ul>
<li>상위 클래스의 메서드오ㅘ 동일한 시그니처를 가짐</li>
<li>접근 제어자는 상위 클래스보다 넓거나 동일해야 함</li>
<li>런타임에 결정됨 </li>
<li>부모 클래스에서 정의된 메서드를 자식 클래스에서 재정의 하는 것 </li>
</ul>
<pre><code class="language-java">class Animal {
    void sound() {
        System.out.println(&quot;Animal makes a sound&quot;);
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println(&quot;Dog barks&quot;);
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[가비지 컬렉션이란 ?]]></title>
            <link>https://velog.io/@gummistory_it/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@gummistory_it/%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%EC%85%98%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 22 Aug 2024 06:32:47 GMT</pubDate>
            <description><![CDATA[<h2 id="가비지-컬렉션이란-">가비지 컬렉션이란 ?</h2>
<p>-&gt; 자바에서 메모리 관리를 자동으로 처리하는 중요한 기능</p>
<p>자바 프로그램이 실행되면 객체는 heap 메모리에 생성된다. 
힙 메모리에 생성된 객체들은 프로그램에서 참조되며, 참조되지 않는 객체는 더 이상 사용되지 않는 객체로 간주된다. </p>
<p>Stop - the - World :
가비지 컬렉션이 실행될 때는 모든 애플리케이션 스레드가 멈추고, 가비지 컬렉션 작업이 진행된다. 
이를 Stop - the - World라고 한다. </p>
<p>자바가 실행되는 JVM에서 사용되는 객체, 즉 Heap 영역의 객체를 관리해 주는 기능을 말한다. 
이 과정에서 stop the world가 일어나게 되며, 이 일련 과정을 효율적으로 하기 위해서는 카비지 컬렉터 변경 또는 세부 값 조정이 필요하다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[요구사항 정의 ]]></title>
            <link>https://velog.io/@gummistory_it/%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EC%A0%95%EC%9D%98</link>
            <guid>https://velog.io/@gummistory_it/%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EC%A0%95%EC%9D%98</guid>
            <pubDate>Thu, 18 Jul 2024 17:12:36 GMT</pubDate>
            <description><![CDATA[<h2 id="요구사항-개념">요구사항 개념</h2>
<p><strong>요구사항</strong>은 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 운영되는데 필요한 제약 조건이다. </p>
<h2 id="요구사항의-유형">요구사항의 유형</h2>
<ul>
<li>기능 요구사항(Functional requirements)</li>
<li>비기능 요구사항 (Non-functional requirements)</li>
<li>사용자 요구사항(User requirements)</li>
<li>시스템 요구사항 (System requirements)</li>
</ul>
<hr>
<h2 id="기능-요구사항-functional-requirements">기능 요구사항 (Functional requirements)</h2>
<p>: 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 <span style="color:red">기능이나 수행과 관련된 요구사항</span>이다.
: 사용자가 시스템을 통해 제공받기를 원하는 기능
: 시스템이 어떤 데이터를 저장하거나 연산을 수행해야 하는지에 대한 사항
: 시스템이 반드시 수행해야 하는 기능
ex) 사용자는 회원 ID와 비밀번호를 입력하여 로그인 할 수 있다.
    금융 시스템은 조회, 인출, 송금의 기능이 있어야함 </p>
<hr>
<h2 id="비기능-요구사항non-functional-requirements">비기능 요구사항(Non-functional requirements)</h2>
<p>: 비기능 요구사항은 <span style="color:red">품질이나 제약사항과 관련된 요구사항</span>이다. 
: 시스템 장비 구성 요구사항
: 성능, 인터페이스 요구사항
: 데이터를 구추가기 위해 필요한 요구사항
: 테스트, 보안 요구사항
: 품질 요구사항 -&gt; 가용성, 정합성, 상호 호환성, 이식성, 확장성 등
: 제약사항
: 프로젝트 관리/자원 요구사항 </p>
<p>ex) 시스템은 1년 365일, 하루 24시간 운용이 가능해야 한다. 
    시스템의 처리량, 반응시간드으이 성능이나 품질 요구사항
    차량 대여 시스템이 제공하는 모든 화면이 3초 이내에 사용자에게 보여야함(성능 요구사항)</p>
<hr>
<h2 id="사용자-요구사항user-requirements">사용자 요구사항(User requirements)</h2>
<p>: 사용자 요구사항은 <span style="color:red">사용자 관점에서 본 시스템이 제공해야 할 요구사항</span>이다.
: 자언어, 친숙한 표현으로 이해하기 쉬움</p>
<hr>
<h2 id="시스템-요구사항system-requirements">시스템 요구사항(System requirements)</h2>
<p>: 시스템 요구사항은 <span style="color:red">개발자 관점애서 본 시스템 전체가</span>사용자와 다른 시스템에 <span style="color:red">제공해야 할 요구사항</span> 이다.
: 소프트웨어 요구사항
: 기술적 용어 이용으로 인하여 사용자가 이해하기 어려움 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[다형성을 이용한 객체 생성 ]]></title>
            <link>https://velog.io/@gummistory_it/%EB%8B%A4%ED%98%95%EC%84%B1%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@gummistory_it/%EB%8B%A4%ED%98%95%EC%84%B1%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Thu, 18 Jul 2024 08:41:07 GMT</pubDate>
            <description><![CDATA[<p>우선, polymorphism package를 하나 생성한다. </p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/f5263060-cdd3-4e4d-aa13-13db0dce920f/image.png" alt=""></p>
<p>polymorphism -&gt; TV.java 인터페이스 생성</p>
<pre><code class="language-java">package polymorphism;

public interface TV {
    public void powerOn();

    public void powerOff();

    public void volumeUp();

    public void volumeDown();
}</code></pre>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/5a0da663-4890-4d8f-ad00-6a3911484d1e/image.png" alt=""></p>
<p>TV 소리를 출력해줄 Speak 인터페이스도 생성 </p>
<pre><code class="language-java">package polymorphism;

public interface Speaker {

    void volumeUp();

    void volumeDown();

}
</code></pre>
<p>polymorphism -&gt; SamsungTV.java class 생성</p>
<pre><code class="language-java">package polymorphism;

public class SamsungTV implements TV{

    @Override
    public void powerOn() {
        System.out.println(&quot;SamsungTV 전원을 켠다.&quot;);
    }

    @Override
    public void powerOff() {
        System.out.println(&quot;SamsungTV 전원을 끈다.&quot;);
    }

    @Override
    public void volumeUp() {
        System.out.println(&quot;SamsungTV 볼륨을 올린다.&quot;);
    }

    @Override
    public void volumeDown() {
        System.out.println(&quot;SamsungTV 볼륨을 내린다.&quot;);
    }</code></pre>
<p>polymorphism -&gt; LgTV.java 클래스 생성 </p>
<pre><code class="language-java">package polymorphism;

public class LgTV implements TV {

    @Override
    public void powerOn() {
        System.out.println(&quot;LgTV 전원을 켠다.&quot;);
    }

    @Override
    public void powerOff() {
        System.out.println(&quot;LgTV 전원을 끈다.&quot;);
    }

    @Override
    public void volumeUp() {
        System.out.println(&quot;LgTV 볼륨을 올린다.&quot;);
    }

    @Override
    public void volumeDown() {
        System.out.println(&quot;LgTV 볼륨을 내린다.&quot;);
    }
}</code></pre>
<p>TVuser.java 클래스 생성</p>
<pre><code class="language-java">package polymorphism;

public class TVuser {
    public static void main(String[] args) {
        TV tv = new SamsungTV();
        tv.powerOn();
        tv.volumeUp();
        tv.volumeDown();
        tv.powerOff();

        System.out.println();

        TV tv = new LgTV();
        tv.powerOn();
        tv.volumeUp();
        tv.volumeDown();
        tv.powerOff();
            /*
                SamsungTV 전원을 켠다.
                SamsungTV 볼륨을 올린다.
                SamsungTV 볼륨을 내린다.
                SamsungTV 전원을 끈다.

                LgTV 전원을 켠다.
                LgTV 볼륨을 올린다.
                LgTV 볼륨을 내린다.
                LgTV 전원을 끈다.
             */
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[정보처리기사] 코드리뷰-1]]></title>
            <link>https://velog.io/@gummistory_it/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0-1</link>
            <guid>https://velog.io/@gummistory_it/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%BD%94%EB%93%9C%EB%A6%AC%EB%B7%B0-1</guid>
            <pubDate>Tue, 16 Jul 2024 16:28:45 GMT</pubDate>
            <description><![CDATA[<pre><code>str = &#39;Sinagong&#39;
n = len(Str)  
st = list()
for k in range(n):
    st.append(str[k])
for k in range(n-1, -1, -1):
    print(st[k], end=&quot;)</code></pre><p><span style="background-color: rgba(242,179,188,0.5)">n = len(Str)</span> -&gt; 문자열 변수 str 길이인 8을 변수 n의 초기값으로 할당한다. </p>
<p>--&gt; 그래서 n = 8 (Sinagong 글자수)</p>
<blockquote>
<p>💻   <span style ="color : red">len()</span>은 문자열이나 배열의 길이를 반환</p>
</blockquote>
<p><span style="background-color: rgba(242,179,188,0.5)">st = list()</span> -&gt; 변수 st를 비어있는 리스트로 선언한다.</p>
<p><span style="background-color: rgba(242,179,188,0.5)">for k in range(n)</span> -&gt; 반복문 for문, n에 8을 넣어야 하지만 최종값 n-1 하여 7을 대입한다. 0<del>7까지 반복할 예정
<span style="background-color: rgba(242,179,188,0.5)">st.append(str[k])</span> -&gt; 0</del>7까지 반복하여 비어있는 st에 값을 추가한다. </p>
<blockquote>
<p>💻 append :추가</p>
</blockquote>
<p>= Sinagong </p>
<hr>
<p><span style="background-color: rgba(242,179,188,0.5)">for k in range(n-1, -1, -1):</span> -&gt; (반복문) range(초기값, 최종값, 증가값) 이므로 </p>
<p>n-1 = 8-1 = 7 ,
-1(최종값) = 증가값이 음수이므로 +1 = -1+1 = 0
-1(증가값) = -1씩 감소한다. </p>
<p><strong>=&gt; 7부터 0까지 -1씩 감소한다.</strong> </p>
<p><span style="background-color: rgba(242,179,188,0.5)">print(st[k], end=&quot;)</span> -&gt; 문자열을 가로로 나열해서 출력.</p>
<p><strong>정답=&gt; gnoganiS</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring lombok 배포]]></title>
            <link>https://velog.io/@gummistory_it/Spring-lombok-%EB%B0%B0%ED%8F%AC</link>
            <guid>https://velog.io/@gummistory_it/Spring-lombok-%EB%B0%B0%ED%8F%AC</guid>
            <pubDate>Tue, 16 Jul 2024 08:35:50 GMT</pubDate>
            <description><![CDATA[<h3 id="spring-lombok-셋팅">Spring lombok 셋팅</h3>
<p>lombok.jar 다운로드 </p>
<blockquote>
<p>명령어 -&gt; java -jar lombok.jar</p>
</blockquote>
<p>ide 선택 </p>
<p>/Application/STS.app
<img src="https://velog.velcdn.com/images/gummistory_it/post/cb8a3fa5-e230-4a9c-a23c-8ecc9d7c70dd/image.png" alt=""></p>
<h3 id="앱-→-패키지-내용-보기-→-contents-→-eclipse-→-stsini">앱 → 패키지 내용 보기 → Contents → Eclipse → STS.ini</h3>
<p>✢ 밑줄 친 부분 보면 lombok이 잘 들어온 걸 알 수 있음. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/d2edf525-e842-4751-97eb-a4bcf7e2f60f/image.png" alt=""></p>
<h3 id="maven-설정">Maven 설정</h3>
<p>MVN REPOSITORY 사이트에서 lombok 검색 </p>
<p><a href="https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24">https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24</a></p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/ca35ff18-0afe-43ad-b53c-57bf4c00f0ab/image.png" alt="">
Maven 코드 <strong>copy !</strong></p>
<pre><code>&lt;!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
    &lt;artifactId&gt;lombok&lt;/artifactId&gt;
    &lt;version&gt;1.18.24&lt;/version&gt;
    &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
</code></pre><h3 id="pomxml">pom.xml</h3>
<p>들어가서 dependencies → 사이에 복사한 코드 붙여넣기 </p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/78eb998d-f8b5-49fc-897d-13a5e8e891be/image.png" alt=""></p>
<p>Maven Dependencies 클릭 후 룸북 들어왔는지 확인<br><img src="https://velog.velcdn.com/images/gummistory_it/post/c362a124-2917-469a-8cd2-8de7ed5798c1/image.png" alt=""></p>
<p>lombok 배포 완료 ! 이클립스와 다르니 주의 하기😌</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OJDBC6.jar 배포]]></title>
            <link>https://velog.io/@gummistory_it/OJDBC6.jar-%EB%B0%B0%ED%8F%AC</link>
            <guid>https://velog.io/@gummistory_it/OJDBC6.jar-%EB%B0%B0%ED%8F%AC</guid>
            <pubDate>Tue, 16 Jul 2024 08:26:28 GMT</pubDate>
            <description><![CDATA[<p>Build Path → Configure Build Path → add External class folder ojdbc6.jar 선택 (→ m1 이라 ojdbc11.jar 이용 했습니다.)
<img src="https://velog.velcdn.com/images/gummistory_it/post/776cfa1a-ae80-4d2a-9c97-5ee35e141b89/image.png" alt=""></p>
<p>라이브러리 → Add Extrernal Class Folder → ojdbc11.jar</p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/9aa34c9c-a517-4843-89ff-6f01b894685a/image.png" alt=""><img src="https://velog.velcdn.com/images/gummistory_it/post/48d92387-63a0-4baa-a852-67df5d56ea59/image.png" alt=""></p>
<p>배포 완료 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring이란 ?]]></title>
            <link>https://velog.io/@gummistory_it/Spring%EC%9D%B4%EB%9E%80-1i7wwtzx</link>
            <guid>https://velog.io/@gummistory_it/Spring%EC%9D%B4%EB%9E%80-1i7wwtzx</guid>
            <pubDate>Tue, 16 Jul 2024 00:39:10 GMT</pubDate>
            <description><![CDATA[<h3 id="spring-이란-"><strong>Spring 이란 ?</strong></h3>
<p>→ java의 웹 프레임워크로 java 언어를 기반으로 사용한다. </p>
<p>→ java로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.</p>
<hr>
<h3 id="스프링-프레임워크의-특징">스프링 프레임워크의 특징</h3>
<ol>
<li><p><strong>IoC (Inversion of Control, 제어 반전)</strong></p>
<p> 개발자는 java 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성 , 소멸 시킨다. </p>
<p> 제어권이 개발자가 아닌 IoC에 있으며, IoC가 개발자의 코드를 호출해 필요한 객체를 생성, 소멸 하며 생명주기를 관리하는 것이다.</p>
</li>
</ol>
<ol start="2">
<li><p><strong>DI(Dependency Injection 의존성 주입)</strong></p>
<p>프로그램에서 구성 요소의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의 되는 방식, 코드 간의 재사용을 높이고 모듈간의 결합도를 낮출 수 있다. </p>
<p>대표적으로 라이브러리나 API, 프레임워크를 연동 할 떄 연결하는 소스코드를 직접 작성하는게 아닌 외부 파일을 연결해 불러오는 방식이다.</p>
</li>
</ol>
<ol start="3">
<li><p><strong>POJO(Plain Old Java Object) 방식</strong></p>
<p>다른 클래스나 인터페이스를 상속/implements 받아 메서드가 추가된 클래스가 아닌 일반적으로 우리가 알고 있는 getter, setter 같이기본적인 기능만 가진 자바 객체를 말한다.</p>
</li>
</ol>
<hr>
<h3 id="어노테이션방식의-bean-등록">어노테이션방식의 bean 등록</h3>
<p>@Component 스캔 : 일반 클래스 </p>
<p>@Service : 비즈니스 로직 (xxxServiceImpl) → 인터페이스와 클래스가 상속되게 만들어짐 ( 확장성으로 인하여 ) </p>
<p>@Repository : 데이터 베이스 처리 (xxxDAO)</p>
<p>@Controller : 사용자의 요청을 처리 (xxxController)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Meta Developer 이용 방법]]></title>
            <link>https://velog.io/@gummistory_it/Meta-Developer</link>
            <guid>https://velog.io/@gummistory_it/Meta-Developer</guid>
            <pubDate>Thu, 11 Jul 2024 02:27:46 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p><a href="https://developers.facebook.com/?locale=ko_KR">Meta Developer</a>사이트를 들어갑니다. ( 로그인 필수 ) </p>
</li>
<li><p>로그인 완료 했으면, 내 앱 클릭!</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/8ebbeff3-5d88-4ee4-8825-c55e1e500a0a/image.png" alt=""></p>
<ol start="3">
<li>앱 만들기 클릭 ! </li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/7525de80-8685-475e-a1b2-ee48113002cb/image.png" alt=""></p>
<ol start="4">
<li>Facebook 로그인을 통한 인증 및 사용자의 데이터 요청 클릭</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/d96f4eda-4d3b-4d61-b808-7474024f1a90/image.png" alt=""></p>
<ol start="5">
<li>원하는 앱 이름 추가 하고 본인 이메일 작성 -&gt;  다시 <span style="color: red">내 앱</span> 클릭 </li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/24fd5f52-4d36-4d39-a22e-dc82b9e92ef1/image.png" alt=""></p>
<ol start="6">
<li>내 앱 누르면, 해당 화면이 나옵니다. facebook 로그인 클릭</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/3508660d-59e9-47a2-97f4-1623364dfe84/image.png" alt=""></p>
<ol start="7">
<li><p>전 웹으로 하기에, 웹 클릭 
<img src="https://velog.velcdn.com/images/gummistory_it/post/44127bb6-6dea-465e-813b-cb663fc46f25/image.png" alt=""></p>
</li>
<li><p>사용하는 톰켓 서버 주소 작성 </p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/b17f5f27-74a3-451a-a0dd-ef1a445059b5/image.png" alt=""></p>
<ol start="9">
<li>전부 다음 버튼 클릭</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/85b17319-6d09-4d87-a921-b6701b6755e2/image.png" alt=""></p>
<ol start="10">
<li>생성 완료 !!!!</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/f90bab0c-8bea-42da-8b80-3fef060049ad/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Facebook Login 구현 ]]></title>
            <link>https://velog.io/@gummistory_it/Facebook-Login-%EA%B5%AC%ED%98%84</link>
            <guid>https://velog.io/@gummistory_it/Facebook-Login-%EA%B5%AC%ED%98%84</guid>
            <pubDate>Thu, 11 Jul 2024 01:50:23 GMT</pubDate>
            <description><![CDATA[<p>mata-data 가입/로그인을 완료 했으면, 메타데이터 <a href="https://developers.facebook.com/docs/facebook-login/web">개발자센터</a> 페이스북 로그인으로 들어갑니다. </p>
<p>화면에 나와있는 기본코드를 복사 해주세요 ! 
<img src="https://velog.velcdn.com/images/gummistory_it/post/bd10ce95-6700-453b-8522-957b9be9f0af/image.png" alt=""></p>
<p>이클립스에 <span style="color:indianred"><strong>html파일</strong></span>을 생성해서 붙여넣기 해주세요.</p>
<p><span style = "background-color : pink"><strong>꼭, app-id / api-version 바꿔주세요 !!!!!!!!</strong></span></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Facebook Login JavaScript Example&lt;/title&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;script&gt;

  function statusChangeCallback(response) {  // Called with the results from FB.getLoginStatus().
    console.log(&#39;statusChangeCallback&#39;);
    console.log(response);                   // The current login status of the person.
    if (response.status === &#39;connected&#39;) {   // Logged into your webpage and Facebook.
      testAPI();  
    } else {                                 // Not logged into your webpage or we are unable to tell.
      document.getElementById(&#39;status&#39;).innerHTML = &#39;Please log &#39; +
        &#39;into this webpage.&#39;;
    }
  }


  function checkLoginState() {               // Called when a person is finished with the Login Button.
    FB.getLoginStatus(function(response) {   // See the onlogin handler
      statusChangeCallback(response);
    });
  }


  window.fbAsyncInit = function() {
    FB.init({
      appId      : &#39;{app-id}&#39;,
      cookie     : true,                     // Enable cookies to allow the server to access the session.
      xfbml      : true,                     // Parse social plugins on this webpage.
      version    : &#39;{api-version}&#39;           // Use this Graph API version for this call.
    });


    FB.getLoginStatus(function(response) {   // Called after the JS SDK has been initialized.
      statusChangeCallback(response);        // Returns the login status.
    });
  };

  function testAPI() {                      // Testing Graph API after login.  See statusChangeCallback() for when this call is made.
    console.log(&#39;Welcome!  Fetching your information.... &#39;);
    FB.api(&#39;/me&#39;, function(response) {
      console.log(&#39;Successful login for: &#39; + response.name);
      document.getElementById(&#39;status&#39;).innerHTML =
        &#39;Thanks for logging in, &#39; + response.name + &#39;!&#39;;
    });
  }

&lt;/script&gt;


&lt;!-- The JS SDK Login Button --&gt;

&lt;fb:login-button scope=&quot;public_profile,email&quot; onlogin=&quot;checkLoginState();&quot;&gt;
&lt;/fb:login-button&gt;

&lt;div id=&quot;status&quot;&gt;
&lt;/div&gt;

&lt;!-- Load the JS SDK asynchronously --&gt;
&lt;script async defer crossorigin=&quot;anonymous&quot; src=&quot;https://connect.facebook.net/en_US/sdk.js&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><hr>
<p>이제 실행 시키면, 해당 페이지 처럼 로그인 버튼이 생성 됩니다. </p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/6525cec0-718f-42cf-906e-91f1f274f1ea/image.png" alt=""></p>
<p>로그인 클릭 후 각자 아이디로 해주시면 되요 ~~ </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[공공데이터포털 오픈API 사용하는 방법 ( 회원가입, 자료검색,인증키설정, Request URL )]]></title>
            <link>https://velog.io/@gummistory_it/%EA%B3%B5%EA%B3%B5%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8F%AC%ED%84%B8-%EC%98%A4%ED%94%88API-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EC%9E%90%EB%A3%8C%EA%B2%80%EC%83%89%EC%9D%B8%EC%A6%9D%ED%82%A4%EC%84%A4%EC%A0%95-Request-URL</link>
            <guid>https://velog.io/@gummistory_it/%EA%B3%B5%EA%B3%B5%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8F%AC%ED%84%B8-%EC%98%A4%ED%94%88API-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EC%9E%90%EB%A3%8C%EA%B2%80%EC%83%89%EC%9D%B8%EC%A6%9D%ED%82%A4%EC%84%A4%EC%A0%95-Request-URL</guid>
            <pubDate>Wed, 10 Jul 2024 02:09:16 GMT</pubDate>
            <description><![CDATA[<p>오픈 API 를 사용하기 위해, <a href="https://www.data.go.kr/index.do">공공데이터포털</a> 먼저 가입을 합니다. </p>
<ol>
<li><p>가입 후, 원하는 자료 검색 ! 
<img src="https://velog.velcdn.com/images/gummistory_it/post/19162d09-f654-41f8-b9cb-850a2bbf4f07/image.png" alt=""></p>
</li>
<li><p>수업에서는 <strong>&quot; 광진구 약국 &quot;</strong> OPEN API 사용 예정이라 광진구 약국을 검색 ! </p>
</li>
</ol>
<p>-&gt; <a href="https://www.data.go.kr/data/15052413/fileData.do#tab-layer-openapi">광진구 약국</a></p>
<ol start="3">
<li><p>검색 후, open API click 및 활용 신청을 눌러주세요. ( 기다리면 바로 신청완료 됨 ) 
<img src="https://velog.velcdn.com/images/gummistory_it/post/302cfe4d-8647-4f54-a6b2-c69a67c7496a/image.png" alt=""></p>
</li>
<li><p>신청 완료후, 마이페이지 들어가서 api 신청 클릭!
<img src="https://velog.velcdn.com/images/gummistory_it/post/91dfba61-7d30-4dcb-9bf2-07c7e0404431/image.png" alt=""></p>
</li>
<li><p>신청한 &quot; 광진구 약국 &quot; 클릭하여 들어갑니다. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/c866e167-3435-4ff5-a085-238ae151cc2f/image.png" alt=""></p>
</li>
<li><p>일반 인증키(Decoding)를 복사하여 인증키 설정 진행합니다. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/c467f186-56d3-400c-8175-76fabea80677/image.png" alt=""></p>
</li>
</ol>
<p>-&gt; 인증키 설정 클릭 
<img src="https://velog.velcdn.com/images/gummistory_it/post/ac8a71ee-3375-41ab-99e1-592ceb62bd57/image.png" alt=""></p>
<ol start="7">
<li>복사한 일반 인증키를 칸에 붙여 넣기 해주세요 
<img src="https://velog.velcdn.com/images/gummistory_it/post/458e5c22-eed2-40bd-bc97-7641b6004691/image.png" alt=""></li>
</ol>
<p>설정 완료 누르면 설정 되어 있습니다. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/587ecc38-2ccb-4498-a518-c3577ae465c5/image.png" alt=""></p>
<p>이제 되는지 실행 해볼 차례 !</p>
<p>API 목록을 클릭 후, open api 실행 준비 클릭 !!! 
<img src="https://velog.velcdn.com/images/gummistory_it/post/e8648949-9e53-4331-87ec-4b6fd56afc64/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/2d85ffd1-907c-43a7-a10c-7f07edb5f3dd/image.png" alt=""></p>
<p>성곡적으로 뜨니 이제 request url을 복사해서 url에 복사 붙여넣기 합니다. 
_Requet URl -&gt; 인증코드 등 전부 들어가 있으니 수정하지 말고 그대로 copy 사용 해주세요 !
_<img src="https://velog.velcdn.com/images/gummistory_it/post/e0a3ba30-a821-4769-be39-00efe1d5144f/image.png" alt=""></p>
<p>chrom인 경우 json view 로 보면 더 깔끔히 볼 수 있습니다. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/df54eeae-80ec-4c88-a5b8-dd81f8536460/image.png" alt="">
<img src="https://velog.velcdn.com/images/gummistory_it/post/4d286d91-8a78-4e0c-bbff-9752fb6bef92/image.png" alt=""></p>
<p>성공적으로 가져온 모습을 볼 수 있습니다. </p>
<p>오늘도 즐코...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[네이버 블로그 검색 API 적용 및 예제]]></title>
            <link>https://velog.io/@gummistory_it/%EB%84%A4%EC%9D%B4%EB%B2%84-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B2%80%EC%83%89-API-%EC%A0%81%EC%9A%A9-%EB%B0%8F-%EC%98%88%EC%A0%9C</link>
            <guid>https://velog.io/@gummistory_it/%EB%84%A4%EC%9D%B4%EB%B2%84-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B2%80%EC%83%89-API-%EC%A0%81%EC%9A%A9-%EB%B0%8F-%EC%98%88%EC%A0%9C</guid>
            <pubDate>Wed, 10 Jul 2024 01:42:08 GMT</pubDate>
            <description><![CDATA[<p><a href="https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8">네이버 블로그 검색 API</a></p>
<hr>
<h2 id="part2">part2</h2>
<p>네이버 개발자 센터에서 설정이 끝났으면,</p>
<p>Servlet을 <em><strong>Servie만</strong></em> 체크하고 생성해줍니다. </p>
<blockquote>
<p>네이버 애플리케이션 생성시 아이디랑 비밀번호를 따로 메모해 두세요. 애플리케이션 클라이언트 아이디 /시크릿에 메모해둔 걸 입력하세요 ! </p>
</blockquote>
<pre><code>
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String clientId = &quot;YOUR_CLIENT_ID&quot;; // 애플리케이션 클라이언트 아이디
        String clientSecret = &quot;YOUR_CLIENT_PW&quot;; //애플리케이션 클라이언트 시크릿 
    }

}</code></pre><p>네이버 개발자 센터에서 검색 -&gt; 블로그 부분 들어가면 , 예제 코드 및 오류 부분 전부 나오니까 해당 부분 이용 해서 작성하면 됩니다. 
<img src="https://velog.velcdn.com/images/gummistory_it/post/15d196a9-5d88-45e8-8ba8-234e8741668d/image.png" alt=""></p>
<p><strong>** 위에 부분 추가 후 아래 코드 **</strong></p>
<pre><code>// 스타트 페이지 
        int startNum = 0;
        String text = null;
        try {

           startNum = Integer.parseInt(req.getParameter(&quot;startNum&quot;));
           String searchText = req.getParameter(&quot;keyword&quot;);   
            text = URLEncoder.encode(searchText, &quot;UTF-8&quot;);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(&quot;검색어 인코딩 실패&quot;,e);
        }

        String apiURL = &quot;https://openapi.naver.com/v1/search/blog?query=&quot; + text 
              + &quot;&amp;display=10&amp;start=&quot; + startNum;  // json 형식 

        Map&lt;String, String&gt; requestHeaders = new HashMap&lt;&gt;();
        requestHeaders.put(&quot;X-Naver-Client-Id&quot;, clientId);
        requestHeaders.put(&quot;X-Naver-Client-Secret&quot;, clientSecret);
        String responseBody = get(apiURL,requestHeaders);


        System.out.println(responseBody);   

        resp.setContentType(&quot;text/html; charset=utf-8&quot;);
        resp.getWriter().write(responseBody);
   }

   private static String get(String apiUrl, Map&lt;String, String&gt; requestHeaders){
        HttpURLConnection con = connect(apiUrl);
        try {
            con.setRequestMethod(&quot;GET&quot;);
            for(Map.Entry&lt;String, String&gt; header :requestHeaders.entrySet()) {
                con.setRequestProperty(header.getKey(), header.getValue());
            }


            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
                return readBody(con.getInputStream());
            } else { // 오류 발생
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException(&quot;API 요청과 응답 실패&quot;, e);
        } finally {
            con.disconnect();
        }
    }

   private static HttpURLConnection connect(String apiUrl){
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection)url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException(&quot;API URL이 잘못되었습니다. : &quot; + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException(&quot;연결이 실패했습니다. : &quot; + apiUrl, e);
        }
    }

   private static String readBody(InputStream body){
        InputStreamReader streamReader = new InputStreamReader(body);


        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();


            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }


            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException(&quot;API 응답을 읽는 데 실패했습니다.&quot;, e);
        }
    }




    }

</code></pre><hr>
<h2 id="part3">part3</h2>
<p>이제, view 부분을 작성하여 연결이 되는지 확인 해야 합니다. </p>
<p>우선 webapp -&gt; folder 를 생성해 주고, jsp 파일을 만들어 줍니다 .</p>
<p>html 먼저 작성하겠습니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로그래밍 언어]]></title>
            <link>https://velog.io/@gummistory_it/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4</link>
            <guid>https://velog.io/@gummistory_it/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%96%B8%EC%96%B4</guid>
            <pubDate>Tue, 09 Jul 2024 05:03:34 GMT</pubDate>
            <description><![CDATA[<h2 id="절차적-프로그래밍-언어">절차적 프로그래밍 언어</h2>
<ul>
<li><strong>일련의 처리 절차를 정해진 문법에 따라 순서대로 기술하는 언어</strong>이다. </li>
<li>프로그램이 실행되는 절차를 중요시 한다.</li>
<li>자연어에 가까운 단어와 문장으로 구성된다. </li>
<li>과학 계산이나 하드웨어 제어에 주로 사용된다. </li>
</ul>
<h3 id="종류">종류</h3>
<ul>
<li><strong>C</strong> : 1972s 미국 벨 연구소 데니스 리치에 의해 개발, 고급 프로그래밍언어이면서 저급 프로그램 언어의 특징을 모두 갖춤, 이식성이 좋아 관계없이 작성 가능</li>
<li><strong>ALGOL</strong> : 수치 계산, 논리 연산을 위한 과학 기술 계산용 언어, pascal 과 c언어의 모체가 됨</li>
<li><strong>COBOL</strong> : 사무 처리용 언어, 영어 문장 형식으로 구성, 4개의 DIVISION으로 구성 </li>
<li><strong>FORTRAN</strong> : 과학 기술 계산용 언어, 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 할 수 있음 </li>
</ul>
<hr>
<h2 id="객체지향-프로그래밍-언어">객체지향 프로그래밍 언어</h2>
<ul>
<li><strong>현실 세계의 개체를 하나의 객체로 만들어 객체들을 조립해서 프로그램을 작성하는 기법</strong></li>
<li>프로시저 보다는 명력과 데이터로 구성된 객채를 중심으로 하는 프로그램 ㄱ법</li>
<li>한 프로그램을 다른 프로그램에서 이용할 수 있다. </li>
</ul>
<h3 id="종류-1">종류</h3>
<ul>
<li>JAVA : 분산 네트워크 환경에 적용 가능, 멀티 스레드 제공, 운영체제 및 하드웨어에 독립적, 이식성 강함 </li>
<li>C++ : C언어에 객체지향 개념을 적용한 언어, 모든 문제를 객체로 모델링하여 표현</li>
<li>Smalltalk : 1세대 객체지향 프로그래밍 언어, 최초로 GUI를 제공 </li>
</ul>
<p>*GUI : 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스</p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[응답할때 한글 인코딩]]></title>
            <link>https://velog.io/@gummistory_it/%EC%9D%91%EB%8B%B5%ED%95%A0%EB%95%8C-%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9</link>
            <guid>https://velog.io/@gummistory_it/%EC%9D%91%EB%8B%B5%ED%95%A0%EB%95%8C-%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9</guid>
            <pubDate>Tue, 09 Jul 2024 02:38:00 GMT</pubDate>
            <description><![CDATA[<pre><code>response.setContentType(&quot;text/html;charset=UTF-8&quot;);</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[예제1]]></title>
            <link>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C1</link>
            <guid>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C1</guid>
            <pubDate>Tue, 09 Jul 2024 02:18:48 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>사용자로부터 입력받은 아이디(userid)를 서버로 전송하고, 서버에서 해당 아이디의 로그인 상태를 JSON 형식으로 받아와 화면에 표시하는 기능을 구현.</p>
</blockquote>
<pre><code>clientGson.jsp


&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js&quot;&gt;&lt;/script&gt; &lt;!-- 제이쿼리  --&gt;
&lt;script&gt;


 $(function(){
        $(&quot;#check&quot;).click(function(){
            /* 유효성 검증 (제이쿼리방식) */
            if($(&quot;#userid&quot;).val() == 0){
                $(&quot;#result&quot;).text(&quot;아이디를 입력하세요.&quot;);
                return;
            }
            $.ajax({
                url:&quot;./ajaxServerGson1.jsp&quot;,
                type:&quot;post&quot;,
                data:{userid:$(&#39;#userid&#39;).val()},
                dataType: &#39;json&#39;,
                success:function(data){
                    alert(&quot;성공&quot;);
                    $(&quot;#result&quot;).text(data.loginid + data.loginsuccess);
                },
                error: function(err) {
                    alert(&quot;실패 원인 : &quot; + err);
                }
            });
        });

    });

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input type = &quot;text&quot; id=&quot;userid&quot;&gt;
    &lt;button type= &quot;button&quot; id=&quot;check&quot;&gt;Check&lt;/button&gt;
    &lt;p id =&quot;result&quot;&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><p><strong>유효성 검사:</strong></p>
<p>사용자가 아이디 입력 필드에 값을 입력했는지 확인합니다.
값이 없으면 &quot;아이디를 입력하세요.&quot;라는 메시지를 표시하고 Ajax 요청을 중단합니다.</p>
<p><strong>Ajax 요청:</strong></p>
<p>아이디 입력 필드의 값을 서버로 전송합니다.
서버에서 JSON 형식의 응답을 받아서 결과를 화면에 표시합니다.</p>
<hr>
<blockquote>
<p><em>*import=&quot;com.google.gson.</em>&quot; **: Gson 라이브러리를 사용하기 위해 필요한 import 문입니다.</p>
</blockquote>
<p>-
<strong>JsonObject obj = new JsonObject();</strong>: Gson의 JsonObject를 사용하여 새로운 JSON 객체를 생성합니다.</p>
<p>-
<strong>obj.addProperty(&quot;loginid&quot;, userid);</strong>: JSON 객체에 &quot;loginid&quot;라는 키와 클라이언트로부터 받은 사용자 아이디를 속성으로 추가합니다.</p>
<p>-
<strong>obj.addProperty(&quot;loginsuccess&quot;, message);</strong>: JSON 객체에 &quot;loginsuccess&quot;라는 키와 로그인 성공 메시지를 속성으로 추가합니다.</p>
<pre><code>serverGson.jsp

&lt;%@ page language=&quot;java&quot; contentType=&quot;application/json; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%@ page import =&quot;com.google.gson.*&quot;%&gt;

&lt;%
    String userid = request.getParameter(&quot;userid&quot;);
    String message = &quot; 님 로그인 성공 &quot;;

    Gson gson = new Gson();
    JsonObject obj = new JsonObject();

    obj.addProperty(&quot;loginid&quot;,userid);
    obj.addProperty(&quot;loginsuccess&quot;, message);

    out.print(gson.toJson(obj));
%&gt;


</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Gson 개발환경 셋팅]]></title>
            <link>https://velog.io/@gummistory_it/Gson</link>
            <guid>https://velog.io/@gummistory_it/Gson</guid>
            <pubDate>Tue, 09 Jul 2024 01:45:26 GMT</pubDate>
            <description><![CDATA[<p>우선,  <a href="https://mvnrepository.com/artifact/com.google.code.gson/gson/2.7">Gson 라이브러리</a>를 다운로드 해줍니다. </p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/57cc21df-e173-4346-a92a-66cbd8fa4594/image.png" alt=""></p>
<p><strong>이클립스에 배포해주세요!</strong></p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/dbe4759c-d9f2-46cc-afb1-c50fa227afef/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[jQuery 유효성 검증]]></title>
            <link>https://velog.io/@gummistory_it/jQuery-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%A6%9D</link>
            <guid>https://velog.io/@gummistory_it/jQuery-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%A6%9D</guid>
            <pubDate>Tue, 09 Jul 2024 01:33:31 GMT</pubDate>
            <description><![CDATA[<p><strong>유효성 검증 코드</strong></p>
<pre><code> $(function(){
        $(&quot;#check&quot;).click(function(){

            if($(&quot;#userid&quot;).val() == 0){
                $(&quot;#result&quot;).text(&quot;아이디를 입력하세요.&quot;);
                return;
            }
        });
    });</code></pre><p><img src="https://velog.velcdn.com/images/gummistory_it/post/66b5fd20-bc78-4ac9-a7bf-a59ef2cf8729/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[예제3]]></title>
            <link>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C3</link>
            <guid>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C3</guid>
            <pubDate>Tue, 09 Jul 2024 01:26:27 GMT</pubDate>
            <description><![CDATA[<p><strong>예제3</strong></p>
<ol>
<li>사용자가 &#39;제출&#39; 클릭</li>
<li>서버는 JSON 형식의 응답을 반환</li>
<li>클라이언트는 서버에서 반환된 데이터를 받아서 웹 페이지의 특정 부분 (#nickName, #ph_number, #address)을 업데이트</li>
</ol>
<pre><code>ajaxClient3.jsp

&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js&quot;&gt;&lt;/script&gt; &lt;!-- 제이쿼리  --&gt;
&lt;script&gt;
    $(function(){
        $(&quot;#buttonSubmit&quot;).on(&#39;click&#39;,function(){
            $.ajax({
                url : &quot;./ajaxServer3.jsp&quot;,
                type : &quot;post&quot;,
                dataType: &#39;json&#39;,
                success:function(data){
                    alert(&quot;성공&quot;);
                    $(&quot;#nickName&quot;).text(data.nickName);
                    $(&quot;#ph_number&quot;).text(data.ph_number);
                    $(&quot;#address&quot;).text(data.address);

                },
                error: function(err) {
                    alert(&quot;실패 원인 : &quot; + err);
                }
            })
        })
    })

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input id = &quot;buttonSubmit&quot; type = &quot;button&quot; value = &quot;제출&quot;&gt;
    &lt;p id = &quot;nickName&quot;&gt;&lt;/p&gt;
    &lt;p id = &quot;ph_number&quot;&gt;&lt;/p&gt;
    &lt;p id = &quot;address&quot;&gt;&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><pre><code>ajaxServer3.jsp
&lt;%@ page language=&quot;java&quot; contentType=&quot;application/json; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;

{
    &quot;nickName&quot;: &quot;홍길동&quot;,
    &quot;ph_number&quot; : &quot;010-1234-5678&quot;,
    &quot;address&quot; : &quot;신촌&quot;

}
</code></pre><p>비동기적으로 수행되어 페이지를 새로 고침하지 않고도 데이터를 전송하고 받을 수 있습니다.</p>
<hr>
<p><strong>결과</strong></p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/cdf83cc7-de43-4862-a2dd-0f759bccdfd0/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[개념]]></title>
            <link>https://velog.io/@gummistory_it/%EA%B0%9C%EB%85%90</link>
            <guid>https://velog.io/@gummistory_it/%EA%B0%9C%EB%85%90</guid>
            <pubDate>Tue, 09 Jul 2024 01:01:17 GMT</pubDate>
            <description><![CDATA[<pre><code>$.ajax({
            url : &#39;./PopupCookie.jsp&#39;,
            type : &#39;get&#39;,
            data : {inactiveToday : chkVal},
            dataType : &quot;text&quot;,
            success : function(resData) {
                if (resData != &#39;&#39;) location.reload();
            }
      });</code></pre><blockquote>
<p><strong>$.ajax({ ... });:</strong> 이 부분은 jQuery의 AJAX 함수를 호출합니다. AJAX 요청을 초기화하고, 서버에 데이터를 전송하며, 서버로부터의 응답을 처리하는 데 사용됩니다.</p>
</blockquote>
<blockquote>
<p> <strong>url</strong> - 이동할 페이지이다. 이동한 페이지에서 데이터를 처리하고 다시 현재 
페이지로 돌아온다. 필요한 경우 데이터를 전달할 수 있다.
 <strong>type</strong> - 전달 방식을 의미한다. GET/POST가 있다.
<strong>data</strong> - 데이터 처리를 할 페이지에게 전달할 정도이다. 
            Array 형식일 때 위와 같이 적으면 된다.
<strong>dataType</strong> - 전달받는 인자의 형식.
<strong>success</strong> - 데이터 처리가 성공했을 경우 해당 함수(함수가 아니어도 되                는듯 하다)를 실행한다.
              json으로 처리할 경우 데이터를 처리하는 페이지에서 전달해                 주는 값이 인자로 받아진다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[예제2]]></title>
            <link>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C2</link>
            <guid>https://velog.io/@gummistory_it/%EC%98%88%EC%A0%9C2</guid>
            <pubDate>Tue, 09 Jul 2024 00:58:41 GMT</pubDate>
            <description><![CDATA[<h4 id="예제2">예제2</h4>
<ol>
<li>사용자가 &quot;제출&quot; 버튼을 클릭</li>
<li>nickName이라는 데이터를 서버로 전송</li>
<li>서버에서 반환된 데이터를 받아 웹 페이지의 특정 부분을 업데이트</li>
<li>실패시 원인을 알림으로 표시 </li>
</ol>
<hr>
<pre><code>ajaxClient2.jsp

&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;title&gt;Insert title here&lt;/title&gt;
&lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js&quot;&gt;&lt;/script&gt; &lt;!-- 제이쿼리  --&gt;
&lt;script&gt;

/* Ajax를 사용하여 서버와 비동기 통신을 하는 방식*/    
 $(function(){
        $(&quot;#buttonSubmit&quot;).on(&#39;click&#39;,function(){
            $.ajax({
                url : &quot;./ajaxServer2.jsp&quot;,
                type : &quot;post&quot;,
                data : { nickName : &#39;닉네임&#39;},
                dataType: &#39;json&#39;,
                success:function(data){
                    alert(&quot;성공&quot;);
                    console.log(data.nickName);
                    $(&quot;#nickname&quot;).text(data.nickName);
                },
                error: function(err) {
                    alert(&quot;실패 원인 : &quot; + err);
                }
            })
        })
    })

&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input id = &quot;buttonSubmit&quot; type = &quot;button&quot; value = &quot;제출&quot;&gt;
    &lt;p id = &quot;nickname&quot;&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><pre><code>ajaxServer2.jsp

&lt;%@ page language=&quot;java&quot; contentType=&quot;application/json; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;%
    String nickName = request.getParameter(&quot;nickName&quot;);

%&gt;
{
    &quot;nickName&quot;: &quot;&lt;%= nickName %&gt;&quot;

}
</code></pre><hr>
<p><strong>결과</strong>
제출 클릭시, 닉네임 반환 </p>
<p><img src="https://velog.velcdn.com/images/gummistory_it/post/4355695b-cdc2-40a0-bc18-b815cd4573b0/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>