3.继续实现,servlet模拟返回json格式数据

有了上一篇简单的demo还是不能完成任务,虽然有一个大概的构思(就是读取数据然后处理成json格式传到前端,然后展示),大可以springMVC+spring+Mybatis这样跑起来,一次性完成。但是还是想慢慢来,就当是复习一下以前的知识(Java在框架的时代越来越精简,但是一些老伙计还是很有意思的,在一些开发历时不知道几年或者更久的传统项目里,看似过时的技术随处可见)。反正我是要慢慢来(这时候我不懒了),正如那句歌词“我小心翼翼地接近,怕你在梦中惊醒……”。于是就选用servlet来了,也是想进一步证实我的想法(其实是为了告诉身边一个“愚昧”的同事,我当时脑子里就是想这么干,不可以改变!)。
  第一步,先在前端占个位置?错错错,应该先新建一个工程,嘿嘿嘿。然后还是占个位置?算了,还是先占个位置吧。下面是html的代码:

<head>
<title>demo1.html</title>   
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <!-- 引入echarts.min.js -->
  <script type="text/javascript" src="./js/echarts.min.js"></script>
</head>
<body>
   <div id="main" style="width: 600px;height:400px;"></div>
</body>
  

作为一个新手,我还是喜欢将所有代码都贴上来(如果不是代码不多,你会记得?你会有这样的积极?),所以还是要放出众所周知的web.xml出来和大家见见面:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
  <servlet>
    <servlet-name>ServertAction</servlet-name>
    <servlet-class>com.test.servlet.ServertAction</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ServertAction</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

数据还是那个数据,于是根据数据创建一个jsonbean,它的名字就叫option:

public class Option {
    private String text;
    private String legendData;
    private String[] xAxisDataList;
    private String seriesName;
    private String seriesType;
    private int[] seriesData;
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public String getLegendData() {
        return legendData;
    }
    public void setLegendData(String legendData) {
        this.legendData = legendData;
    }
    public String[] getxAxisDataList() {
        return xAxisDataList;
    }
    public void setxAxisDataList(String[] xAxisDataList) {
        this.xAxisDataList = xAxisDataList;
    }
    public String getSeriesName() {
        return seriesName;
    }
    public void setSeriesName(String seriesName) {
        this.seriesName = seriesName;
    }
    public String getSeriesType() {
        return seriesType;
    }
    public void setSeriesType(String seriesType) {
        this.seriesType = seriesType;
    }
    public int[] getSeriesData() {
        return seriesData;
    }
    public void setSeriesData(int[] seriesData) {
        this.seriesData = seriesData;
    }
}

当当当当,转弯的时候到了,servlet以bean为对象,将数据以option对象json的格式传回,当然这里需要引入jackson-annotation,jackson-core和jackson-databind三个jar包,根据web工程和maven工程有不同的引入方式:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.test.entity.Option;
public class ServertAction extends HttpServlet {
    private static final long serialVersionUID = -8790254687034601663L;
    @Override
    protected void service(HttpServletRequest request, 
                           HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String uri = request.getRequestURI();
        String action = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
        PrintWriter out = response.getWriter();
        if("/chart".equals(action)){
            Option option = new Option();
            option.setLegendData("质量");
            option.setText("cxkai");
            String[] xAxisList = {"衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"};
            option.setxAxisDataList(xAxisList);
            option.setSeriesName("质量");
            option.setSeriesType("bar");
            int[] seriesData = {5, 20, 36, 10, 10, 20};
            option.setSeriesData(seriesData);
            String json = new ObjectMapper().writeValueAsString(option);
            out.println(json);
        }
    }
}

记得学ajax的时候最喜欢喊他啊,贾克斯了,聊以安慰想念英雄联盟的心,每次这么喊的时候都能顺利的出来帮助我,好英雄啊,不过下次再跳我脸上还是要举报。

function chart() {
    $.ajax({
        url : "http://localhost:8080/echarts02/chart.do",
        type : "POST",
        dataType : "json",
        success : function(obj) {
            if (obj) {
                console.log(obj);
                var text = obj.text;
                console.log(text);
                var legendData = obj.legendData;
                console.log(legendData);
                var xAxisData = obj.xAxisDataList;
                console.log(xAxisData);
                var seriesName = obj.seriesName;
                console.log(seriesName);
                var seriesType = obj.seriesType;
                console.log(seriesType);
                var seriesData = obj.seriesData;
                console.log(seriesData);
                // 基于准备好的dom,初始化echarts实例
                var myChart = echarts.init(document.getElementById('main'));
                // 指定图表的配置项和数据
                var option = {
                    title : {
                        text : text,
                    },
                    tooltip : {},
                    legend : {
                        data : legendData
                    },
                    xAxis : {
                        data : xAxisData
                    },
                    yAxis : {},
                    series : [ {
                        name : seriesName,
                        type : seriesType,
                        data : seriesData
                    } ]
                };
                // 使用刚指定的配置项和数据显示图表。
                myChart.setOption(option);
            }
        },
        error : function() {
            console.log("failed");
        }
    });
}

html页面就修改为这样了,实现的效果还是和2.官网也有的极简demo是一样的。

<!DOCTYPE html>
<html>
  <head>
    <title>demo1.html</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    
    <script type="text/javascript" src="./js/echarts.min.js"></script>
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <script type="text/javascript" src="./js/chart.js"></script>
    <script type="text/javascript">
        $(function(){
            $(chart);
        });
    </script>
  </head>
  <body>
    <div id="main" style="width: 600px;height:400px;"></div>
  </body>
</html>

至此,就简单完成了前后端的交互了,实现了模拟获取数据让前端进行展示。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容