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. 使用poi读写excel、向excel追加数据等,包括.xls和.xlsx文档

    1.使用maven引入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>p ...

  2. 解决echarts中的点击事件点击后走多次接口

    使用echarts图点击图之后,走了很多次接口,后来发现添加一个off事件就可以解决了,具体如下:

  3. MyBatis原理-拦截器

    一.MyBatis拦截器介绍 MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能. MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用.默认情况下,M ...

  4. docker概述和基本命令

    命名空间 Docker使用一种称为namespaces提供隔离工作空间的技术来称为容器.当您运行容器时,Docker会为该容器创建一组 名称空间. 这些命名空间提供了一层隔离.容器的每个方面都在一个单 ...

  5. P2722 总分 Score Inflation (完全背包模板)

    题目传送门:P2722 总分 Score Inflation 题目描述 我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是指一个竞赛题目的集合,解决集合中的题目需要相同多的时 ...

  6. react路由的跳转和传参

    1.路由的跳转 一.DOM跳转 在需要跳转的页面导入import {Link} from 'react-router-dom',在需要跳转的地方使用link标签的to属性进行跳转,路由配置文件中导出的 ...

  7. CTPN-自然文本场景检测代码阅读笔记

    TensorFlow代码 https://github.com/eragonruan/text-detection-ctpn 训练 main/train.py 1. utils/prepare/spl ...

  8. InteliJ IDEA 启动应用出现 Error:failed to create a child event loop 解决方案

    1.首先检查自己电脑是否能够联网 2.打开电脑防火墙允许 InteliJ IDEA 进行通信如下图所示

  9. Java ArrayList类的简单介绍

    ArrayList类的说明: ArrayList类是List接口的实现类,java.util.ArrayList集合数据存储的结构是数组结构. 特点: 元素增删慢,查找快.(由于日常开发中使用最多的功 ...

  10. axios中请求传值方式

    日常开发中与后端联调,可能需要的数据不同,所传值也有所不同 1.如果是data方式,设置请求头为:并且直接返回data就可以  raw axios.defaults.headers['Content- ...