2017 JAVA 교육수료/DAY

다양한 부트스트랩 테이블 소스를 제공하는 곳


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




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

Mybatis에서 Java타입으로 불러온 객체를 Gson라이브러리 통해
Json타입의 리스트로 변환 해 준다

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






스프링 스케쥴러 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







참고사이트 http://hellogk.tistory.com/106



BootStrap Theme "BAND"

https://www.w3schools.com/bootstrap/bootstrap_theme_band.asp

+ Recent posts