index.jsp
<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
<%@page import="dto.MovieVo"%>
<%@page import="java.util.List"%>
<%@page import="movie.MovieManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<MovieVo> list = MovieManager.getCGVdata();
for(int i = 0; i < list.size(); i++){
out.println(list.get(i).toString());
%><br><%
}
//list -> json 변환
//1. Json obj 사용
//2. 수동으로바꿈
String jsonlike="[";
for(MovieVo m : list){
jsonlike += "{ name:'" + m.getTitle() + "', y:" + m.getLike() + "}, ";
}
//맨 끝것만 마지막 ,제거
jsonlike = jsonlike.substring(0, jsonlike.lastIndexOf(","));//, 전까지 가져와라
jsonlike += "]";
System.out.println(jsonlike);
//jsom 데이터를 위치에 대입하기
request.setAttribute("jsonlike", jsonlike);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<style type="text/css" rel="stylesheet">
.highcharts-figure, .highcharts-data-table table {
min-width: 320px;
max-width: 800px;
margin: 1em auto;
}
.highcharts-data-table table {
font-family: Verdana, sans-serif;
border-collapse: collapse;
border: 1px solid #EBEBEB;
margin: 10px auto;
text-align: center;
width: 100%;
max-width: 500px;
}
.highcharts-data-table caption {
padding: 1em 0;
font-size: 1.2em;
color: #555;
}
.highcharts-data-table th {
font-weight: 600;
padding: 0.5em;
}
.highcharts-data-table td, .highcharts-data-table th, .highcharts-data-table caption {
padding: 0.5em;
}
.highcharts-data-table thead tr, .highcharts-data-table tr:nth-child(even) {
background: #f8f8f8;
}
.highcharts-data-table tr:hover {
background: #f1f7ff;
}
input[type="number"] {
min-width: 50px;
}
</style>
</head>
<body>
<!-- <figure class="highcharts-figure"> -->
<div id="container"></div>
<!-- </figure> -->
<script type="text/javascript">
Highcharts.chart('container', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
title: {
text: '영화가 좋아요(영화 실관람평 지수)'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
accessibility: {
point: {
valueSuffix: '%'
}
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
/* 데이터 */
series: [{
name: 'Brands',
colorByPoint: true,
/* Json형태의 key:value */
data: <%=request.getAttribute("jsonlike") %>
}]
});
</script>
</body>
</html>
main.java
public class main {
public static void main(String[] args) {
MovieManager.getCGVdata();
}
}
MovieManager.java
public class MovieManager {
public static List<MovieVo> getCGVdata() {
Document doc;
List<MovieVo> list = new ArrayList<MovieVo>();
try {
doc = Jsoup.connect("http://www.cgv.co.kr/movies/").get();
//영화제목
//dic태그 안 class명이 box-xontents인것 안에 strong태그 안의 class명이 title인것
Elements titles = doc.select("div.box-contents strong.title");
/* <div class="box-contents">
<a href="/movies/detail-view/?midx=83160">
<strong class="title">반도</strong>
</a> */
//좋아요 %
Elements likes = doc.select("div.box-contents span.percent");
/*
<div class="score">
<strong class="percent">예매율<span>23.0%</span></strong>
<!-- 2020.05.07 개봉전 프리에그 노출, 개봉후 골든에그지수 노출변경 (적용 범위1~ 3위)-->
<div class='egg-gage small'>
<span class='egg good'></span>
<span class='percent'>79%</span>
</div>*/
for (int i = 0; i < 7; i++) {
//영화제목
Element eTitle = titles.get(i);
String title = eTitle.text();
System.out.print(title+" ");
//좋아요
Element eLike = likes.get(i);
String like = eLike.text().replace("%", "");//%부터 빈문자열로 바꿔라
System.out.println(like);
MovieVo vo = new MovieVo(title, Integer.parseInt(like));
list.add(vo);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
}
MovieVo.java
public class MovieVo implements Serializable {
private String title;
private int like;
public MovieVo() {
// TODO Auto-generated constructor stub
}
public MovieVo(String title, int like) {
super();
this.title = title;
this.like = like;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getLike() {
return like;
}
public void setLike(int like) {
this.like = like;
}
@Override
public String toString() {
return "MovieVo [title=" + title + ", like=" + like + "]";
}
}
'JSP' 카테고리의 다른 글
차트에서 소스구하기 (0) | 2020.07.27 |
---|---|
JSP tag 객체/ include/ forward (0) | 2020.07.27 |
Core tag 기본 /// if/ for/ foreach (0) | 2020.07.27 |
CoreTag jar파일 다운 (0) | 2020.07.27 |
el tag , core tag ///// 객체/ 배열/ 리스트/ map 접근 (0) | 2020.07.27 |