Java后台返回复杂数据、大数据给前端解决办法(返回json数据分类简化前段操作)

版权声明:本博文仅供学习、参考、技术讨论,版权归笔者/译者所有。 https://blog.csdn.net/qq_38025219/article/details/83151768

背景分析:
面对当前多种的业务需求和杂乱无章的数据堆放,Java后台处理变得尤为重要。对于信息系统开发而言,归根到底是对数据的分类与处理。通过从服务器获取数据,客户给出需求,形成怎样的表格,多样化的静态图和动态图,各种各样资源文件,这些需求都不是简单的从数据库中取出来就可以直接使用的,往往需要进行对应的算法归类,类别划分等。对于复杂的图标,借助开源的前段框架或者相应的画图插件即可完成,只需要直接调用即可。
**问题导入:**借助CSDN为例子进行知识探讨,仅进行学习与技术探讨,如有侵权,请及时联系 QQ邮箱:[email protected]
在这里插入图片描述
通过简单的分析,上述网页的1,2,3这三个部分肯定不是来源于一个数据库,他们的格式,数据长短也大相径庭。但是它们有一个相同点,需要同时获取数据到本页面。从后台角度而言,用最简单的方式解决就是它们具有相同的接口,通过网址链接请求,再从服务器数据库中获取相应的数据,进行处理,整合在一个json或者其它传递格式返回到当前页面中来。
后台具体思路:
1.依据需求和接口文档,从数据库获取原数据在后台存储起来。其中需要用到
①从服务器获取json数据
②json数据与String,ArrayList等数据格式之间的转换
2.分析需求,将数据转存为hashmap或者arraylist方便一起传输。其中注意需要进行算法处理时,对下标,对应名称要仔细检查。
3.组合为一个字符串或者其它格式传递给前端。(每一个模块应有对应的名称,前端好直接获取处理)
代码实例:
1.从数据库连接路径获取数据(实测有用干货)

/**
	 * json数据转为字符串
	 * @param url1  获取json数据的URL地址
	 * @return messageString String类型的json字符串
	 */
	public String getHttpResult(String url1) {
		String messageString = null;
		try {
			URL url = new URL(url1);
			// 打开连接
			HttpURLConnection urlConnection = (HttpURLConnection) url
					.openConnection();
			System.out.println(urlConnection);
			urlConnection.setConnectTimeout(8000);//连接超时
			urlConnection.setReadTimeout(8000);//读操作超时
			
			if (200 == urlConnection.getResponseCode()) {
				// 得到输入流
				InputStream is = urlConnection.getInputStream();
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				byte[] buffer = new byte[1024];
				int len = 0;
				while (-1 != (len = is.read(buffer))) {
					baos.write(buffer, 0, len);
					baos.flush();
				}
				// baos.toString("utf-8");
				//System.out.println("获取数据" + baos.toString("utf-8"));
				messageString = baos.toString("utf-8");
				baos.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		return messageString;

	}

2.传递参数存储框架搭建
分析:对于要传递四个模块的数据使用map存储方式用K,V将每一个内容和模块对应。

 //总仓库
static HashMap<String, Map<Integer,Map<String, String>>>result = new HashMap<String,  Map<Integer,Map<String, String>>>();
//分仓库
Map<Integer,Map<String, String>> TMmap = new LinkedHashMap<Integer,Map<String, String>>();
//仓库子内容
Map<String, String> TMmap1 = new LinkedHashMap<String, String>();

3.对封装好的数据进行类型转换进行传输(灵活使用gson)

//其中BaseResponse类需要自己创建,依据需求设置类属性
BaseResponse<HashMap<String, Map<Integer,Map<String, String>>>> mes = new BaseResponse<HashMap<String,Map<Integer,Map<String, String>>>>();
mes.setCode(1);
mes.setData(result);
mes.setMsg("ok");
     
Gson gson = new Gson();
String json = gson.toJson(mes);
return json;

4.接口测试,数据如果有差异,进行适当修改即可。

猜你喜欢

转载自blog.csdn.net/qq_38025219/article/details/83151768