完整流程:
python爬取股票信息-------將信息保存到數據庫----------通過ajax發送post請求到java後臺-----java後臺連接數據庫獲取到數據庫信息-------通過echarts進行展示(柱狀圖、折線圖)
python爬取股票信息就不貼代碼了,主要是後面的。
jsp
1、通過ajax發送post請求到後臺獲取數據進行展示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello ECharts</title>
<!-- 引入使用的ECharts.JS -->
<script src="echarts.js"></script>
<script src="jquery.min.js"></script>
</head>
<body>
<!--設置展示ECharts圖表的區域 -->
<div id="myDiv" style="height: 750px;width:1000px;"></div>
<script type="text/javascript">
function loadData(option) {
$.ajax({
type : 'post', //傳輸類型
async : false, //同步執行
url : 'bar.do', //web.xml中註冊的Servlet的url-pattern
data : {},
dataType : 'json', //返回數據形式爲json
success : function(result) {
if (result) {
//初始化xAxis[0]的data
option.xAxis[0].data = [];
for (var i=0; i<result.length; i++) {
option.xAxis[0].data.push(result[i].day);
}
//因爲我是進行了3個數據方面進行的展示,所以寫了三個,下面的命名請原諒
option.series[0].data = [];
for (var i=0; i<result.length; i++) {
option.series[0].data.push(result[i].kaipan);
//option.series[0].data.push(result[i].shoupan);
}
//初始化series[1]的data
option.series[1].data = [];
for (var i=0; i<result.length; i++) {
option.series[1].data.push(result[i].kaipan);
}
option.series[2].data = [];
for (var i=0; i<result.length; i++) {
option.series[2].data.push(result[i].heightmax);
}
}
},
error : function(errorMsg) {
alert("加載數據失敗");
}
});
}
var myChart = echarts.init(document.getElementById('myDiv'));
var option = {
tooltip : {
show : true ,
formatter:'名稱:{a}<br>時間:{b}<br>金額:{c}'
},
title:{
text:"股票價格趨勢"
},
legend : {
data : [ '開盤','收盤','最高價' ]
},
xAxis : [ {
type : 'category' ,
axisLabel: {
formatter: function (value) {
return echarts.format.formatTime('MM-dd', value);
}
}
} ],
//滑動時間軸
dataZoom: [
{
type: 'slider',
show: true,
start: 94,
end: 100,
handleSize: 8
},
{
type: 'inside',
start: 94,
end: 100
},
{
type: 'slider',
show: true,
yAxisIndex: 0,
filterMode: 'empty',
width: 12,
height: '70%',
handleSize: 8,
showDataShadow: false,
left: '93%'
}
],
yAxis : [ {
type : 'value'
} ],
series : [ {
name : '開盤',
type : 'bar',
markPoint:{
data:[
{type:'max',name:'最大值'},
{type:'min',name:'最小值'}
]
} ,
markLine:{
data:[
{type:'average',name:'平均值',itemStyle:{
normal:{
color:'red'
}
}}
]
}
},{
name:'收盤',
type:'line',
markPoint:{
data:[
{type:'max',name:'最大值'},
{type:'min',name:'最小值'}
]
} ,
markLine:{
data:[
{type:'average',name:'平均值',lineStyle:{
normal:{
color:'black'
}
}}
]
}
},{
name:'最高價',
type:'line',
markPoint:{
data:[
{type:'max',name:'最大值'},
{type:'min',name:'最小值'}
]
} ,
markLine:{
data:[
{type:'average',name:'平均值',lineStyle:{
normal:{
color:'blue'
}
}}
]
}
},
]
};
//加載數據到option
loadData(option);
//設置option
myChart.setOption(option);
</script>
</body>
</html>
2、barCandBean.java
package com.helloBar;public class barCandBean {
private String day;
private String shoupan;
private String kaipan;
private String heightmax;
//private String slowmin;
public String getDay() {
return day;
}
public String getHeightmax() {
return heightmax;
}
public void setHeightmax(String heightmax) {
this.heightmax = heightmax;
}
public String getShoupan() {
return shoupan;
}
public void setShoupan(String shoupan) {
this.shoupan = shoupan;
}
public void setDay(String day) {
this.day = day;
}
public String getKaipan() {
return kaipan;
}
public void setKaipan(String kaipan) {
this.kaipan = kaipan;
}
}
3、BarCandDao.java
package com.helloBar;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class barCandDao {
Connection connection;
public Connection getConnection() {
try {
String name = "xxx";//用戶名
String password = "xxx";//密碼
String url = "jdbc:mysql://127.0.0.1:3306/stockdatabase";//連接stockdatabase數據庫
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public ArrayList<barCandBean> listAll() {
ArrayList<barCandBean> list = new ArrayList<barCandBean>();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = this.getConnection().prepareStatement("SELECT * FROM stock_600000");rs = pstmt.executeQuery();
while (rs.next()) {
barCandBean bar = new barCandBean();
bar.setKaipan(rs.getString("kaipan"));
bar.setDay(rs.getString("day"));
bar.setHeightmax(rs.getString("heightmax"));
bar.setShoupan(rs.getString("shoupan"));
//bar.setSlowmin(rs.getString("slowmin"));
list.add(bar);
System.out.println("連接數據庫成功");
}
} catch (Exception e) {
e.printStackTrace();
//System.out.println("連接失敗");
} finally {
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
}
4、HelloBarCand.java
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//創建了一個barcanddao的對象,barcanddao主要是對數據庫的連接和對數據庫的操作
barCandDao barcanddao=new barCandDao();
//調用barcanddao的select_all()方法把從數據庫中讀取所有的數據返回的是一個ArrayList,ArrayList裏面放的是一個barBean
ArrayList<barCandBean> array = (ArrayList<barCandBean>) barcanddao.listAll();
System.out.println("s"+array);
//設置返回時的編碼格式
response.setContentType("text/html; charset=utf-8");
//調用JSONArray.fromObject方法把array中的對象轉化爲JSON格式的數組
JSONArray json=JSONArray.fromObject(array);
System.out.println(json.toString());
//返回給前段頁面
PrintWriter out = response.getWriter();
out.println(json);
out.flush();
out.close();
}
4.web.xml
<servlet><servlet-name>helloBarCand</servlet-name>
<servlet-class>com.helloBar.helloBarCand</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloBarCand</servlet-name>
<url-pattern>/bar.do</url-pattern>
</servlet-mapping>
5、數據庫表就不進行貼了
//其中Java代碼參考其它博客代碼,十分感謝~