【暑假学习笔记】之——使用idea写一个动态刷新网页表格的项目(jQuery对Ajax的支持,servlet,使用JSON进行交互)

先来看一下最后的显示效果:

每隔5秒刷新一次表格

 1.创建一个名为ajax2的web项目,具体步骤见:用Intellij idea新建一个java web+Servlet项目

 2.创建如图所示文件:

3.写Stock这个Javabean对象,包括股票代码,名称,价格:

package bean;

public class Stock {
    private String code;
    private String name;
    private int price;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}

4.写后端代码,ActionServlet:

package web;

import bean.Stock;
import net.sf.json.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class ActionServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service()");
        req.setCharacterEncoding("utf-8");

        //获得请求资源路径
        // 端口号之后的都是。
        String uri = req.getRequestURI();
        System.out.println("uri:" + uri);
        //分析请求资源路径
        String action = uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));
        System.out.println("action:" + action);
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        //依据分析的结果,进行不同的处理
        if ("/quoto".equals(action)) {
            //模拟生成几支股票信息

            List<Stock> stocks = new ArrayList<Stock>();
            Random r = new Random();
            for (int i = 0; i < 8; i++) {
                Stock s = new Stock();
                s.setCode("12345" + r.nextInt(10));
                s.setName("中国李宁" + r.nextInt(10));
                s.setPrice(r.nextInt(1000));
                stocks.add(s);
            }
            //方法的参数可以是 数组或者集合
            JSONArray jsonArray = JSONArray.fromObject(stocks);
            String jsonStr = jsonArray.toString();
            System.out.println(jsonStr);
            out.println(jsonStr);
        }
    }
}

这里把javabean转换成json对象我使用的是json.lib,大家可以用gson或fastson,会比这方便很多。

这里json.lib要导入好几个包,我导入了7个,实际好像6个就够了,我也不知道哪一个不是。。就全部导入了:

导入步骤:File->Project Structure->

如果有一个jar没导对,有可能会出500的错,我调试了很久,如果你也出现我这样的错,请看这个->idea发布到tomcat缺少jar,如何将lib中的单个包部署到tomcat

5.写网页~stock.jsp

<%--
  Created by IntelliJ IDEA.
  User: 71403
  Date: 2018/8/1
  Time: 22:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>股票刷新</title>
    <style>
        #d1 {
            width: 450px;
            height: 350px;
            background-color: greenyellow;
            margin-left: 300px;
            margin-top: 20px;
        }
        #d2 {
            height: 32px;
            background-color: chartreuse;
            color: darkgreen;
        }
        table {
            color: darkgreen;
            font-style: italic;
            font-size: 24px;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/2.0.2/jquery.min.js"></script>
    <script>
        $(function () {
            //页面加载完成执行
            setInterval(quoto,5000);
        });
        //该函数调用ajax对象(XMLHttpRequest)向服务器发送异步请求,
        // 服务返回一个描述股票信息的JSON字符串。
        //通过解析json字符串,获得股票信息,然后更新表格。
        function quoto() {
            //利用jQuery提供得方法来向服务器发送异步请求
            $.ajax({
                "url":"quoto.do",
                "type":"post",
                "dataType":"json",
                "success":function (stocks) {
                    //$.ajax方法会自动将json字符串转换成JavaScript对象
                    //先清空tbody
                    $('#tb1').empty();
                    for (i = 0; i < stocks.length; i++) {
                        var s = stocks[i];
                        //更新表格
                        $('#tb1').append(
                            '<tr><td>'+ s.code
                            + '</td><td>' + s.name
                            + '</td><td>' + s.price
                            + '</td></tr>');

                    }
                }
            });

        }
    </script>
</head>
<body style="font-size: 25px">
    <div id="d1">
        <div id="d2">股票行情</div>
        <div id="d3">
            <table width="100%">
                <thead>
                    <tr>
                        <td>代码</td>
                        <td>名称</td>
                        <td>价格</td>
                    </tr>
                </thead>
                <tbody id="tb1">
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>

6.配置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_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>web.ActionServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

7.部署Tomcat,在开头的创建教程里有哦~ 

扫描二维码关注公众号,回复: 2816011 查看本文章

那么到这里呢,我们就可以运行啦~ 进入第一个图中的地址试一下吧!

撒花完结✿✿ヽ(°▽°)ノ✿✿✿ヽ(°▽°)ノ✿✿✿ヽ(°▽°)ノ✿~~~


谢谢你看到这里!写作仓促,有疏漏之处还请评论指正,共同探讨进步!


猜你喜欢

转载自blog.csdn.net/LimonSea/article/details/81350981