fastjson.jar以及Echarts树图的js文件(需要在servlet对json进行赋值,所以需要用到json的插件)

链接:https://pan.baidu.com/s/1GBbamPNGTzKf2926Nkhczg
提取码:ukmg

用json主要目的就是需要用到一个Echars的树图,想要让他的数据从数据库中获取,所以要通过后台对json进行赋值

以下是源代码:

这是一个Echarts的一个前端的界面,这个可以在官网找到

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<h2 align="center">企业分析族谱</h2>
<div id="container" style="height: 80%"></div>
<script type="text/javascript" src="js/echarts.js"></script> //你自己存放js的路径
<script type="text/javascript" src="js/dataTools"></script>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript">
var dom = document.getElementById("container");
var myChart = echarts.init(dom);
var app = {};
var tempOption = {};
option = null;
$.get('/company/ZuPuServlet', function(data) { //要获取值所用到的后台,由于初次接触,只会用一个后台去单独支持一个界面
$.each(data,function(name,chilren){
tempOption = chilren;
});
myChart.setOption(option = {
tooltip : {
trigger : 'item',
triggerOn : 'mousemove'
},
series : [ {
type : 'tree',
data : [tempOption],
top : '18%',
bottom : '14%',
layout : 'radial',
symbol : 'emptyCircle',
symbolSize : 7,
initialTreeDepth : 3,
animationDurationUpdate : 750
} ]
});
});
;
if (option && typeof option === "object") {
myChart.setOption(option, true);
}
</script>
</body>
</html>

这个是后台的代码:

package servlet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mysql.jdbc.EscapeTokenizer; import bean2.T_corp;
import bean2.T_corp_dist;
import bean2.T_corp_stock;
import bean2.T_m_corp_corp_dist;
import bean2.T_m_corp_corp_stock;
import dao.Guquan;
import dao.T_CORP_Dao;
import dao.T_corp_distDao;
import dao.T_corp_stockDao;
import dao.ZuPu; /**
* Servlet implementation class ZuPuServlet
*/
@WebServlet("/ZuPuServlet")
public class ZuPuServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String EscapeTokenizer = null; /**
* @see HttpServlet#HttpServlet()
*/
public ZuPuServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
String name =(String)session.getAttribute("name"); //通过session获取公司的名称
System.out.println(name); T_corp t_corp = T_CORP_Dao.getByName(name);
List<T_m_corp_corp_stock> list = Guquan.list1(t_corp); //有某一公司获取到相应的股东关系
List<T_m_corp_corp_dist> list1 = ZuPu.list1(t_corp); //获取对应的分支公司
List<T_corp_stock> tStocks = new ArrayList<>();
List<T_corp_dist> tDists = new ArrayList<>();
T_corp_stock tStock ;
T_corp_dist tDist ; JSONObject json1 = new JSONObject(); //用来处理最中间的主节点
JSONArray arry1 = new JSONArray(); JSONArray arry2 = new JSONArray(); //存放各个股东的信息 JSONArray arry3 = new JSONArray(); //存放各个分公司的数据 JSONArray htags = new JSONArray();
//由主节点扩展的分支节点
JSONObject second1 = new JSONObject();
JSONObject second2 = new JSONObject(); json1.put("name",t_corp.getCORP_NAME());//将公司名赋值给第一个主节点
for(int i = 0; i < list.size();i++)
{
tStock = T_corp_stockDao.getstock(list.get(i).getSUB_ORG(), list.get(i).getSUB_ID(), list.get(i).getSUB_SEQ_ID());
tStocks.add(tStock);
JSONObject json2 = new JSONObject(); //处理代表股权的节点信息
json2.put("name", tStock.getSTOCK_NAME()); arry2.add(json2);
} for(int i =0; i < list1.size() ; i++)
{
tDist = T_corp_distDao.getstock(list1.get(i).getSUB_ORG(), list1.get(i).getSUB_ID(), list1.get(i).getSUB_SEQ_ID());
tDists.add(tDist);
JSONObject json3 = new JSONObject(); //处理代表公司分支的信息
json3.put("name", tDist.getDIST_NAME());
System.out.println(tDist.getDIST_NAME());
arry3.add(json3);
} second2.put("name", "对外投资");
second1.put("name", "股东");
second1.put("children", arry2);
second2.put("children", arry3); arry1.add(second1);
arry1.add(second2);
json1.put("children", arry1);
System.out.println("获取数据"); response.setContentType("application/json");
response.setCharacterEncoding("utf-8"); htags.add(json1);
response.getWriter().write(htags.toJSONString());
session.invalidate(); } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

最终的效果是这样的

第一次接触这个东西写的有点乱不太好理解,不喜勿喷

json通过后台获取数据库中的内容,并在前端进行显示的更多相关文章

  1. 通过jdbc获取数据库中的表结构

    通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类   1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...

  2. ThinkPhp循环出数据库中的内容并输出到模板

    <foreach name='user' item='v'> //循环出数据库中的内容 对应控制器->方法中的  $this->assign('user',M('user')- ...

  3. 使用 UEditor 编辑器获取数据库中的数据

    在 ThinkPHP 3.2.2 中,使用 UEditor 编辑器获取数据库中保存的数据,可以使用 UEditor 自身提供的方法. 首先在视图模板中实例化编辑器,这是出现编辑器界面的必须的行为: & ...

  4. sql 2000以及2005以上获取数据库中所有的表(不包括系统表)

    ---------------------------------------------------------------------------- --sql 2005以上数据库 --- 获取数 ...

  5. SQL语句获取数据库中的表主键,自增列,所有列

    SQL语句获取数据库中的表主键,自增列,所有列   获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...

  6. 使用Java或 JavaScript获取 方括号中的内容

    1.使用Java获取方括号中的内容 String str = "[你]们,[我]们,[他]们,都要[好好学习,天天敲代码]"; Pattern p = Pattern.compil ...

  7. 将数据库中的内容展示出来并将某些value值转换成汉字

    1.将数据库中的内容展示出来 前台代码未做改变,刚开始未显示的原因是因为 data-field 跟数据库不一样data-field 需要跟数据库中的一样才可以 2.将某些value值转换成汉字 在li ...

  8. sql脚本来获取数据库中的所有表结构了

    sql脚本来获取数据库中的所有表结构了,代码如下: use AdventureWorks2008 go SELECT (case when a.colorder=1 then d.name else ...

  9. 使用jdbc将mysql数据库中的内容封装为指定对象的list集合

    使用jdbc将mysql数据库中的内容封装为指定对象的list集合 public List<User> findAll() { private JdbcTemplate template ...

随机推荐

  1. lua字符串分割函数[适配中文特殊符号混合]

    lua的官方函数里无字符串分割,起初写了个简单的,随之发现如果是中文.字符串.特殊符号就会出现分割错误的情况,所以就有了这个zsplit. function zsplit(strn, chars) f ...

  2. ObserverPattern(观察者模式)-----Java/.Net

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式

  3. DecoratorPattern(装饰器模式)-----Java/.Net

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装

  4. 小小知识点(十七)——对数形式功率(dBm)与非对数形式功率(w)之间的换算关系

    摘自https://blog.csdn.net/shij19/article/details/52946454 dBm 物理含义是:一个表示功率绝对值的值(也可以认为是以1mW功率为基准的一个比值) ...

  5. 还看不懂同事代码?快来补一波 Java 7 语法特性

    前言 Java 平台自出现到目前为止,已经 20 多个年头了,这 20 多年间 Java 也一直作为最流行的程序设计语言之一,不断面临着其他新兴编程语言的挑战与冲击.Java 语言是一种静态强类型语言 ...

  6. maven中scope标签各个值的意义

    在使用maven配置时,有时候会见到scope这个标签,但是总是记不住他们所对应的含义,现在整理一下,以后忘记了再来查看. 版权声明:本文为CSDN博主「MrZhangBaby」的原创文章,遵循 CC ...

  7. Java防锁屏小程序

    为防止系统桌面自动锁屏,只需打成jar包,写个批处理程序start.bat,双击执行保持dos窗口执行即可,无其他影响. 程序设计为每30秒动一次鼠标,可根据需要调整. 附代码: package ma ...

  8. Yolo V3整体思路流程详解!

    结合开源项目tensorflow-yolov3(https://link.zhihu.com/?target=https%3A//github.com/YunYang1994/tensorflow-y ...

  9. js的内存泄漏场景、监控以及分析

    内存泄漏 Q:什么是内存泄漏? 字面上的意思,申请的内存没有及时回收掉,被泄漏了 Q:为什么会发生内存泄漏? 虽然前端有垃圾回收机制,但当某块无用的内存,却无法被垃圾回收机制认为是垃圾时,也就发生内存 ...

  10. await Task.Yield()和await Task.CompletedTask有什么不同

    有时候我们在代码中要执行一些非常耗时的操作,我们不希望这些操作阻塞调用线程(主线程)的执行,因为调用线程(主线程)可能还有更重要的工作要做,我们希望将这些非常耗时的操作由另外一个线程去执行,这个时候就 ...