diff --git a/boot_gradle_security/src/main/java/com/boot/test1/controller/AccountController.java b/boot_gradle_security/src/main/java/com/boot/test1/controller/AccountController.java index 6689b7a..5902358 100644 --- a/boot_gradle_security/src/main/java/com/boot/test1/controller/AccountController.java +++ b/boot_gradle_security/src/main/java/com/boot/test1/controller/AccountController.java @@ -29,148 +29,170 @@ import com.boot.test1.vo.PerformanceInfo; @Controller public class AccountController { - + // 공용 API 사용을위한 발급 KEY - private String PERFORMANCE_KEY = "KEY 값을 넣기.. GIT HUB에는 노출되면 안된당.."; - + private String PERFORMANCE_KEY = "key값 노출되지 않도록 !"; + @Autowired AccountService accountService; - + @Autowired AccountMapper accountMapper; - + Logger log = LoggerFactory.getLogger(this.getClass()); - + // LOGIN @RequestMapping(value = "/login" ) public String login(Model model, HttpServletRequest req) { - + log.info("### /login 입니다 "); return "loginPage"; } - + // LOGIN SUCCESS @RequestMapping("/loginSuccess") public String loginSuccess() { return "index"; } - + // LOGIN Fail @GetMapping("/loginFail") @ResponseBody public String loginFail() { return "Fail !"; } - + // jqgrid 사용해보기 @RequestMapping("/useJqGrid") public String useJqGrid() { return "useJqGrid"; } - + // 공연정보 조회 페이지로 이동. @RequestMapping("/goPerformancePage") public String goPerformancePage() { return "/performanceSelectPage"; } - + // 공공API 호출, 공연정보 @RequestMapping("/performanceAPI") public String callAPI_performance(HttpServletRequest request) throws IOException { - + String sido = request.getParameter("sido"); String realmCode = request.getParameter("realmCode"); String from = request.getParameter("from"); String to = request.getParameter("to"); - - System.out.println( " sido : " + sido + ", realmCode : " + realmCode + ", from : " + from + ", to : " + to ); - - StringBuilder urlBuilder = new StringBuilder("http://www.culture.go.kr/openapi/rest/publicperformancedisplays/realm"); /*URL*/ - urlBuilder.append("?" + URLEncoder.encode("ServiceKey","UTF-8") + "=" + PERFORMANCE_KEY); /*Service Key*/ - urlBuilder.append("&" + URLEncoder.encode("sido","UTF-8") + "=" + URLEncoder.encode(sido, "UTF-8")); /**/ - urlBuilder.append("&" + URLEncoder.encode("realmCode","UTF-8") + "=" + URLEncoder.encode(realmCode, "UTF-8")); /*코드*/ - urlBuilder.append("&" + URLEncoder.encode("rows","UTF-8") + "=" + URLEncoder.encode("10", "UTF-8")); /**/ - urlBuilder.append("&" + URLEncoder.encode("from","UTF-8") + "=" + URLEncoder.encode(from, "UTF-8")); /**/ - urlBuilder.append("&" + URLEncoder.encode("to","UTF-8") + "=" + URLEncoder.encode(to, "UTF-8")); /**/ - - URL url = new URL(urlBuilder.toString()); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - - conn.setRequestMethod("GET"); - conn.setRequestProperty("Content-type", "application/json"); - - System.out.println("Response code: " + conn.getResponseCode()); - - BufferedReader rd; - - if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { - rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); - } else { - rd = new BufferedReader(new InputStreamReader(conn.getErrorStream())); - } - - StringBuilder sb = new StringBuilder(); - String line; - - while ((line = rd.readLine()) != null) { - sb.append(line); - } - - rd.close(); - conn.disconnect(); - - System.out.println(sb.toString()); - - JSONObject jsonObject = XML.toJSONObject(sb.toString()); - String jsonString = jsonObject.toString(); - // System.out.println(" [ json 변환 ] " + jsonString ); - - JSONObject jsonResponse = jsonObject.getJSONObject("response"); - // System.out.println(" [ response만 받아오기 ] " + jsonResponse.toString()); - - JSONObject jsonResponseMsgBody = jsonResponse.getJSONObject("msgBody"); - // System.out.println(" [ msgBody만 받아오기 ] " + jsonResponseMsgBody.toString()); - - int totalCount = jsonResponseMsgBody.getInt("totalCount"); - log.info(" totalCount : " + totalCount); - - if ( totalCount == 0 ) { - log.info(" 해당 조건에 맞는 공연정보가 존재하지 않습니다."); - }else { - JSONArray perforList = (JSONArray)jsonResponseMsgBody.get("perforList"); - - List performanceInfo = new ArrayList(); - - for ( int i = 0 ; i < perforList.length(); i++ ) { - - JSONObject perforInfo = (JSONObject)perforList.get(i); - - PerformanceInfo info = new PerformanceInfo(); - - info.setSeq( String.valueOf(perforInfo.getInt("seq"))) ; - info.setStartDate(String.valueOf(perforInfo.getInt("startDate"))); - info.setEndDate(String.valueOf(perforInfo.getInt("endDate"))); - info.setTitle(perforInfo.getString("title")); - info.setPlace(perforInfo.getString("place")); - info.setRealmName(perforInfo.getString("realmName")); - info.setArea(perforInfo.getString("area")); - info.setThumbnail(perforInfo.getString("thumbnail")); - - performanceInfo.add(info); - System.out.println( i + " 번 째 perforValue : " + perforInfo.toString()); - } - - request.setAttribute("performanceInfo", performanceInfo); - } - return "performanceAPI"; + System.out.println( " sido : " + sido + ", realmCode : " + realmCode + ", from : " + from + ", to : " + to ); + + StringBuilder urlBuilder = new StringBuilder("http://www.culture.go.kr/openapi/rest/publicperformancedisplays/realm"); /*URL*/ + urlBuilder.append("?" + URLEncoder.encode("ServiceKey","UTF-8") + "=" + PERFORMANCE_KEY); /*Service Key*/ + urlBuilder.append("&" + URLEncoder.encode("sido","UTF-8") + "=" + URLEncoder.encode(sido, "UTF-8")); /**/ + urlBuilder.append("&" + URLEncoder.encode("realmCode","UTF-8") + "=" + URLEncoder.encode(realmCode, "UTF-8")); /*코드*/ + urlBuilder.append("&" + URLEncoder.encode("cPage","UTF-8") + "=" + URLEncoder.encode("15", "UTF-8")); /*코드*/ + urlBuilder.append("&" + URLEncoder.encode("rows","UTF-8") + "=" + URLEncoder.encode("4", "UTF-8")); /**/ + urlBuilder.append("&" + URLEncoder.encode("from","UTF-8") + "=" + URLEncoder.encode(from, "UTF-8")); /**/ + urlBuilder.append("&" + URLEncoder.encode("to","UTF-8") + "=" + URLEncoder.encode(to, "UTF-8")); /**/ + + URL url = new URL(urlBuilder.toString()); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + + conn.setRequestMethod("GET"); + conn.setRequestProperty("Content-type", "application/json"); + + System.out.println("Response code: " + conn.getResponseCode()); + + BufferedReader rd; + + if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { + rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + } else { + rd = new BufferedReader(new InputStreamReader(conn.getErrorStream())); + } + + StringBuilder sb = new StringBuilder(); + String line; + + while ((line = rd.readLine()) != null) { + sb.append(line); + } + + rd.close(); + conn.disconnect(); + + System.out.println(sb.toString()); + + JSONObject jsonObject = XML.toJSONObject(sb.toString()); + String jsonString = jsonObject.toString(); + // System.out.println(" [ json 변환 ] " + jsonString ); + + JSONObject jsonResponse = jsonObject.getJSONObject("response"); + // System.out.println(" [ response만 받아오기 ] " + jsonResponse.toString()); + + JSONObject jsonResponseMsgBody = jsonResponse.getJSONObject("msgBody"); + // System.out.println(" [ msgBody만 받아오기 ] " + jsonResponseMsgBody.toString()); + + int totalCount = jsonResponseMsgBody.getInt("totalCount"); + int rows = jsonResponseMsgBody.getInt("rows"); + + // 최대페이지 수 + int maxPage = (totalCount%rows)==0 ? (totalCount/rows) : (totalCount/rows)+1; + + // 마지막 페이지 건수.. 1이면 JSON에 담아준다. + int lastPageNum = totalCount - ( (maxPage-1) * rows); + + int cPage = jsonResponseMsgBody.getInt("cPage"); + + log.info(" totalCount : " + totalCount + ", maxPage : " + maxPage + " lastpageNum : " + lastPageNum); + + if ( totalCount == 0 ) { + log.info(" 해당 조건에 맞는 공연정보가 존재하지 않습니다."); + }else { + + List performanceInfo = new ArrayList(); + + // 데이터가 1건인 경우에는 JSON으로 받도록. + if ( lastPageNum == 1 && cPage == maxPage || totalCount == 1 || rows == 1 ) { + log.info(" 데이터가 1건입니다."); + JSONObject perforInfo = (JSONObject)jsonResponseMsgBody.get("perforList"); + performanceInfo.add(makeJSONresult(perforInfo)); + + }else { + JSONArray perforList = (JSONArray)jsonResponseMsgBody.get("perforList"); + + for ( int i = 0 ; i < perforList.length(); i++ ) { + JSONObject perforInfo = (JSONObject)perforList.get(i); + performanceInfo.add(makeJSONresult(perforInfo)); + log.info( i + " 번 째 perforValue : " + perforInfo.toString()); + } + } + + request.setAttribute("performanceInfo", performanceInfo); + } + return "performanceAPI"; } + private PerformanceInfo makeJSONresult(JSONObject perforInfo) { + + PerformanceInfo info = new PerformanceInfo(); + + info.setSeq( String.valueOf(perforInfo.getInt("seq"))) ; + info.setStartDate(String.valueOf(perforInfo.getInt("startDate"))); + info.setEndDate(String.valueOf(perforInfo.getInt("endDate"))); + info.setTitle(perforInfo.getString("title")); + info.setPlace(perforInfo.getString("place")); + info.setRealmName(perforInfo.getString("realmName")); + info.setArea(perforInfo.getString("area")); + info.setThumbnail(perforInfo.getString("thumbnail")); + + return info; + } + // goHome @RequestMapping("/goHome") public String goHome() { return "index"; } - + } diff --git a/boot_gradle_security/src/main/webapp/WEB-INF/jsp/performanceAPI.jsp b/boot_gradle_security/src/main/webapp/WEB-INF/jsp/performanceAPI.jsp index 4f377ad..a93b7d2 100644 --- a/boot_gradle_security/src/main/webapp/WEB-INF/jsp/performanceAPI.jsp +++ b/boot_gradle_security/src/main/webapp/WEB-INF/jsp/performanceAPI.jsp @@ -4,20 +4,6 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> -<% - JSONArray perforList = new JSONArray(); - - perforList = (JSONArray) request.getAttribute("perforList"); - - if (perforList != null) { - for (int i = 0; i < perforList.length(); i++) { - JSONObject perfor = (JSONObject) perforList.get(i); - System.out.println(" 여기는 jsp페이지 " + perfor.toString()); - } - } -%> - -