JQueryStock.html

<!DOCTYPE html>
<head><meta charset="UTF-8"><title>itcast.cn的JQuery实例:动态股票信息</title><script type="text/javascript" src="../jslib/jquery-2.1.4.min.js"></script><script type="text/javascript" src="../jslib/jquerystock.js"></script>
</head>
<body>
<div id="300001"><a href="#">上证指数:</a><span></span></div>
<div id="000001"><a href="#">浦发银行:</a><span></span></div>
<div id="stock"><div id="yes">昨收:<span></span></div><div id="tod">今开:<span></span></div><div id="now">当前:<span></span></div>
</div>
</body>
</html>

Stock.java

/*** Created by IntelliJ IDEA.* User: ming* Date: 2008-6-14* Time: 9:29:13* To change this template use File | Settings | File Templates.* 用于保存股票的基本信息*/
public class Stock {/*** 昨天的收盘价*/private double yesterday;/*** 今天的开盘价*/private double today;/*** 当前价*/private double now;/*** 股票名称*/private String name;/*** 股票代码*/private String id;public Stock(double yesterday, double today, String name, String id) {this.yesterday = yesterday;this.today = today;this.name = name;this.id = id;this.now = today;}public double getYesterday() {return yesterday;}public void setYesterday(double yesterday) {this.yesterday = yesterday;}public double getToday() {return today;}public void setToday(double today) {this.today = today;}public double getNow() {return now;}public void setNow(double now) {this.now = now;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String toString() {return this.name + ":" + this.now;}
}

GetStocksInfo.java

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;/*** Created by IntelliJ IDEA.* User: ming* Date: 2008-6-14* Time: 9:35:50* To change this template use File | Settings | File Templates.* 返回股票当前信息的servlet*/
public class GetStocksInfo extends HttpServlet {//保存股票对象的mapprivate HashMap<String,Stock> stocks;protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {System.out.println("进入后台计算");//返回两只股票的价格信息//1。计算随机数double sz = Math.random() * 20;double pf = Math.random() * 0.5;//通过随机数是奇数还是偶数来判断股票上涨还是下跌boolean flagsz = ((int)(Math.random() * 10)) % 2 == 0;boolean flagpf = ((int)(Math.random() * 10)) % 2 == 0;//2。将随机数和股票的当前价格进行加或减的操作,得到新的当前价格Stock szzs = stocks.get("300001");Stock pfyh = stocks.get("000001");double temp;if (flagsz) {temp = szzs.getNow() + sz;} else {temp = szzs.getNow() - sz;}//需要对新的当前价格进行截取,只保留小数点后两位temp = (int)(temp * 100) / 100.0;szzs.setNow(temp);if (flagpf) {temp = pfyh.getNow() + pf;} else {temp = pfyh.getNow() - pf;}temp = (int)(temp * 100) / 100.0;pfyh.setNow(temp);httpServletResponse.setContentType("text/html;charset=UTF-8");PrintWriter out = httpServletResponse.getWriter();//out.println(szzs + "<br />" + pfyh);//3。返回两只股票的昨天收盘,今天开盘和当前价格//采用json的数据格式返回股票的信息StringBuilder builder = new StringBuilder();//采用数组的方式回传两个股票对象/*builder.append("[{name:\"").append(szzs.getName()).append("\",id:\"").append(szzs.getId()).append("\",yes:").append(szzs.getYesterday()).append(",tod:").append(szzs.getToday()).append(",now:").append(szzs.getNow()).append("},").append("{name:\"").append(pfyh.getName()).append("\",id:\"").append(pfyh.getId()).append("\",yes:").append(pfyh.getYesterday()).append(",tod:").append(pfyh.getToday()).append(",now:").append(pfyh.getNow()).append("}]");*///采用对象的方式回传两个股票对象//如果回传表示对象的json,需要在最外层加上一个括号,否则页面解析会出错builder.append("({").append("\"").append(szzs.getId()).append("\":{name:\"").append(szzs.getName()).append("\",yes:").append(szzs.getYesterday()).append(",tod:").append(szzs.getToday()).append(",now:").append(szzs.getNow()).append("},").append("\"").append(pfyh.getId()).append("\":{name:\"").append(pfyh.getName()).append("\",yes:").append(pfyh.getYesterday()).append(",tod:").append(pfyh.getToday()).append(",now:").append(pfyh.getNow()).append("}})");out.println(builder);}protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {doGet(httpServletRequest, httpServletResponse);}public void init(ServletConfig servletConfig) throws ServletException {stocks = new HashMap<String,Stock>();//创建股票Stock szzs = new Stock(3000.0,2990.1,"上证指数","300001");Stock pfyh = new Stock(23.22, 23.50,"浦发银行","000001");//将两只股票保存在stocks的map中
        stocks.put(szzs.getId(),szzs);stocks.put(pfyh.getId(),pfyh);System.out.println(stocks);}
}

jquerystock.js

 1 //期望进入页面后就可以开始从服务器段获取数据,然后显示股票价格
 2 //保存服务器段返回的股票对象
 3 var obj;
 4 var sid;
 5 $(document).ready(function() {
 6     //页面载入时隐藏弹出框
 7     var stockNode = $("#stock").css("border","1px solid black").width("150px")
 8         .css("position","absolute").css("z-index","99").css("background-color","blue")
 9         .css("color","yellow");
10     stockNode.hide();
11     var as = $("a");
12     //定义鼠标进入股票名称时的操作
13     as.mouseover(function(event){
14         //获取到当前股票的代码
15         var aNode = $(this);
16         var divNode = aNode.parent();
17         sid = divNode.attr("id");
18         //找到对应的股票对象
19         updatediv();
20
21         //需要控制弹出框的位置
22         /*
23          //1.找到当前连接的位置
24          var offset = aNode.offset();
25          //2。设置弹出框的位置
26          stockNode.css("left",offset.left + "px").css("top",offset.top + aNode.height() + "px");
27          */
28         //期望出现在鼠标的右下方
29         var myEvent = event || window.event;
30         stockNode.css("left",myEvent.clientX + 5 + "px").css("top",myEvent.clientY + 5 + "px");
31
32
33
34
35         //弹出框显示
36         stockNode.show();
37
38     });
39     //定义鼠标离开股票名称时的操作
40     as.mouseout(function() {
41         //弹出框隐藏
42         stockNode.hide()
43     })
44     getInfo();
45     //3。每隔一秒钟和服务器交互一次,用户不用刷新页面就可以不断地看到最新的股票信息
46     setInterval(getInfo,1000);
47 });
48
49 //从服务器段获取数据并显示在页面上的的方法
50 function getInfo() {
51     //1。向服务器发起请求,获取数据
52     $.get("/Lesson6_jQuery_Demo1/GetStockInfo", null, function(data) {
53         //2.接收并解析数据
54         obj = eval(data);
55         //2.1获取两只股票的当前指数信息
56         var szzs = obj["300001"];  //obj.300001
57         var pfyh = obj["000001"];
58         /*
59          遍历一个js的对象
60          for (var stockid in obj) {
61          var stock = obj[stockid];
62          }
63          */
64         //2.2找到页面中对应的节点,然后填充最新的股票价格
65         var span3 = $("#300001").children("span");
66         span3.html(szzs.now);
67         if (szzs.now > szzs.yes) {
68             //当前价格大于昨天收盘,则显示红色
69             span3.css("color","red");
70         } else {
71             span3.css("color","green");
72         }
73         var span1 = $("#000001").children("span");
74         span1.html(pfyh.now);
75         if (pfyh.now > pfyh.yes) {
76             //当前价格大于昨天收盘,则显示红色
77             span1.css("color","red");
78         } else {
79             span1.css("color","green");
80         }
81         updatediv();
82     })
83 }
84
85 //更新弹出框中得内容
86 function updatediv() {
87     var stockobj = obj[sid];
88     for (var proname in stockobj) {
89         if (proname != "name") {
90             //找到对应的弹出框中的div节点,然后找到span字节点,将数据填充
91             $("#" + proname).children("span").html(stockobj[proname]);
92         }
93     }
94 }

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>GetStockInfo</servlet-name><servlet-class>GetStocksInfo</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>GetStockInfo</servlet-name><url-pattern>/GetStockInfo</url-pattern></servlet-mapping>
</web-app>

JSON格式相当于是键值对对象

转载于:https://www.cnblogs.com/sherrykid/p/4575136.html

使用JSON数据格式模拟股票实时信息相关推荐

  1. 利用python爬取股票实时信息

    注:本次实验使用python3.7以及pycharm完成 网络爬虫 所为爬虫就是建立一个与某个网站的连接 通过该连接获取输入流,读取网站内容.实质上就是一个socket的输入输出操作,根据http状态 ...

  2. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室

    websocket简介: WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议.它允许服务器主动发送信息给客户端. 和http协议的不同?? HTTP 协议 ...

  3. 股票实时行情数据大全

    股票软件都提供自定义公式的功能,但因为常规股票软件都是点播数据,自定义公式对分时行情完全无效,要想更细腻的分析,只能找股票实时行情接口 一般来说,有如下3种版本 屌丝版 去门户财经频道采集数据,百度, ...

  4. 使用C#编写一个读取和判断股票实时成交数据的小工具

    使用vs2019预览版,.net4.5进行编写,定位为一个数据分析的小工具,对个股的每笔成交进行分析判断,目前想到的就这些功能,并且还存在很多问题,不断完善中. 本身不是专业写程序的,只是处于爱好在闲 ...

  5. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  6. JSON 数据格式解析(转)

    JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.本文将快速讲解 JSON 格式,并通过代码示例演示如 ...

  7. android 将数据转换成JSON数据格式并使用JSONObject解析JSON格式的数据

    比起XML文件解析,JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量.同时它也有缺点,Json数据的语义性较差,看起来没有XML直观.现在JSON已经被大多数开发人员所接受,在网络 ...

  8. 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  9. JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用

    json | json-c使用入门 这篇讲的也不错,抽空看下(网络传输json数据) https://www.bilibili.com/video/av669454528?p=3&spm_id ...

最新文章

  1. DailyTick 开发实录 —— UI 设计
  2. 程序员接活利器,dataTable组件带你快速开发,摆脱CRUD
  3. spring boot + spring cloud 基础架构设计
  4. android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
  5. python3字符串方法_python3
  6. 判断单链表是否带环?若带环,求环的长度?求环的入口点?(C语言)
  7. Java 各种日期/时间 对象转Long时间戳
  8. 本科生 计算机图形学试卷,湖南工程学院《计算机图形学》毕业补考试卷及答案...
  9. 解析大型.NET ERP系统 自动更新
  10. websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
  11. 普元EOS之性能调优
  12. android投屏到web,安卓投屏神器下载|安卓投屏神器(Web Video Caster)v4.5.4高级版下载 - 99安卓游戏...
  13. android hdmi 开发,Android TV HDMI开发
  14. OC-NSString
  15. 太一星晨解读:负载均衡设备究竟该如何选择?
  16. 摩托罗拉的新一代智能家庭和婴儿监护亮相香港电子产品展
  17. Apache日志分割及分析
  18. catia中的螺旋伞齿轮画法_用catia画齿轮教程
  19. 如何成为DBA,如何成为高级DBA
  20. 结构体在cuda核函数里面不能用吗_求职招聘 | 面试机器学习职位,这些知识点你都会了吗?...

热门文章

  1. 【零基础学Python】爬虫篇 :第十四节--爬虫+词云解决实际问题
  2. 图(有向图、无向图)
  3. 大学生电子设计竞赛总结
  4. 【夜读】这一年,谢谢自己
  5. Android开发——如何解决三方库中的类名冲突问题
  6. 创 nginx v1.4.6 部署ThinkPHP 页面访问404 -- 酱油小君搬砖记
  7. java计算机毕业设计ssm基于Vue的二手商品交易网站z40n1(附源码、数据库)
  8. pcie转m2装系统win10_M.2接口NVMe SSD固态驱动器安装win10
  9. Cnopendata唐诗宋词数据
  10. 有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20个年头上共有多少头母牛