2017 JAVA 교육수료/DAY
- 109DAY / 부트스트랩 테이블 2017.09.07
- 99DAY / Spring, Mybatis / ChartsJS 로 차트만들기 2017.08.24
- 98DAY / 스프링 스케쥴러 CRON식 2017.08.23
- 94DAY / W3CSchool 테마이용 가짜 쇼핑몰 생성 2017.08.18
109DAY / 부트스트랩 테이블
다양한 부트스트랩 테이블 소스를 제공하는 곳
http://issues.wenzhixin.net.cn/bootstrap-table/
CDN주소를 추가해주기만 하면 검색기능도, 페이지 생성도 할 필요가 없는 부트스트랩 예제이다.
단점은 정말 쉽게할 수 있어서 개발능력이 감퇴할 것 같다.
maven 프로젝트에서는 JSP추가
1 | <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.js"></script> | cs |
99DAY / Spring, Mybatis / ChartsJS 로 차트만들기
1 2 3 4 5 6 7 | <resultMap type="java.util.HashMap" id="statistics"> <result javaType="java.lang.String" property="statsDate" column="date" ></result> <result javaType="java.lang.String" property="statsAmount" column="amount" ></result> </resultMap> | cs |
HashMap리스트로 받으려다가 힘들어서 그냥 DTO를 생성하였따.
getGSON으로 받아올때 차트생성해줘야지만 차트가 그려지는것 같다.
차트JS Sample
http://www.chartjs.org/samples/latest/
JSP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <head> <link rel="shortcut icon" href="resources/files/images/umbrella.ico"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.js"></script> </head> <c:set value="${cooContractNo}" var="no" /> <script> $(document).ready(function() { var chartLabels = []; // 받아올 데이터를 저장할 배열 선언 var chartData = []; var month=""; var cooContractNo = '<c:out value="${no}"/>'; function createChart() { var ctx = document.getElementById("canvas").getContext("2d"); LineChartDemo = Chart.Line(ctx, { data : lineChartData, options : { scales : { yAxes : [ { ticks : { beginAtZero : true } } ] } } }); } //selectList로 월을 선택해서 ajax로 받는다. $('#selectMonth').change(function() { var changeMonth = $('#selectMonth option:selected').val(); month = changeMonth; console.log('month:'+month); }); //버튼을 클릭하면 차트가 그려진다. createChart()함수를 안에다 선언해야지 차트값을 받더라... $('#btn').click(function(){ chartLabels = []; chartData=[]; //getJson으로 데이터 $.getJSON("./getDailyVisitor", { cooContractNo : cooContractNo, month : month }, function(data) { $.each(data, function(key, value) { chartLabels.push(value.statsDate); chartData.push(value.statsAmount); }); lineChartData = { labels : chartLabels, datasets : [ { label : "일별 방문자 수", backgroundColor:"#bfdaf9", borderColor: "#80b6f4", pointBorderColor: "#80b6f4", pointBackgroundColor: "#80b6f4", pointHoverBackgroundColor: "#80b6f4", pointHoverBorderColor: "#80b6f4", fill: false, borderWidth: 4, data : chartData } ] } createChart(); }); }) }) </script> <div class="row"> <div class="container"> <div style="margin-top:20px; margin-left:80px"> <select name="selectMonth" id="selectMonth"> <option value="1">JAN</option> <option value="2">FEB</option> <option value="3">MAR</option> <option value="4">APR</option> <option value="5">MAY</option> <option value="6">JUN</option> <option value="7">JUL</option> <option value="8">AUG</option> <option value="9">SEP</option> <option value="10">OCT</option> <option value="11">NOV</option> <option value="12">DEC</option> </select> <button id="btn">보기</button> </div> </div> <div id="graph" style="width: 80%; margin: 30px;"> <div> <canvas id="canvas" height="350" width="600"></canvas> </div> </div> </div> </div> | cs |
RESTController
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.ksmart.harulook.partner.controller; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.google.gson.Gson; import com.ksmart.harulook.partner.service.PartnerInterface; import com.ksmart.harulook.partner.service.PartnerStatsDto; @RestController public class PartnerRestController { @Autowired private PartnerInterface partnerDao; @RequestMapping(value = "/getDailyVisitor", method = RequestMethod.GET) public String getDailyVisitor(HttpSession session, String month){ String cooContractNo = (String) session.getAttribute("setNo"); Gson gson = new Gson(); HashMap<String,String> map = new HashMap<String,String>(); map.put("cooContractNo",cooContractNo); map.put("month", month); List<PartnerStatsDto> list= partnerDao.selectDailyVisitor(map); return gson.toJson(list); } } | cs |
98DAY / 스프링 스케쥴러 CRON식
스프링 스케쥴러 https://spring.io/guides/gs/scheduling-tasks/
CRON 크론 표현식
초 | 분 | 시 | 일 | 월 | 요일 | 연도
0~59 | 0~59 | 0~23 | 1~31 | 1~12 | 0~6 | 생략가능
요일 : 0 (일요일) ~ 6( 토요일)
? : 설정 값 없을 때 - 일과 요일 에서만 사용가능
* : 모든조건
시작시간/단위 : 시작시간부터 해당 단위 때
시작범위-끝범위 : 시작범위 부터 끝범위까지
L : 마지막 - 일, 요일 에서만 사용가능
W : 가장 가까운 평일 찾는다 - 일 에서만 사용가능
ex) 10W
-10일이 평일 일 때 : 10일에 실행
-10일이 토요일 일 때 : 가장 가까운 평일인 금요일(9일)에 참
-10일이 일요일 일 때 : 가장 가까운 평일인 월요일(11일)에 참
# : 몇주 째인지 찾는다 - 요일 에서만 사용가능
ex) 3#2 : 수요일#2째주 에 참
예제
1) 매월 10일 오전 11시
0 1 1 10 * *
2) 매일 오후 2시 5분 0초
0 5 14 * * *
3) 10분마다 도는 스케줄러 : 10분 0초, 20분 0초...
0 0/10 * * *
4) 조건에서만 실행되는 스케줄러 : 10분 0초, 11분 0초 ~ 15분 0초까지 실행
0 10-15 * * *
스프링 스케줄러 사용하기
servlet-context.xml 환경설정
1. beans태그에 task 속성 추가
1 2 | xmlns:task="http://www.springframework.org/schema/task | cs |
2. xsi:schemaLocation 내에 코드 추가
1 2 | http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd | cs |
3. beans 태그의 자식태그 추가
1 2 3 | <context:component-scan base-package="com.ksmart.harulook.scheduler" /> <task:scheduler id="jobScheduler" pool-size="10" /> <task:annotation-driven scheduler="jobScheduler" /> | cs |
스케줄러 job생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.ksmart.harulook.scheduler; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.ksmart.harulook.hof.service.HofDao; @Component public class Scheduler { Logger log = Logger.getLogger(this.getClass()); @Autowired private HofDao hofdao; /*매월 1일 0시 30분 명예의전당 입력*/ @Scheduled(cron="0 30 0 1 * *") public void HofScheduler() { try{ hofdao.insertHof(); }catch(Exception e){ e.printStackTrace(); } } } | cs |