JSP/SERVLET
2018.10.18 / 15:29

(JSP) °£´Ü OpenAPI ¸¸µé±â

hanulbit
Ãßõ ¼ö 220

¾Û ÀÛ¾÷À» ÇÏ´Ù º¸¸é ¼­¹ö¿¡¼­ ÇØÁÖ¾úÀ¸¸é ÇÏ´Â ÀÛ¾÷µéÀÌ ÀÖ´Ù. ƯÈ÷ ¾ÆÀÌÆù ¾ÛÀÇ °æ¿ì ¾ÖÇà ½É»ç°¡ ÃÖ¼Ò ÀÏÁÖÀÏÀÇ °æ¿ì°¡ ¸¹±â ¶§¹®¿¡ ÆĽÌÇÏ´Â ºÎºÐÀ̳ª ¿¬µ¿ÇÏ´Â ¿ÜºÎ API°¡ º¯°æµÇ´Â °æ¿ì ¾ÆÀÌÆù ¾Û³»¿¡¼­ ÇØ´ç Äڵ尡 ÀÖÀ¸¸é º¯°æÀ» ÇÏ´õ¶óµµ »ç¿ëÀÚ°¡ ´Ù½Ã º»·¡ÀÇ ±â´ÉÀ» ¾²·Á¸é ½Ã°£ÀÌ ¿À·¡ °É¸°´Ù. 

³»°¡ ¿øÇÏ´Â°Ç ´Ü ÇÑ°¡Áö¿´´Ù. HTTP GET ¹æ½ÄÀ¸·Î ¾î¶² µ¥ÀÌÅ͸¦ Àü´ÞÇÏ¸é ±×¿¡ µû¸¥ ÀÀ´äÀ» JSON Çü½ÄÀ¸·Î ³Ñ°ÜÁÖ´Â ÀÛ¾÷. ±×°Í¸¸ µÇ¸é µÈ´Ù. CSS, À̹ÌÁö ÀÌ·±°ÍµéÀº À¥ »çÀÌÆ® ¸¸µå´Â °³¹ßÀڵ鿡°Ô ÇÊ¿äÇÑ°Å°í °£´ÜÇÏ°Ô µ¥ÀÌÅÍ󸮸¦ ÇØÁÙ ¼­¹ö°¡ ÇÊ¿äÇÏ°í, ±×°ÍÀ» ¹ÞÀ»¼ö ÀÖ´Â OpenAPI¸¦ ¸¸µå´Â °ÍÀÌ ÇÊ¿äÇß´Ù. 

ÇÊÀÚ´Â ÅèĹÀ» ¼³Ä¡Çغ»Àûµµ, JSP ¹®¹ýÀ» ¾ËÁöµµ ¸øÇÑ´Ù. ±×³É STEP BY STEP À¸·Î Çغ¸°Ú´Ù. 

1. ÅèĹ ¼³Ä¡

– ÀÌ°Ç ¾Ë°í ÀÖ¾ú´Ù. JSP¸¦ ¿Ã¸±·Á¸é ÅèĹÀ̶ó´Â À¥¼­¹ö°¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀ». ±×·¡¼­ ÅèĹÀ» ¹Þ¾Æ¼­ ¼³Ä¡ Çß´Ù. ÀÌ°Ç º°µµÀÇ ¼³¸íÀ» ÇÏÁö ¾Ê°Ú´Ù. ³×À̹ö¿¡ ÅèĹ ¼³Ä¡¶ó°í Ä¡¸é ³ª¿Â´Ù. 

2. Dynamic Web project

– ÅèĹÀ» ¼³Ä¡ÇÏ°í ³ª¼­ ¾î¶»°Ô JSP ÄÚµùÀ» ½ÃÀÛÇؾßÇÏ´ÂÁö ¸·¸·Çß´Ù. ÀÏ´Ü ÀÌŬ¸³½º¸¦ ¿­¾î¼­ new ÇÁ·ÎÁ§Æ®¸¦ ¿­¾î¼­ º¸´Ï web ºÎºÐ¿¡ ¸ð°¡ ¸¹´Ù. ¼²ºÒ¸® ´©¸£±â°¡ ¹«¼­¿ü´Ù. ¹«¼­¿ï¶© ³×À̹ö °Ë»öÀÌ´Ù. Dynamic Web Project¸¦ Ç϶ó°í ÇÑ´Ù. »ç½Ç ³­ ¾ÆÁ÷µµ Static Web Project ¿ÍÀÇ Â÷ÀÌÁ¡À» ¸ð¸£°Ú´Ù. ³»°¡ ÇÏ°í ½ÍÀº°Ç ±×³É »¡¸® ¶ç¿öº¸´Â °Å´Ù. 

OpenAPI ¶ó´Â ÇÁ·ÎÁ§Æ®¸íÀ» ÀÔ·ÂÇÏ°í Target RunTime ¿¡¼­ Apache Tomcat7.0À» ¼±ÅÃÇØ ÁØ´Ù. ¾Õ ´Ü°è¿¡¼­ ¼³Ä¡ÇÑ TomcatÀÇ °æ·Î¸¦ ÀνÄÇÏ°Ô ÇؾßÇÑ´Ù. ±× ÀÌÀ¯´Â ÀÌŬ¸³½º¿¡¼­ ´ÙÀ½ ´Ü°è¿¡¼­ ½ÇÇàÇÒ¶§, ÅèĹÀ» ÀνÄÇؼ­ ±¸µ¿ÇÑ ÈÄ ¸¸µç À¥ ÆäÀÌÁö¸¦ º¸¿©Áֱ⠶§¹®ÀÌ´Ù. 

3. JSP ÆÄÀÏ ¸¸µé±â

– JSP ÆÄÀÏÀÌ ÀÖ¾î¾ß ÇÑ´Ù´Â°Ç ¾Ë°í ÀÖ´Ù. ±Ùµ¥ ¹®Á¦´Â ¾îµð¿¡ ¸¸µå³Ä´Â °ÍÀÌ´Ù. ¾î·Æ´Ù. ¶Ç ³×À̹ö °Ë»öÁú.. ´ëºÎºÐÀÇ »ç¶÷µéÀÌ ¸»ÀÌ WebContent ¹Ø¿¡ ¸¸µé¶ó°í ÇÑ´Ù. test.jsp ÆÄÀÏÀ» ¸¸µé¾ú´õ´Ï ¾Æ·¡¿Í °°Àº È­¸éÀÌ »ý°å°í html Äڵ尡 µé¾î°£ ºÎºÐÀÌ ³ª¿Ô´Ù. 

°£´ÜÇÏ°Ô ½ÇÇàÇØ º¸°íÀÚ Çß´Ù. ÅÂ±× ¾È¿¡ hello world ¸¦ Âï¾î ³Ö°í ½ÇÇàÀ» ´­·¶´Ù. ¾Æ·¡¿Í °°Àº È­¸éÀÌ ³ª¿Í¼­ ±×³É next, finish. ³»¿ëÀ» °£´ÜÈ÷ ¿ä¾àÇÏÀÚ¸é ½ÇÇàÇÏ´Â ÅèĹÀ» ¼±ÅÃÇÏ°í ±× ¾È¿¡ ¹«¾ùÀ» ³ÖÀ» °ÍÀÎÁö¸¦ ¼±ÅÃÇÏ´Â °ÍÀε¥ OpenAPI·Î Àû¾úÀ¸´Ï±î OpenAPI °¡ µé¾î°¡¼­(?) ½ÇÇàµÇ´Â°Í °°´Ù. ¾Æ·¡¿Í °°ÀÌ hello world °¡ Ãâ·ÂµÇ´Â °ÍÀ» º¼ ¼ö°¡ ÀÖ´Ù. 

4. Get ¹æ½ÄÀº ¾î¶»°Ô?

– ÀÚ, ÀÌÁ¦ Get ¹æ½ÄÀ¸·Î »ç¿ëÀÚ È¤Àº ³»°¡ ¸¸µå´Â ¾Û/¼­ºñ½º¿¡¼­ URL¿¡ µ¥ÀÌÅ͸¦ ½Ç¾î¼­ º¸³»±â¸¸ ÇÏ¸é µÈ´Ù. Get ¹æ½Ä°ú Post¹æ½Ä¿¡ ´ëÇÑ °³³äÀº °¡Áö°í ÀÖ¾ú´Ù. Get ¹æ½ÄÀ» ¾î¶»°Ô ¹Þ¾Æ¿Í¾ßÇÒ±î? ÀÌ ¹°À½ÀÌ °¡Àå Å« ¹®Á¦ ¿´´Âµ¥ ¿ª½Ã ¶Ç ³×À̹ö/±¸±Û °Ë»öÀ» ÀÌ¿ëÇß´Ù. 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
hello world
<%
String query = request.getParameter("q");
%>
<%=query %>
</body>
</html>
view rawgistfile1.jsp hosted with ❤ by GitHub

  °Ë»öÇÏ´Â °úÁ¤¿¡¼­ JSP ÀÇ ´ë·«ÀûÀÎ ¹®¹ý¿¡ ´ëÇؼ­ ¾Ë°Ô µÇ¾ú´Âµ¥ ±×³É  <% %>¸¦ ¾²¸é µÈ´Ù°í ÇÑ´Ù. ¾Æ¹«Æ° Get ¹æ½ÄÀ¸·Î ³Ñ¾î¿Â µ¥ÀÌÅ͸¦ °¡Á®¿Ã¶§´Â À§ÀÇ ÄÚµåó·³ reqeust.getParameter(¡°url ÀÎÀÚ¸í¡±) ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. q ¶ó´Â ÀÎÀÚ¿¡ 123À» ³Ñ°Ü º¸¾Ò°í, ¾Æ·¡¿Í °°ÀÌ È­¸éÀÌ Ãâ·ÂµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.    **5. ÀÚ¹Ù ÄÚµå ¿¬°á** – JSP ¾È¿¡¼­ ó¸®Çصµ µÇÁö¸¸, ¸Õ°¡ ±×·± ÄÚµå´Â ½È¾ú´Ù. JSP´Â º¸¿©ÁÖ´Â ºÎºÐÀ̱⠶§¹®¿¡ ½ÇÁ¦ 󸮴 »ç½Ç Àڹ٠Ŭ·¡½º ÆÄÀÏ¿¡¼­ ÇÏ´Â°Ô ¸Â´Ù°í »ý°¢Çß´Ù. °£´ÜÇÏ°Ô JSONÀ¸·Î º¯È¯ÇÏ´Â °ÍÀ» ÀÚ¹Ù ÆÄÀÏ¿¡¼­ ÇØÁִµ¥ GsonÀÌ ±× ¿ªÇÒÀ» ´ã´çÇϱâ·Î Çß´Ù.     JsonMaker ¶ó´Â ÆÄÀÏÀ» Java Resources ¶ó´Â ºÎºÐ¿¡ ÀÚ¹Ù ÆÄÀÏ·Î ¸¸µé¾ú´Ù. ±×¸®°í ```toJson(String query, String category)``` ÇÔ¼ö¸¦ ¸¸µé¾ú´Ù. gson ¶óÀ̺귯¸®¸¦ ´Ù¿î ¹ÞÀºÈÄ, ```WebContent/WEB-INF/lib``` ¿¡ µÎ°í Java Build Path ¼³Á¤½Ã, ÇØ´ç µð·ºÅ丮¾È¿¡ ÀÖ´Â gsonÀ» ÂüÁ¶ÇÏ°Ô ÇÏ¿´´Ù.   toJson()ÇÔ¼ö¿¡¼­´Â get ¹æ½ÄÀ¸·Î ¹ÞÀº ³»¿ëÀ» ±×³É Àü´Þ ¹Þ¾Æ¼­ Gson À¸·Î JSON StringÀ» ¸¸µé¾î¼­ ¸®ÅÏÇÏ´Â ¾ÆÁÖ °£´ÜÇÑ ÇÔ¼öÀÌ´Ù. ÀÌ·¸°Ô Çؼ­ ÀÚ¹Ù ÆÄÀÏÀ» ¿Ï¼ºÇÏ¿´°í, ¸¸µç Àڹ٠Ŭ·¡½º¸¦ JSP¿Í ¿¬µ¿ ÇÏ¿©¾ß ÇÑ´Ù. ±×·¡¾ß °´Ã¼¸¦ ¸¸µé°í ÇÔ¼ö¸¦ ºÒ·¯¼­ ¾µ¼ö°¡ ÀÖÀ»Å×´Ï±î ¸»ÀÌ´Ù.  


ÀÚ¹Ù ÄÚµå ¿¬°áÀ» À§Çؼ­´Â<% page import=¡±ÆÐÅ°Áö.Ŭ·¡½º¸í¡±%> ¸íÀ» »ó´Ü¿¡ ½áÁÖ¾î¾ß ÇÑ´Ù. ±×·¸°Ô ÇÏ°í ³ª¼­ ¾Æ·¡ÀÇ ÄÚµå ó·³ JsonMaker °´Ã¼¸¦ ¸¸µé¾î¼­ ÇÔ¼ö¸¦ È£ÃâÇÏ°í °á°ú¸¦ ´Ù½Ã º¸¿©ÁÖ´Â ½ÄÀ¸·Î ±¸¼ºÇÏ¿´´Ù. 

package com.ash84.test;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
public class JsonMaker
{
public String toJson(String query, String category)
{
Gson gson = new Gson();
List<String> searchData = new ArrayList<String>();
searchData.add(query);
searchData.add(category);
return gson.toJson(searchData);
}
}
view rawgistfile1.java hosted with ❤ by GitHub
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import ="com.ash84.test.JsonMaker" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String query = request.getParameter("q");
String category = request.getParameter("cat");
JsonMaker jMaker = new JsonMaker();
String json = jMaker.toJson(query, category);
%>
<%=json %>
</body>
</html>
view rawgistfile1.jsp hosted with ❤ by GitHub

È­¸éÀ» È®ÀÎÇØ º¸ÀÚ. ´ÙÀ½°ú °°ÀÌ jsonÀÌ ³ª¿À´Â °ÍÀ» È®ÀÎ ÇÒ¼ö°¡ ÀÖ´Ù. ±×·¯³ª ½ÇÁ¦·Î ¾Û¿¡¼­ HTTP Request ¸¦ Çؼ­ µ¥ÀÌÅ͸¦ °¡Á®¿À¸é Html ÀÚü°¡ ³ª¿À´Â °ÍÀ» º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. ½ÇÁ¦ À§ÀÇ ½ÇÇà È­¸é¿¡¼­ ¿ìŬ¸¯ ÆäÀÌÁö ¼Ò½ºº¸±â¸¦ ´©¸£¸é html Äڵ尡 ³ª¿À´Â°ÍÀ» È®ÀÎÇÒ ¼ö°¡ ÀÖ´Ù. 

 

 

³»°¡ ¿øÇÏ´Â °ÍÀº ¼ø¼ö JSON String  À̱⠶§¹®¿¡ ¾Æ·¡¿Í °°ÀÌ html Äڵ尡 Á¦°ÅµÈ ³»¿ëÀ¸·Î ¹Ù²Ù¸é ¼ø¼­ JSON StringÀ» °¡Á®¿Ã ¼ö°¡ ÀÖ´Ù. °³ÀÎÀûÀ¸·Î ÀÛ¾÷ÇßÀ»¶§¿¡´Â JSON À» ¹Þ´Â ÂÊ¿¡¼­ ¹Þ¾Æ¿Â ÈÄ, ´Ù½Ã trimÀ» ÇØÁÖ´Â°Ô ÁÁÀº°Í °°´Ù.

¿øÇÏ´Â ¼öÁØÀÇ ÀÛ¾÷Àº ¿©±â±îÁö ¿´´Ù. ¿©±â¼­´Â »ç½Ç ½±°Ô ¼³¸íÀ» ÇßÁö¸¸ ã°í ´Ù½Ã Çغ¸°í ã°í ´Ù½ÃÇغ¸°í ÇÏ´Â ½ÄÀÇ ¹Ýº¹À̾ú´Ù. ´ÜÀÏ À¥ÆäÀÌÁö Çϳª ¶ç¿ì´Â ÀÛ¾÷À¸·Î Çغ¸¸é º°°Å ¾Æ´ÏÁö¸¸ À¥ ÇÁ·Î±×·¡¹Ö ÀÚü´Â óÀ½À̾ú±â ¶§¹®¿¡ Àç¹Õ¾úÁö¸¸ ÀÌÇØ°¡ ¾ÈµÇ´Â ºÎºÐµµ ¸¹¾Ò´Ù. °£´ÜÇÑ °ÍÀº ½±Áö¸¸ ½ÇÁ¦·Î ÇÊÀÚ°¡ ´ÙÀ½ÀÇ Æ®À§ÅÍ ºÐ¼® ÆäÀÌÁö¸¦ ÆĽÌÇؼ­ APIÈ­ ÇÒ¶§¿¡´Â encoding ¿¡ ´ëÇÑ ºÎºÐ ¿ª½Ã ÇϳªÀÇ °É¸²µ¹·Î ÀÛ¿ëÇϱ⵵ ÇÏ¿´´Ù. 

¹èÆ÷¸¦ ¼³¸íÇÏÁö ¾Ê¾Ò´Âµ¥, »ç½Ç ±×¸® ¾î·ÆÁö ¾Ê´Ù. ÀÌŬ¸³½º¿¡¼­ ¸¸µç ÇÁ·ÎÁ§Æ®¿¡ ¸¶¿ì½º¸¦ ¿ìŬ¸¯Çϸé Export>WAR °¡ Àִµ¥ ±×°ÍÀ» ´©¸£¸é ÇÁ·ÎÁ§Æ®À̸§.WAR ÆÄÀÏÀÌ ¸¸µé¾î Áø´Ù. ½ÇÁ¦ ¹èº¸ÇÒ ¼­¹öÀÇ ÅèĹ/WebApps¿¡ ¸¸µé ÆÄÀÏÀ» µÐä ´Ù½Ã ÅèĹÀ» Àç±âµ¿ Çϸé WAR °¡ Ç®¸®¸é¼­ ÇÁ·ÎÁ§Æ® À̸§ÀÇ µð·ºÅ丮°¡ »ý±â°í URL·Î Á¢±ÙÇÒ ¼ö ÀÖ´Ù. 

ÇÊÀÚ°¡ ´õ ¸ð¸£°Å³ª À߸øµÈ ºÎºÐÀ¸·Î Àü´ÞÇÏ°í ÀÖ´Â ºÎºÐµµ ÀÖÀ»°ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ¿Ö³ÄÇÏ¸é °Åµì ¸»ÇÏÁö¸¸ À¥ ÀÛ¾÷À» óÀ½Çغ»°ÍÀ̱⿡. À߸øµÈ°Í ȤÀº Ãß°¡ÀûÀ¸·Î ¾Ë¾Æ¾ß ÇÏ´Â ºÎºÐÀÌ ÀÖ´Ù¸é ´ñ±ÛÀ» ÅëÇؼ­ ¹Ýµå½Ã ¾Ë·ÁÁֽñæ.