这个实例主要涉及的知识点为:
1. 完成后台模拟股票涨跌的功能
2. 将股票信息组装成JSON格式
3. 用红绿色实时显示股票价格的涨跌
4. 用Tooltip窗口显示股票详细信息
程序的目录结构如下:
1.后台部分
(1)Stock.java源代码:
package bean;
/**
* 用于保存股票的基本信息
* @author 大鹏
*/
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 String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getNow() {
return now;
}
public void setNow(double now) {
this.now = now;
}
public double getToday() {
return today;
}
public void setToday(double today) {
this.today = today;
}
public double getYesterday() {
return yesterday;
}
public void setYesterday(double yesterday) {
this.yesterday = yesterday;
}
@Override
public String toString() {
return name + ":" + now;
}
}
(2)GetStockInfoServlet.java源代码:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Stock;
public class GetStockInfoServlet extends HttpServlet {
private HashMap<String, Stock> stocks;
@Override
public void init(ServletConfig config) throws ServletException {
stocks = new HashMap<String, Stock>();
Stock stock1 = new Stock(3000.0, 2990.0, "上证指数", "300001");
Stock stock2 = new Stock(23.32, 22.10, "浦发银行", "000001");
stocks.put(stock1.getId(), stock1);
stocks.put(stock2.getId(), stock2);
System.out.println(stocks);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 返回两支股票的信息
// 1.计算随机数
// ran1介于-20和20之间
double ran1 = Math.random() * 40 - 20;
// ran2介于-0.5和0.5之间
double ran2 = Math.random() - 0.5;
// 2.将随机数和股票的当前价格进行加或减的操作,得到新的当前价格
Stock stock1 = stocks.get("300001");
Stock stock2 = stocks.get("000001");
double temp;
temp = stock1.getNow() + ran1;
// 需要对新的当前价格进行截取,只保留小数点后两位
temp = (int) (temp * 100) / 100.0;
stock1.setNow(temp);
temp = stock2.getNow() + ran2;
temp = (int) (temp * 100) / 100.00;
stock2.setNow(temp);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//out.print(stock1 + "<br>" + stock2 + "<br>");
// 3.返回两支股票的昨天收益,今天开盘和当前价格
// 采用json的数据格式返回股票的信息
StringBuilder builder = new StringBuilder();
//采用数组的方式回传两个股票对象
/*builder.append("[{name:\"").append(stock1.getName()).append("\",id:\"")
.append(stock1.getId()).append("\",yes:")
.append(stock1.getYesterday()).append(",tod:")
.append(stock1.getToday()).append(",now:")
.append(stock1.getNow())
.append("},")
.append("{name:\"").append(stock2.getName()).append("\",id:\"")
.append(stock2.getId()).append("\",yes:")
.append(stock2.getYesterday()).append(",tod:")
.append(stock2.getToday()).append(",now:")
.append(stock2.getNow()).append("")
.append("}]");*/
//采用对象的方式回传两个股票对象
//如果回传表示对象的json,需要在最外层加上一个括号,否则页面解析会出错
builder.append("({\"").append(stock1.getId()).append("\":{name:\"")
.append(stock1.getName()).append("\",id:\"")
.append(stock1.getId()).append("\",yes:")
.append(stock1.getYesterday()).append(",tod:")
.append(stock1.getToday()).append(",now:")
.append(stock1.getNow())
.append("},\"")
.append(stock2.getId()).append("\":{name:\"")
.append(stock2.getName()).append("\",id:\"")
.append(stock2.getId()).append("\",yes:")
.append(stock2.getYesterday()).append(",tod:")
.append(stock2.getToday()).append(",now:")
.append(stock2.getNow()).append("}})");
out.print(builder.toString());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
2.客户端代码
(1)JQueryStock.html源代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquerystock.js"></script>
<title>jquery实例4:动态显示股票信息</title>
</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>
2.jquerystock.js源代码:
//期待进入页面后就可以开始从服务器段获取数据,然后显示股票价格
var obj;
var sid;
$(document).ready(function() {
//页面载入时隐藏弹出框
var stockNode = $("#stock").css("border", "1px solid black")
.width("150px").css("position", "absolute")
.css("z-index", "99")
.css("background-color", "pink")
.css("color", "blue");
stockNode.hide();
var as = $("a");
//定义鼠标进入股票名称时的操作
as.mouseover(function(event) {
//获取到当前股票的代码
var aNode = $(this);
var divNode = aNode.parent();
sid = divNode.attr("id");
updatediv();
//需要控制弹出框的位置
//期待出现在鼠标的右下方
var myEvent = event || window.event;
stockNode.css("left", myEvent.clientX + 5 + "px").css("top", myEvent.clientY + 5 + "px");
//弹出框显示
stockNode.show();
});
as.mouseout(function() {
stockNode.hide();
});
getInfo();
//3.每隔一秒钟和服务器交互一次,用户不用刷新页面就可以不断地看到最新的股票信息
setInterval(getInfo, 1000);
});
function getInfo() {
//清除缓存
var t = (new Date()).getTime()
//1.向服务器发起请求,获取数据
$.get("GetStockInfoServlet?t=" + t, null, function(data) {
//2.接收并解析数据
//var obj = eval(data);
//在get方法中如果加上"json"后就data就直接是json的对象了
obj = data;
//2.1获取两只股票的当前指数信息
var stock1 = obj["300001"];
var stock2 = obj["000001"];
span3 = $("#300001").children("span");
span3.html(stock1.now);
if (stock1.now > stock1.yes) {
//当前价格大于昨天收盘,则显示红色
span3.css("color", "red");
} else {
span3.css("color", "green");
}
var span1 = $("#000001").children("span");
span1.html(stock2.now);
if (stock2.now > stock2.yes) {
//当前价格大于昨天收盘,则显示红色
span1.css("color", "red");
} else {
span1.css("color", "green");
}
updatediv();
}, "json");
}
//更新弹出框中的内容
function updatediv() {
//找到对应的股票对象
var stockobj = obj[sid];
//遍历一个js的对象
for (var proname in stockobj) {
if (proname != "name") {
$("#" + proname).children("span").html(stockobj[proname]);
}
}
}
好了,代码完成,现在看看效果图吧
- 大小: 7.2 KB
- 大小: 12.6 KB
分享到:
相关推荐
在本篇“AJAX学习总结(八)---Jquery实例:动态股票价格”中,我们将深入探讨如何使用jQuery库来实现AJAX技术,以便实时更新网页上的股票价格信息。AJAX,即异步JavaScript和XML,是一种在无需刷新整个页面的情况下...
本文将详细解析"jquery实例1:淡入淡出窗口"这一主题,帮助你理解如何使用jQuery实现网页元素的动态效果,如淡入淡出。 首先,淡入淡出效果是jQuery动画功能的一个经典应用,它使得网页元素可以平滑地从不可见变为...
**jQuery 实例5:仿 Google Suggest 自动补全** 在网页开发中,提供自动补全功能能够极大地提升用户体验,尤其是在搜索或者输入框输入时。Google 的搜索建议就是这一功能的经典应用,它能够根据用户输入的关键词...
标题中的“jQuery入门实例:使用jQuery编写简单的类tooltip的小插件”表明了本文将介绍如何使用jQuery这个流行的JavaScript库来创建一个类似tooltip的功能。jQuery是一个轻量级的库,它简化了HTML文档遍历、事件处理...
总结一下,这个jQuery实例展示了如何利用JavaScript和CSS创建自定义的Tooltip效果。通过监听元素的鼠标悬停事件,动态创建并定位Tooltip元素,实现了更灵活和可定制的用户体验。这只是一个基础示例,实际应用中可以...
**jQuery实例大全** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。这个“jQuery实例大全”集合了众多实用的jQuery特效和功能,旨在帮助开发者快速理解和应用jQuery...
这是一个利用了Ajax技术的一个Jquery实例,动态的生成级联的下拉列表框,在中关村zol中经常可以看到。如果遇到无法显示的情况,请自己阅读代码。
本实例将深入探讨如何使用jQuery库来实现动态、响应式的标签页功能,这在各大论坛和网站中广泛应用。jQuery,作为一款强大的JavaScript库,简化了DOM操作,事件处理以及动画效果,使得创建这样的功能变得轻而易举。 ...
然后,我们可以编写JavaScript代码,这部分是Jquery实例的核心。通过Jquery的选择器,我们可以找到页面上的菜单元素,并应用相应的操作。例如,使用`$("#menu")`选择ID为"menu"的元素,`$(".submenu")`选择所有class...
《jQuery实例大全》 在网页开发中,jQuery是一款极为重要的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。本资源集合,"jQuery实例大全",正是针对这一强大工具的实践应用展示,...
在介绍jQuery实现的动态伸缩导航菜单实例中,我们首先需要了解jQuery这个前端开发常用的JavaScript库。jQuery极大的简化了JavaScript编程,尤其在处理文档结构、事件处理、动画效果以及Ajax交互等方面提供了简便的...
在本文中,我们将深入探讨如何使用jQuery实现一个提示信息渐入渐出的窗口效果。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。通过利用jQuery提供的API,我们可以轻松...
《jQuery实例集合——深入浅出jQuery编程》 jQuery,这个小巧而强大的JavaScript库,自2006年发布以来,已经成为了Web开发中不可或缺的一部分。它以其简洁的API、丰富的功能以及良好的浏览器兼容性,极大地简化了...
《jQuery经典实例60例-动画实例》是学习jQuery库中动画效果的宝贵资源,它涵盖了从基础到高级的各种动画技巧。jQuery库以其简洁、强大的API而闻名,尤其是在处理页面元素的动态展示和动画效果方面。以下将详细介绍...
本文将详细解析"jQuery实例(菜单、滚动、层隐藏等)"的相关知识点,帮助你深入理解并应用这些功能。 首先,我们来看菜单的实现。在网页设计中,菜单是用户导航的重要组成部分。jQuery提供了方便的方法来创建动态和...
《锋利的jQuery》代码实例详解 jQuery是一个广泛应用于Web前端开发的JavaScript库,它以其简洁、高效的特点深受开发者喜爱。本教程通过一系列代码实例,旨在帮助初学者快速理解和掌握jQuery的核心概念与实用技巧。 ...
**jQuery实例源码详解** jQuery,作为一款广泛应用于Web开发的JavaScript库,以其简洁的API、强大的选择器和丰富的插件系统,极大地提高了前端开发效率。"锋利的jQuery实例源码"是一份集合了各种实用jQuery技巧和...
6. **错误提示**:在用户输入不正确或登录失败时,使用jQuery可以方便地更新DOM元素,显示错误信息。例如,可以使用`.html()`或`.text()`方法改变提示文本,`.addClass()`和`.removeClass()`来切换样式,显示红色...
在IT领域,jQuery是一个非常流行的JavaScript库,它极大地简化了JavaScript的使用,使得网页动态化和DOM操作变得简单易行。本篇文章将深入探讨jQuery的使用,并通过一系列实例来帮助理解其核心概念和功能。 首先,...