先将源代码发了
相关文件名:Stock.java
StockServlet.java
jquery-stock.js
jquery.js
jquery-stock.jsp一个Bean:Stock.java
package module;public class Stock {
//收盘价
private double closing_price;
//开盘价
private double opening_price;
//当前价
private double current_price;
//股票名称
private String stock_name;
//股票编号
private String stock_id;

public Stock(double closing_price, double opening_price, String stock_name,
String stock_id) {
this.closing_price = closing_price;
this.opening_price = opening_price;
this.stock_name = stock_name;
this.current_price = opening_price;
this.stock_id = stock_id;
}

public double getClosing_price() {
return closing_price;
}
public void setClosing_price(double closing_price) {
this.closing_price = closing_price;
}
public double getOpening_price() {
return opening_price;
}
public void setOpening_price(double opening_price) {
this.opening_price = opening_price;
}
public double getCurrent_price() {
return current_price;
}
public void setCurrent_price(double current_price) {
this.current_price = current_price;
}
public String getStock_name() {
return stock_name;
}
public void setStock_name(String stock_name) {
this.stock_name = stock_name;
}
public String getStock_id() {
return stock_id;
}
public void setStock_id(String stock_id) {
this.stock_id = stock_id;
} @Override
public String toString() {
return this.getStock_name() + " : " + this.getCurrent_price() + "<br/>";
}

}
服务器端处理代码:
package servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import module.Stock;public class StockServlet extends HttpServlet { private static final long serialVersionUID = 7020203747034750727L;
private HashMap< String , Stock > stocks;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost( request , response );
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding( "utf-8" );
PrintWriter out = response.getWriter();
//返回两只股票的价格信息 //1.计算随机数
double sz = Math.random()*20;
double pf = Math.random()*0.5;
//通过随机数是奇数还是偶数来判断股票上涨还是下跌
boolean flag_sz = ( (int)(Math.random()*10) ) % 2 == 0;
boolean flag_pf = ( (int)(Math.random()*10) ) % 2 == 0;
//2.将随机数和股票的当前价格进行加或减的操作,得到新的当前价格
Stock szzs = stocks.get("100001");
Stock pfyh = stocks.get("100002");
double temp;

if ( flag_sz ){
temp = szzs.getCurrent_price() + sz;
} else {
temp = szzs.getCurrent_price() - sz;
}
//对当前价格进行截取,只保留后两位
temp = ((int)(temp*100)) / 100.0;
szzs.setCurrent_price( temp );

if ( flag_pf ){
temp = pfyh.getCurrent_price() + pf;
} else {
temp = pfyh.getCurrent_price() + pf;
}
temp = ((int)(temp * 100)) / 100.0;
pfyh.setCurrent_price( temp );
//out.println( szzs + "<br/>" + pfyh );
StringBuilder builder = new StringBuilder(); //采用数组的方式回传两个股票对象
/*builder.append( "[{name:\"" ).append( szzs.getStock_name() );
builder.append( "\" ,id:\"" ).append( szzs.getStock_id() );
builder.append( "\" ,closing_price:" ).append( szzs.getClosing_price() );
builder.append( " ,opening_price:" ).append( szzs.getOpening_price() );
builder.append( " ,current_price:" ).append( szzs.getCurrent_price() );
builder.append( "}," );
builder.append( "{name:\"" ).append( pfyh.getStock_name() );
builder.append( "\" ,id:\"" ).append( pfyh.getStock_id() );
builder.append( "\" ,closing_price:" ).append( pfyh.getClosing_price() );
builder.append( " ,opening_price:" ).append( pfyh.getOpening_price() );
builder.append( " ,current_price:" ).append( pfyh.getCurrent_price() );
builder.append( "}]" );
*/
builder.append( "({" );
builder.append( "\"" ).append( szzs.getStock_id() ).append( "\":{" );
builder.append( "name:\"" ).append( szzs.getStock_name() );
builder.append( "\" ,id:\"" ).append( szzs.getStock_id() );
builder.append( "\" ,closing_price:" ).append( szzs.getClosing_price() );
builder.append( " ,opening_price:" ).append( szzs.getOpening_price() );
builder.append( " ,current_price:" ).append( szzs.getCurrent_price() );
builder.append( "}," );
builder.append( "\"" ).append( pfyh.getStock_id() ).append( "\":{" );
builder.append( "name:\"" ).append( pfyh.getStock_name() );
builder.append( "\" ,id:\"" ).append( pfyh.getStock_id() );
builder.append( "\" ,closing_price:" ).append( pfyh.getClosing_price() );
builder.append( " ,opening_price:" ).append( pfyh.getOpening_price() );
builder.append( " ,current_price:" ).append( pfyh.getCurrent_price() );
builder.append( "}" );
builder.append( "})" );
out.println( builder.toString() );
} public void init() throws ServletException {
stocks = new HashMap< String , Stock >();
//创建股票
Stock szzs = new Stock( 3498.0 , 3500.0 , "上证指数" , "100001" );
Stock pfyh = new Stock( 253.0 , 255.0 , "浦发银行" , "100002");
//将两只股票放到map中
stocks.put( szzs.getStock_id() , szzs );
stocks.put( pfyh.getStock_id() , pfyh );
System.out.println( stocks );

}}JS代码:var obj;
var sid;$(document).ready( function(){
var stockNode = $( "#stock" ).css( "border" , "1px solid black" )
     .width( "150px" )
     .css( "position" , "absolute" )
     .css( "background-color" , "red" )
     .css( "z-index" , "99" );//设置覆盖,值越大,则优先级越高
var as = $( "a" );
stockNode.hide();
as.mouseover( function(event){
//获取到当前股票的代码
var aNode = $( this );
var divNode = aNode.parent();
sid = divNode.attr( "id" );
//从服务器端返回来的数据中获取到相应的股票
updateDiv();
var keyEvent = event || window.event;
stockNode.css( "left" , keyEvent.clientX + 5 + "px" );
stockNode.css( "top" , keyEvent.clientY + 5 + "px" );

stockNode.show( "slow" );
});
as.mouseout( function(){
stockNode.hide( "slow" );
});

getInfo();
setInterval( getInfo , 1000);

});//从服务器端获取数据并显示到页面上
function getInfo(){
//1.向服务器端发起请求,获取数据
$.get("servlet/StockServlet" , null , function(data){
//2. 接受并解析数据,转换成对象
obj = eval( data );
//alert( obj );
//2.1 获取两只股票的当前指数信息
var szzs = obj[ "100001" ]; //或 var obj.100001;
var pfyh = obj[ "100002" ]; var szzsNode = $("#100001").children( "span" ).html( szzs.current_price );
if ( szzs.current_price > szzs.closing_price ){
//当前价格大于昨天收盘的价格,则显示红色
szzsNode.css( "color" , "red" );
} else {
szzsNode.css( "color" , "green" );
} var pfyhNode = $("#100002").children( "span" ).html( pfyh.current_price );
if ( pfyh.current_price > pfyh.closing_price ){
//当前价格大于昨天收盘的价格,则显示红色
pfyhNode.css( "color" , "red" );
} else {
pfyhNode.css( "color" , "green" );
}
updateDiv();
});
}//更新弹出框中的内容 , 还在getInfo();中调用
function updateDiv() {
//alert( obj );
var stockObj = obj[sid];
for ( var proName in stockObj ){
if ( proName != "name"){
$( "#"+proName ).children("span").html( stockObj[proName] );
}
}
}

解决方案 »

  1.   

    JSP文件相关代码:
    <script type="text/javascript" src="jslib/jquery.js"></script>
    <script type="text/javascript" src="jslib/jquery-stock.js"></script>
    </head> <body>
    <div id="100001">
    <a href="#">上证指数:</a>
    <span></span>
    </div>
    <br/>
    <br/>
    <div id="100002">
    <a href="#">浦发银行:</a>
    <span></span>
    </div>
    <div id="stock" style="display: none;">
    <div id="closing_price">
    收盘价:
    <span></span>
    </div>
    <div id="opening_price">
    开盘价:
    <span></span>
    </div>
    <div id="current_price">
    当前价:
    <span></span>
    </div>
    </div>
    </body>
      

  2.   

    问题描述:
    要实现的功能:模拟股票系统
    在页面上每一秒刷新显示从服务器端传过来的数据
    这个程序在FireFox浏览器下可以很多好的运行
    但是在IE浏览器下接受从服务器端传过来的数据都是一样的
    我使用Debug进行调试
    进行单步跟踪
    确实在IE和FireFox下所有的相关代码都被执行了
    一步一步来的话
    IE浏览器可以刷新数据
    但是如果取消断点
    IE上显示的数据就又不变了
    找不到哪里的问题
    请高手指点IE :7.0
    Tomcat : 6.0.16
    FireFox : 3.0.1
      

  3.   

    IE7据说和某些JS代码不兼容,你可以试试IE8,或者IE6,然后再想办法。
      

  4.   

    尝试这样写setTimeout( getInfo() , 1000);如果能解决这个情况,
    也许是有的浏览器能识别getInfo为一个方法,会自动补上(),而有的不行喵~```
      

  5.   

    setTimeout( "getInfo()" , 1000);
    喵~``