前后端分离的项目中,类似行政区选择,前端控件一般获取全部数据进行渲染,如果这些数据每次都查询数据库开销会很大。
其实方法有很多种,1直接放前端项目中 2使用nginx代理 3Java渲染JSON文件
相对来说第三种方法对我们后端来说容易维护,主要方法如下:
/**
* 读取json格式文件
* @param jsonSrc
* @return
*/
private String readJson(String jsonSrc) {
String json = "";
try {
//File jsonFile = ResourceUtils.getFile(jsonSrc);
//json = FileUtils.re.readFileToString(jsonFile);
//换个写法,解决springboot读取jar包中文件的问题
InputStream stream = getClass().getClassLoader().getResourceAsStream(jsonSrc.replace("classpath:", ""));
json = IOUtils.toString(stream);
} catch (IOException e) {
log.error(e.getMessage(),e);
}
return json;
}
然后Controller直接调用readJson方法得到JSON文件的内容渲染出去
/**
* 省市县
*/
@GetMapping(value = "/getArea")
public String area() {
return readJson("classpath:com/mxthd/demo/mock/json/area.json");
}