使用JSON数据格式模拟股票实时信息
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数据格式模拟股票实时信息相关推荐
- 利用python爬取股票实时信息
注:本次实验使用python3.7以及pycharm完成 网络爬虫 所为爬虫就是建立一个与某个网站的连接 通过该连接获取输入流,读取网站内容.实质上就是一个socket的输入输出操作,根据http状态 ...
- websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室
websocket简介: WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议.它允许服务器主动发送信息给客户端. 和http协议的不同?? HTTP 协议 ...
- 股票实时行情数据大全
股票软件都提供自定义公式的功能,但因为常规股票软件都是点播数据,自定义公式对分时行情完全无效,要想更细腻的分析,只能找股票实时行情接口 一般来说,有如下3种版本 屌丝版 去门户财经频道采集数据,百度, ...
- 使用C#编写一个读取和判断股票实时成交数据的小工具
使用vs2019预览版,.net4.5进行编写,定位为一个数据分析的小工具,对个股的每笔成交进行分析判断,目前想到的就这些功能,并且还存在很多问题,不断完善中. 本身不是专业写程序的,只是处于爱好在闲 ...
- XML和JSON数据格式对比
概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...
- JSON 数据格式解析(转)
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.本文将快速讲解 JSON 格式,并通过代码示例演示如 ...
- android 将数据转换成JSON数据格式并使用JSONObject解析JSON格式的数据
比起XML文件解析,JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量.同时它也有缺点,Json数据的语义性较差,看起来没有XML直观.现在JSON已经被大多数开发人员所接受,在网络 ...
- 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用
json | json-c使用入门 这篇讲的也不错,抽空看下(网络传输json数据) https://www.bilibili.com/video/av669454528?p=3&spm_id ...
最新文章
- DailyTick 开发实录 —— UI 设计
- 程序员接活利器,dataTable组件带你快速开发,摆脱CRUD
- spring boot + spring cloud 基础架构设计
- android device monitor命令行窗口在哪里_Vulkan在Android使用Compute shader
- python3字符串方法_python3
- 判断单链表是否带环?若带环,求环的长度?求环的入口点?(C语言)
- Java 各种日期/时间 对象转Long时间戳
- 本科生 计算机图形学试卷,湖南工程学院《计算机图形学》毕业补考试卷及答案...
- 解析大型.NET ERP系统 自动更新
- websocket 如何知道对方断开_在爱情里你知道该如何和对方相处吗?
- 普元EOS之性能调优
- android投屏到web,安卓投屏神器下载|安卓投屏神器(Web Video Caster)v4.5.4高级版下载 - 99安卓游戏...
- android hdmi 开发,Android TV HDMI开发
- OC-NSString
- 太一星晨解读:负载均衡设备究竟该如何选择?
- 摩托罗拉的新一代智能家庭和婴儿监护亮相香港电子产品展
- Apache日志分割及分析
- catia中的螺旋伞齿轮画法_用catia画齿轮教程
- 如何成为DBA,如何成为高级DBA
- 结构体在cuda核函数里面不能用吗_求职招聘 | 面试机器学习职位,这些知识点你都会了吗?...
热门文章
- 【零基础学Python】爬虫篇 :第十四节--爬虫+词云解决实际问题
- 图(有向图、无向图)
- 大学生电子设计竞赛总结
- 【夜读】这一年,谢谢自己
- Android开发——如何解决三方库中的类名冲突问题
- 创 nginx v1.4.6 部署ThinkPHP 页面访问404 -- 酱油小君搬砖记
- java计算机毕业设计ssm基于Vue的二手商品交易网站z40n1(附源码、数据库)
- pcie转m2装系统win10_M.2接口NVMe SSD固态驱动器安装win10
- Cnopendata唐诗宋词数据
- 有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20个年头上共有多少头母牛