背景分析:
面对当前多种的业务需求和杂乱无章的数据堆放,Java后台处理变得尤为重要。对于信息系统开发而言,归根到底是对数据的分类与处理。通过从服务器获取数据,客户给出需求,形成怎样的表格,多样化的静态图和动态图,各种各样资源文件,这些需求都不是简单的从数据库中取出来就可以直接使用的,往往需要进行对应的算法归类,类别划分等。对于复杂的图标,借助开源的前段框架或者相应的画图插件即可完成,只需要直接调用即可。
**问题导入:**借助CSDN为例子进行知识探讨,仅进行学习与技术探讨,如有侵权,请及时联系 QQ邮箱:1306131289@qq.com。
通过简单的分析,上述网页的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.接口测试,数据如果有差异,进行适当修改即可。