<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>1.log</title>
        <link>https://velog.io/</link>
        <description>🧐🤔</description>
        <lastBuildDate>Mon, 07 Oct 2024 12:10:34 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>1.log</title>
            <url>https://velog.velcdn.com/images/for_i_in_range/profile/15f8f974-ab6d-4127-9d80-c6db58b16ef3/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 1.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/for_i_in_range" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[1234123]]></title>
            <link>https://velog.io/@for_i_in_range/1234123</link>
            <guid>https://velog.io/@for_i_in_range/1234123</guid>
            <pubDate>Mon, 07 Oct 2024 12:10:34 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/fda55c27-51fc-4b50-b5b6-e8ef0c6586ab/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[123123]]></title>
            <link>https://velog.io/@for_i_in_range/123123-0lp8p8j7</link>
            <guid>https://velog.io/@for_i_in_range/123123-0lp8p8j7</guid>
            <pubDate>Mon, 07 Oct 2024 12:08:12 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/c631ba7f-645b-4a51-9d16-903854f398c7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[123123]]></title>
            <link>https://velog.io/@for_i_in_range/123123</link>
            <guid>https://velog.io/@for_i_in_range/123123</guid>
            <pubDate>Mon, 07 Oct 2024 12:07:55 GMT</pubDate>
            <description><![CDATA[<p><img src="blob:https://velog.io/110ed4b8-e1b5-4ce5-a96d-e99efbb8d977" alt="업로드중.."></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[123]]></title>
            <link>https://velog.io/@for_i_in_range/123</link>
            <guid>https://velog.io/@for_i_in_range/123</guid>
            <pubDate>Fri, 19 Apr 2024 10:48:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/d737632a-5018-40b5-80a1-fb745f6099e6/image.png" alt="">
<img src="https://velog.velcdn.com/images/for_i_in_range/post/19675e2e-1363-4f06-959f-f2350fe37ecc/image.png" alt="">
<img src="https://velog.velcdn.com/images/for_i_in_range/post/c42af0b6-9dc1-4378-bdde-f4a9a54b0b53/image.png" alt="">
<img src="https://velog.velcdn.com/images/for_i_in_range/post/4704b07e-a588-4fc3-a764-421f17d28a92/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <link>https://velog.io/@for_i_in_range/rg9kt2tt</link>
            <guid>https://velog.io/@for_i_in_range/rg9kt2tt</guid>
            <pubDate>Fri, 24 Nov 2023 14:56:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/7370a3e9-36fb-426a-a424-d7f89db02d00/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[img2]]></title>
            <link>https://velog.io/@for_i_in_range/img2</link>
            <guid>https://velog.io/@for_i_in_range/img2</guid>
            <pubDate>Tue, 28 Feb 2023 05:49:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/83be34fd-5a5d-4536-8747-fe6a2fb31291/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[img]]></title>
            <link>https://velog.io/@for_i_in_range/img</link>
            <guid>https://velog.io/@for_i_in_range/img</guid>
            <pubDate>Sat, 25 Feb 2023 15:39:20 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/for_i_in_range/post/69d4371a-0b7f-4e43-ac9c-8a2f73da56a5/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[frontController]]></title>
            <link>https://velog.io/@for_i_in_range/frontController</link>
            <guid>https://velog.io/@for_i_in_range/frontController</guid>
            <pubDate>Wed, 22 Feb 2023 13:15:47 GMT</pubDate>
            <description><![CDATA[<p>frontController 수정</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[카카오지도API]]></title>
            <link>https://velog.io/@for_i_in_range/%EC%B9%B4%EC%B9%B4%EC%98%A4%EC%A7%80%EB%8F%84API</link>
            <guid>https://velog.io/@for_i_in_range/%EC%B9%B4%EC%B9%B4%EC%98%A4%EC%A7%80%EB%8F%84API</guid>
            <pubDate>Wed, 22 Feb 2023 12:13:38 GMT</pubDate>
            <description><![CDATA[<p>문제점 0226(해결) 추후 해결방법 작성</p>
<ul>
<li>마커 클릭시 호출된 커스텀 오버레이의 닫기버튼이 작동되지않음</li>
<li>마커 마우스 오버시 한가지의 마커만 이미지 변경됨</li>
<li>마커 마우스 오버시 다른마커들에 가려져 보임(오버레이 동일)</li>
<li>커스텀 오버레이를 하나만 표출</li>
</ul>
<h2 id="1-지도-불러오기key연결">1. 지도 불러오기(key연결)</h2>
<pre><code class="language-javascript">&lt;div id=&quot;review&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;map&quot;&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;//dapi.kakao.com/v2/maps/sdk.js?appkey=ad32e4cc626799cc0ad5db80f46f316a&quot;&gt;
&lt;/script&gt;

&lt;script&gt;
var mapContainer = document.getElementById(&#39;map&#39;),// 지도를 표시할 div 
    mapOption = { 
        // 북구청앞 좌표 고정
        center: new kakao.maps.LatLng(35.173956643954675, 126.9191938589476), // 지도의 중심좌표
        level: 5 // 지도의 확대 레벨
    };

// 지도를 표시할 div와  지도 옵션으로  지도를 생성합니다
var map = new kakao.maps.Map(mapContainer, mapOption); 

// 지도 확대 축소를 제어할 수 있는  줌 컨트롤을 생성합니다
var zoomControl = new kakao.maps.ZoomControl();
map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
&lt;/script&gt;</code></pre>
<h2 id="2-marker-생성">2. marker 생성</h2>
<pre><code class="language-javascript">// 마커를 표시할 위치와 title 객체 배열입니다
// 이후 리뷰에 저장된 주소로 객체 생성
var positions = [
    {
        title: &#39;스타벅스 전남대&#39;, 
        latlng: new kakao.maps.LatLng(35.1747707, 126.914430)
        // 마커 좌표로 가게 추가
    },
    {
        title: &#39;투썸 전남대&#39;, 
        latlng: new kakao.maps.LatLng(35.1751410, 126.915340)
        // 마커 좌표로 가게 추가
    },
    {
        title: &#39;시작 스터디카페&#39;, 
        latlng: new kakao.maps.LatLng(35.1774862, 126.917885)
        // 마커 좌표로 가게 추가
    }
];

// 마커 이미지의 이미지 주소입니다
var imageSrc = &quot;https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/markerStar.png&quot;; 
// 보관된 리뷰 개수만큼 마커 생성
for (var i = 0; i &lt; positions.length; i ++) {

    // 마커 이미지의 이미지 크기 입니다
    var imageSize = new kakao.maps.Size(24, 35); 

    // 마커 이미지를 생성합니다    
    var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize); 

    // 마커를 생성합니다
    var marker = new kakao.maps.Marker({
        map: map, // 마커를 표시할 지도
        position: positions[i].latlng, // 마커를 표시할 위치
        title : positions[i].title, // 마커의 타이틀, 마커에 마우스를 올리면 타이틀이 표시됩니다
        image : markerImage // 마커 이미지 
    });
}</code></pre>
<h2 id="3-커스텀-오버레이-생성">3. 커스텀 오버레이 생성</h2>
<pre><code class="language-javascript">// 커스텀 오버레이에 표시할 내용입니다     
// HTML 문자열 또는 Dom Element 입니다 

// 오버레이 컨텐츠 작성
var content = &#39;&lt;div class=&quot;overlaybox&quot;&gt;&#39; +
    &#39;    &lt;span class=&quot;boxtitle&quot;&gt;스타벅스 전남대&#39;+
            ***********닫기 위치 수정(임시 margin)
    &#39;    &lt;span class=&quot;close&quot; id=&quot;close&quot; onclick=&quot;closeOverlay()&quot; title=&quot;닫기&quot;&gt;닫기&lt;/span&gt;&#39;+
    &#39;    &lt;/span&gt;&#39;+
    &#39;    &lt;div class=&quot;first&quot;&gt;&#39; +
    &#39;    &lt;/div&gt;&#39; +
    &#39;    &lt;ul&gt;&#39; +
    &#39;        &lt;li class=&quot;up&quot;&gt;&#39; +
    &#39;            &lt;span class=&quot;number&quot;&gt;오픈시간&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;title&quot;&gt;09:00&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;arrow up&quot;&gt;&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;count&quot;&gt;&lt;/span&gt;&#39; +
    &#39;        &lt;/li&gt;&#39; +
    &#39;        &lt;li&gt;&#39; +
    &#39;            &lt;span class=&quot;number&quot;&gt;마감시간&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;title&quot;&gt;17:30&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;arrow up&quot;&gt;&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;count&quot;&gt;&lt;/span&gt;&#39; +
    &#39;        &lt;/li&gt;&#39; +
    &#39;        &lt;li&gt;&#39; +
    &#39;            &lt;span class=&quot;number&quot;&gt;위치&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;title&quot;&gt;광주 북구 호동로 65&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;arrow up&quot;&gt;&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;count&quot;&gt;&lt;/span&gt;&#39; +
    &#39;        &lt;/li&gt;&#39; +
    &#39;        &lt;li&gt;&#39; +
    &#39;            &lt;span class=&quot;number&quot;&gt;리뷰 수&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;title&quot;&gt;7&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;arrow down&quot;&gt;&lt;/span&gt;&#39; +
    &#39;            &lt;span class=&quot;count&quot;&gt;&lt;/span&gt;&#39; +
    &#39;        &lt;/li&gt;&#39; +
    &#39;    &lt;/ul&gt;&#39; +
    &#39;&lt;/div&gt;&#39;;
// 커스텀 오버레이가 표시될 위치입니다 &gt;&gt; 연결된주소값으로 수정
var position = new kakao.maps.LatLng(35.1774862, 126.917885);

// 커스텀 오버레이를 생성합니다
var customOverlay = new kakao.maps.CustomOverlay({
    position: position,
    content: content,
    xAnchor: 0.3,
    yAnchor: 0.91
});

// 마커를 클릭했을 때 커스텀 오버레이를 표시합니다
kakao.maps.event.addListener(marker, &#39;click&#39;, function() {
    customOverlay.setMap(map);
});

// 커스텀 오버레이를 지도에 표시합니다(클릭 이벤트시 실행할거기때문에 필요X)
//customOverlay.setMap(map);

// 커스텀 오버레이를 닫기 위해 호출되는 함수입니다 
function closeOverlay() {
    customOverlay.setMap(null);     
}
</code></pre>
<h2 id="4-추가-사항">4. 추가 사항</h2>
<ul>
<li>화면 상 보이지 않는 마커 추척</li>
<li>디폴트 위치 수정</li>
<li>JSP로 옮기기</li>
<li>좌표 &gt; 주소 바꾸기</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[MVC]]></title>
            <link>https://velog.io/@for_i_in_range/MVC</link>
            <guid>https://velog.io/@for_i_in_range/MVC</guid>
            <pubDate>Wed, 08 Feb 2023 05:48:43 GMT</pubDate>
            <description><![CDATA[<h2 id="🤔1-mvc-model-view-controller-란">🤔1. MVC (MODEL VIEW CONTROLLER) 란?</h2>
<ul>
<li>Design Pattern : 소프트웨어 설계에 있어 공통된 문제들에 대한 표준적인 해결책</li>
<li><strong>MVC : 시각적으로 보여지는 부분과 데이터를 처리하는 부분을 분리하여 유연한 구조를 설계</strong></li>
</ul>
<hr>
<h2 id="2-mvc-기본구조">2. MVC 기본구조</h2>
<p><strong>Model</strong> : <strong>뷰에 출력할 데이터</strong>를 담아둠 (실행에 직접적 관여 X)</p>
<p><strong>View</strong> : <strong>모델에 담겨있는 데이터를 사용</strong>해서 화면에 그리는 일을 하는데, HTML을 생성하는 부분</p>
<p><strong>Controller</strong> : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행합니다. 그리고 <strong>뷰에 전달할 결과 데이터를 조회해서 모델</strong>에 담습니다.</p>
<hr>
<h2 id="3-mvc-종류">3. MVC 종류</h2>
<h3 id="--model-1">- MODEL 1</h3>
<ul>
<li>JSP에서 출력과 로직을 전부 컨트롤 (Web 어플리케이션을 개발할 때 JSP만 사용하는 설계 방법)</li>
<li><img src="https://velog.velcdn.com/images/for_i_in_range/post/8afb1227-f759-44ef-a7b1-3131476123b1/image.png" alt=""></li>
</ul>
<h3 id="--model-2">- MODEL 2</h3>
<ul>
<li>JSP 에서는 출력만 처리(View와 Controller를 명확하게 분리)</li>
<li><strong>View만 JSP, Model과 Controller는 java파일로 생성</strong>
<img src="https://velog.velcdn.com/images/for_i_in_range/post/7de4eae2-933d-4898-93ef-68732e45354c/image.png" alt=""></li>
</ul>
<h3 id="--model1-vs-model2">- MODEL1 VS MODEL2</h3>
<ul>
<li><img src="https://velog.velcdn.com/images/for_i_in_range/post/b57ca7bd-6853-41ca-ac11-2e1acdb37b8f/image.png" alt=""><img src="https://velog.velcdn.com/images/for_i_in_range/post/a0040164-f2ae-4be5-94a8-3056d138a27f/image.png" alt=""></li>
</ul>
<hr>
<h2 id="4-model에-db추가">4. Model에 db추가</h2>
<ul>
<li>ojdbc8파일 찾은 후 WEBAPP &gt; WEB-INF &gt; lib 안에 붙여넣기</li>
</ul>
<hr>
<h2 id="5-model1-이클립스-구조회원가입로그인">5. Model1 이클립스 구조(회원가입,로그인)</h2>
<ul>
<li><img src="https://velog.velcdn.com/images/for_i_in_range/post/fd1cc696-2d7c-4a17-bb8b-7223bd129486/image.png" alt=""></li>
<li>DTO 구조<pre><code class="language-java">package Model;
</code></pre>
</li>
</ul>
<p>public class DTO {</p>
<pre><code>// 사용하고자 하는 데이터의 설계를 정리하는 부분

private String id;
private String pw;
private String name;

// 생성자 메소드 - 회원가입용
public DTO(String id, String pw, String name) {
    this.id=id;
    this.pw=pw;
    this.name=name;
}

// setter / getter 메소드 생성(Alt+Shift+S)
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getPw() {
    return pw;
}

public void setPw(String pw) {
    this.pw = pw;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}</code></pre><p>}</p>
<pre><code>- DAO 구조
```java
package Model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DAO {

    // 데이터베이스 연결을 위한 로직 작업

    Connection conn=null;//(1-2) 전역변수 작업
    PreparedStatement psmt = null;//(2)
    ResultSet rs = null;//(2)import 작업

    int result= 0; // 결과값 전체적으로 사용하기위한 전역변수 선언

    // 1. 데이터베이스 연결 메소드 만들기(만든 후 try/catch 로 잡아주기)
    public void getCon( ) {
        try {
            // 1-1 드라이버 연결
            Class.forName(&quot;oracle.jdbc.driver.OracleDriver&quot;);
            // 1-3 심부름꾼 권한 부여
            String db_url =&quot;jdbc:oracle:thin:@localhost:1521:xe&quot;;
            String db_id =&quot;c##오라클ID&quot;;
            String db_pw =&quot;오라클 비밀번호&quot;;
            // 1-2 왔다갔다 할 수 있는 심부름꾼 생성(import작업!)
            //conn- 전역에서 사용해야하기때문에 전역변수 미리선언
            conn = DriverManager.getConnection(db_url,db_id,db_pw);

        // *catch문 Exception 통일후 하나만 작성가능*
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 2. DB 연결을 종료하는 메소드 -&gt; 사용 객체의 역순으로 닫기!
    public void close() {
        // rs,psmt,conn이 사용됐다면 null값이 아니기때문에
        //여기서도 try/catch 사용try안으로 if문넣기
            try {
                if(rs != null) {
                rs.close();
                }if(psmt != null) {
                    psmt.close();
                }if(conn != null) {
                        conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    }


    // 3. 회원가입을 위한 메소드 생성
    public int join(DTO dto) {
        // getCon 연결
        getCon();
        // 무엇이 들어올지 모르기때문에 일단 ? 채워넣기
        String sql = &quot;INSERT INTO MEMBERINFO VALUES(?,?,?)&quot;;
        // sql 문법 작성에서도 문제될수도 있으니 try/catch 사용
        try {
            // 심부름꾼 일시키기
            psmt =conn.prepareStatement(sql);
            // ? 값을 채워줘야 하니 데이터 집어넣는 작업
            // dto안에 3개 있기때문에 각각 집어넣기 위한 작업
            psmt.setString(1,dto.getId());
            psmt.setString(2,dto.getPw());
            psmt.setString(3,dto.getName());

            // sql 실행 메소드
            // - excuteQuery() : 데이터가 바뀌지않는다면,ex)조회(select).. 
            // - excuteUpdate() : 데이터가 바뀐다면, ex)삽입,수정,삭제..
            result =psmt.executeUpdate();// int형으로 결과값 확인가능
            // 회원가입 위한 메소드 join 실행하기위해 result 사용,지역변수이기 때문에미리 result 선언해주기
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //catch 기준으로 추가(닫아줘야하기때문)
        finally {
            close();
        }
        return result;//맨 마지막에 선언

    }

    // 1. 드라이버 동적로딩 -&gt; Class.forName()
    // 2. DB 연결  
    // 3. SQL문 작성 및 전송
    // 4. 사용 객체 닫아주기

}</code></pre>]]></description>
        </item>
    </channel>
</rss>