-
์นด์นด์ค ์ง๋ API๋ก ์๋ธ๋ฆฟ&JSP ๊ฒ์ํ ๊ธ์ฐ๊ธฐ ๊ตฌํํ๊ธฐJAVA 2020. 12. 4. 22:10
๐ฏ ์๋ธ๋ฆฟ&JSP ๊ฒ์ํ์ ์นด์นด์ค ์ง๋ API๋ฅผ ์ฌ์ฉํ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณธ๋ค.
์นด์นด์ค ์ง๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ ์ ๋ณด๋ฅผ ํฌํจํ ๊ฒ์๊ธ ์์ฑ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. ์ง๋ ๊ฒ์์ฐฝ์ ํค์๋๋ก ์์น ๊ฒ์ ํ ๋ํ๋๋ ๋ง์ปค๋ฅผ ํด๋ฆญํ๋ฉด ์ง๋ ์๋์ ์ ํ๋ ์ขํ๊ฐ ํ์๋ฉ๋๋ค. [์ ์ฅ]๋ฒํผ ํด๋ฆญ์ ๊ฒ์๋ฌผ ๋ด์ฉ๊ณผ ํจ๊ป ์ ํ๋ ์ขํ๊ฐ DB์ ์ ์ฅ๋ฉ๋๋ค.๊ฐ๋ฐํ๊ฒฝ: ์๋ธ๋ฆฟ&JSP, ๋ง์ด๋ฐํฐ์ค, ์ค๋ผํดDB์ค๋น์ฌํญ: ๊ฒ์ํ DB, ๊ฒ์ํ ๋ชจ๋ธ DTO1. ์นด์นด์ค App Key ๋ฐ๊ธ๋ฐ๊ธฐ
์นด์นด์ค ์ง๋ API ๊ฐ์ด๋ ๐ https://apis.map.kakao.com/web/guide/[์ค๋นํ๊ธฐ] ์์ญ์ ์ฝ์ด๋ณด๊ณ ์นด์นด์ค ๊ฐ๋ฐ์ ์ฌ์ดํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ App Key๋ฅผ ๋ฐ๊ธ๋ฐ์ผ์ธ์.2. ์ฌ์ฉํ ์ง๋ ์ํ ์ ํ
์ ๋ ํค์๋ ๊ฒ์๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด [ํค์๋๋ก ์ฅ์๊ฒ์ํ๊ณ ๋ชฉ๋ก์ผ๋ก ํ์ถํ๊ธฐ] ์ํ์ ์ฌ์ฉํ์ต๋๋ค.HTML์ ํฌํจํ ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.3. JSPํ์ด์ง์ API ์คํฌ๋ฆฝํธ ์ฝ์
freeBoardWrite.jsp:<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=๋ฐ๊ธ๋ฐ์ APP KEY๋ฅผ ์ฌ์ฉํ์ธ์&libraries=services"></script>๋ฐ๊ธ๋ฐ์ APP KEY๋ฅผ ์ฌ์ฉํ์ธ์
๋ถ๋ถ์ 1๋ฒ์์ ๋ฐ๊ธ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ ํค๋ฅผ ๋ฃ์ต๋๋ค.4. ์คํ์ผํ๊ทธ ์ฝ์
์๋จ์ ์๋ ์์ฃผ ๊ธด ์คํ์ผ ํ๊ทธ๋ฅผ head์ ๋ณต๋ถํฉ๋๋ค.5. Body ์์ฑ
<%//๋ก๊ทธ์ธ ์ ๋ณด ์ป์ด์ค๊ธฐMemberDTO dto = (MemberDTO)session.getAttribute("login");String userid = dto.getUserID();%>ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ๊ธฐ๋ฅ์ด ๊ตฌํ๋์ด์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ DB์์ ์ป์ด์ต๋๋ค. ์์ฑ์๋ช ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ์ id๋ฅผ ํ์ฑํ์ต๋๋ค.๊ฒ์๋ฌผ ์์ฑ ํผ ๋ง๋ค๊ธฐ
<form action="FreeBoardWriteServlet" method="post">ํผ ๋ฐ์ดํฐ ์ ๋ ฅ ํ submit ํ๋ฉด FreeBoardWriteServlet์์ ๊ฒ์๋ฌผ insert ๋ก์ง์ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.<label for="title">์ ๋ชฉ</label><input type="text" name="title" id="title">์ ๋ชฉ์์ญ์ ๋๋ค. ์๋ธ๋ฆฟ์์ ํ์ฑํ ์ ์๊ฒ name ์์ฑ์ ๊ผญ ์ง์ ํด์ค๋๋ค.<label for="userid">์์ฑ์</label><input type="text" name="userid" id="userid" value="<%= userid %>" readonly>์์ฑ์ ์์ญ์ ๋๋ค. ์์์ ํ์ฑํ userid๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๊ณ ์์ ๋ถ๊ฐ๋ฅํ๊ฒ readonly๋ฅผ ์ง์ ํด์ค๋๋ค.<label for="content">๋ด์ฉ</label><textarea name="content" id="content" cols="30" rows="7" style="padding:20px"></textarea>๊ธ๋ด์ฉ ์์ญ์ ๋๋ค.์ง๋ ํ์ ์์ญ ๋ง๋ค๊ธฐ
์ด ๋ถ๋ถ์ ๋ณต๋ถํฉ๋๋ค. ์ด๋ฏธ ์ง๋์์ญ์ด form ํ๊ทธ ์์ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ์๋ form ํ๊ทธ๋ ์ง์ฐ๊ณ ๊ฒ์๋ฒํผ์ ํด๋ฆญ์ด๋ฒคํธ ์์ฑ์ ์ง์ ํ์ต๋๋ค.<input type="button" id="searchBtn" onclick="searchPlaces()" value="๊ฒ์">searchPlaces() ์ด ํจ์๋ ์คํฌ๋ฆฝํธ ์ฝ๋์ ์๋ ํจ์์ ๋๋ค.์คํฌ๋ฆฝํธ ์ฝ๋ ์ ์ฒด ์ฝ์
์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ์ฒด ๋ณต๋ถํ๊ณ ํ์ํ ๋ถ๋ถ์ ์์ ํ์ต๋๋ค.for ( var i=0; i<places.length; i++ ) {๋ฐ๋ชฉ๋ฌธ ๋์๊ฐ๊ณ ์๋ ์ด ๋ถ๋ถ ์ดํด๋ณด๊ธฐError !
์ขํ ์ ๋ณด์ ์์น์ด๋ฆ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ง์ปค์ ํด๋ฆญ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ถ๋ถ์์ mouseover๋ฅผ ๋จ์ํ 'click'์ผ๋ก ๋ฐ๊พผ๋ค๊ณ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์์ต๋๋ค.๋ฐ๋ณต๋ฌธ ์์ ์๊ธฐ ๋๋ฌธ์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๊ฑธ์์ ๊ฒฝ์ฐ ๋ง์ง๋ง ๋ง์ปค์๋ง ์ด๋ฒคํธ๊ฐ ๋ฑ๋ก๋์ด์ ๊ณ์ ๋๊ฐ์ ์ขํ๋ง ์ฐ๊ณ ์์์ต๋๋ค. ๊ฒ์ํด๋ณด๋ ํด๋ก์ ํํ๊ฐ ํ์ํ์ต๋๋ค.Fix !
(function (marker, title) {kakao.maps.event.addListener(marker, 'click', (function(placePosition) {displayInfowindow(marker, title);return function() {// ์ขํ์ ๋ณด๋ฅผ ํ์ฑํ๊ธฐ ์ํด hidden input์ ๊ฐ ์ง์ $("#latitude").val(placePosition.La);$("#longitude").val(placePosition.Ma);$("#placeName").val(title);// #result ์์ญ์ ์ขํ์ ๋ณด ์ถ๋ ฅvar resultDiv = document.getElementById('result');resultDiv.innerHTML = '์ ํํ์ ์์น๋ ' +'"'+title+'"' +placePosition+' ์ ๋๋ค';}})(placePosition));์ด ์ ์ฉํ ๋๊ธ ๋๋ถ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ต๋๋ค.ํธ๋ค๋ฌ ํจ์๋ ์ขํ์ ๋ณด๊ฐ ๋ด๊ธด placePosition ๋ณ์๋ฅผ ๋ฐ์์ค๊ณ ํจ์๋ฅผ ๋ฆฌํดํฉ๋๋ค.placePosition ๊ฐ์ฒด๋ฅผ ์ฝ์์ ์ฐ์ด๋ณด๋ La์ Ma๋ก ๊ฒฝ๋ ์๋ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์๋ธ๋ฆฟ์ ๋๊ฒจ์ฃผ๊ธฐ ์ํด hidden input์ value๊ฐ์ผ๋ก ์ง์ ํด์คฌ์ต๋๋ค.ํด๋ฆญํ ์์น์ ๋ณด๋ฅผ div ์์ญ์ innerHTML๋ก ์ถ๋ ฅ๊น์ง ํ๊ณ ํด๋ฆญํธ๋ค๋ฌ๋ ์ฆ์ํธ์ถ๋ฉ๋๋ค.// ํค์๋ ๊ฒ์์ฐฝ์์ ์ํฐ ์น ๊ฒฝ์ฐ ํ์ด์ง ์ด๋ ๋ฐฉ์ง$("#keyword").on("keydown", () => {if (event.keyCode === 13) {event.preventDefault();}})์ง๋ ๊ฒ์์ฐฝ์์ ์ต๊ด์ ์ผ๋ก ์ํฐ๋ฅผ ์ณค๋ค๊ฐ ํ์ด์ง๊ฐ ์ ํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ง๊ธฐ ์ํด ๊ฒ์์ฐฝ์ ์ด๋ฒคํธ๋ฅผ ํ๋ ์ถ๊ฐํ์ต๋๋ค. ์ด์ ์คํฌ๋ฆฝํธ ์์์ ์์ ํ ๋ถ๋ถ์ ๋๋ฌ์ต๋๋ค.<input type="hidden" id="placeName" name="placeName" value=""><input type="hidden" id="latitude" name="latitude" value=""><input type="hidden" id="longitude" name="longitude" value=""><div id="result"></div>์ฌ์ ํ ํผ ์์์ ํ์ํ ์์๋ฅผ ์์ฑํฉ๋๋ค. ์์์ selectํ๋ hidden ์ธํ๊ณผ ์์น๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ div ์์ญ์ ๋๋ค.<input type="submit" value="์ ์ฅ"></form>๋ง์ง๋ง์ผ๋ก submit ๋ฒํผ๊น์ง ๋ง๋ค๊ณ ํผ์ด ๋๋ฌ์ต๋๋ค.6. Servlet ์์ฑ
FreeBoardWriteServlet:// ๋ฐ์ด๋ ํ์ฑString title = request.getParameter("title");String userid = request.getParameter("userid");String content = request.getParameter("content");String placeLa = request.getParameter("latitude");String placeMa = request.getParameter("longitude");String placeName = request.getParameter("placeName");ํผ์์ ๋์ด์จ ๋ฐ์ดํฐ๋ฅผ ํ์ฑํฉ๋๋ค.// ๊ฒ์ํDTO ํ์ ์ผ๋ก ๊ฐ์ฒด์์ฑFreeBoardDTO fDTO = new FreeBoardDTO(0, title, userid, content,null, 0, placeName, placeLa, placeMa);๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๊ฒ์ํ DTO ํ์ ์ผ๋ก ์์ฑ์ ํ์์ ๋ง๊ฒ ํ์ฑํ ๋ฐ์ดํฐ๋ฅผ ์ธํ ํด์ค๋๋ค.// service ๊ฐ์ฒด ์์ฑ ํ db insert ์ฒ๋ฆฌFreeBoardService service = new FreeBoardService();service.insert(fDTO);์๋น์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ธํ ๋ ๊ฒ์ํ dto๋ฅผ insert๋ก์ง์ผ๋ก ๋๊ฒจ์ค๋๋ค.// ๊ฒ์ํ ๋ชฉ๋ก์ผ๋ก ์ด๋response.sendRedirect("FreeBoardListServlet");insert ์ฒ๋ฆฌ ํ ๊ฒ์ํ ๋ชฉ๋ก์ผ๋ก ํ์ด์ง๋ฅผ ์ด๋์ํต๋๋ค.7. ๊ฒ์๊ธ ๋ฐ์ดํฐ insert
// servicepublic void insert(FreeBoardDTO dto) {SqlSession session = OracleSqlSessionFactory.getSession();FreeBoardDAO dao = new FreeBoardDAO();try {dao.insert(session, dto);session.commit();} catch (Exception e) {e.printStackTrace();} finally {session.close();}}// daopublic void insert(SqlSession session, FreeBoardDTO dto) {session.insert("FreeBoardMapper.insert", dto);}// mybatis Mapper<insert id="insert" parameterType="FreeBoardDTO">insert into freeBoard(num, title, userid, content, writeday,readcnt, placeName, placeLa, placeMa)values(freeBoard_seq.nextval, #{title}, #{userid}, #{content}, sysdate,0, #{placeName}, #{placeLa}, #{placeMa})</insert>DB์ ์ ๋ค์ด๊ฐ๋์? ์ด์ ๋ชจ๋ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ด ๋๋ฌ์ต๋๋ค ๐๐ NEXT : ์นด์นด์ค ์ง๋ API๋ก ์๋ธ๋ฆฟ&JSP ๊ฒ์๋ฌผ ์์ธ๋ณด๊ธฐ ๊ตฌํํด๋ณด๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ปจํ ์ด๋ ์์กด์ฑ ์ฃผ์ - ์์ฑ์, setter๋ฉ์๋ ์ฌ์ฉ (0) 2020.11.08 ์คํ๋ง ํ๋ ์์ํฌ STS3 ์ค์น, ๊ฐ๋ฐํ๊ฒฝ ์ค์ (0) 2020.10.21 Servlet ์๋ธ๋ฆฟ ๊ฐ์ฒด์ ์์ฒญ-์๋ต์ฒ๋ฆฌ (0) 2020.09.20 ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ์ ์๋ธ๋ฆฟ Servlet (0) 2020.09.18 ์ดํด๋ฆฝ์ค tern ์๋ฐ์คํฌ๋ฆฝํธ ์๋์์ฑ ํ๋ฌ๊ทธ์ธ ์ค์ (0) 2020.09.17