jsp에서 쉽게 차트나 그래프를 표현할 수 있는 api이며, 여러 모양이나 형태로도 손쉽게 구현이 가능하다.


1. Controller에 데이터를 담음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Controller
public class HomeController {
    
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model) {
        
        PercentVO percentVO = new PercentVO();
        
        percentVO.setYesPercent("40");
        percentVO.setNoPercent("60");
        
        System.out.println("debug> percentVO : " + percentVO);
        
        model.addAttribute("percentVO", percentVO);
        
        return "home";
    }    
}
cs

yesPercent에 40, noPercent에 60이라는 값이 들어있는 PercentVO 모델이 있다고 가정한다.



2. jsp Highcharts 구현

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
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Highcharts Example</title>
<!-- Highchars CDN -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript">
$(function() {
    // body > div 부분에 적은 id를 파라미터로 직접 넘긴다.
    Highcharts.chart('container', {
         chart: {
             plotBackgroundColor: null,
            plotBorderWidth: 0,
            plotShadow: false,
            height: 500
         },
         title: {
            text: '',
            align: 'center',
            verticalAlign: 'bottom',
            y: -300,
            x: -80
        },
        credits: {
            enabled: false
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage: 1f}%</b>'
        },
        plotOptions: {
            pie: {
                dataLabels: {
                    enabled: true,
                    distance: -50,
                    style: {
                        fontWeight: 'bold',
                        color: 'white',
                        fontSize: '15px'
                    }
                },
                startAngle: -90,
                endAngle: 90,
                center: ['50%''75%']
            }
        },
        series: [{
            // Highcharts를 pie 형태로 구현했다.
            type: 'pie',
            name'응답률',
            innerSize: '20%',
            /*    
                data: [name:'params1', value:'params2'] 의 형태이다.
                name과 value는 생략이 가능하며, 'params1'과 'params2' 값만 적어도 무방하다.
                * 주의 *
=> Highcharts로 표현하려는 값이 변수일 경우에는 반드시 JSON.parse() 함수 안에
                변수 값을 적어야 한다.
            */
            data: [
                ['YES(${percentVO.yesPercent}%)', JSON.parse('${percentVO.yesPercent}')],
                ['NO(${percentVO.noPercent}%)', JSON.parse('${percentVO.noPercent}')],
            ]
        }]
    });
});
</script>
</head>
<body>
    <div id="container" style="min-width:350px;height:200px;max-width:250px;margin:0 auto"></div>
</body>
</html>

cs

 


실제로 작업 당시 series의 data 부분에 변수를 넣어야 했는데 아무리 검색을 해도 나오지 않았고, JSON 형태로 담아야 파라미터가 출력된다는 검색 결과들에 힌트를 얻어 해결할 수 있었다.

+ Recent posts