背景
从经典的JSP+Servlet+JavaBean的MVC时代,到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架时代,
再到前端框架(KnockoutJS、AngularJS、vueJS、ReactJS)为主的MV*时代,然后是Nodejs引领的全栈时代,技术和架构一直都在进步。
前后端分离
优点:
前后端分离可以让浏览器分担服务器的压力
主要就是js给服务器url,然后服务器会返回给js数据,其中的接口全是url
服务器向js传输有两种方式:
1、字节流(数据传输的最小单位),传输文件、图片、音频、视频适用
一个java项目向另一个java项目请求数据的时候用字节流(分布式)
2、字符流(2字节为1单位的Uniclde)传输文本经常用
js和服务器之间通信用字符流,字节流跨语言行不通
序列化和反序列化
将媒体文件转换为字符/字节的过程称为序列化,逆向为反序列化
常用的格式
1、xml格式
<List> <user> <id>1</id> </user> </List>
2、json格式
[{id:1}]
json格式是比较常用的,我们可以通过fastjson把数据转化成json格式
String str= JSONObject.toJSONString("其他格式的数据");
直接返回是有异常的,要经过以下3中方式中的一种进行处理:
1、返回类型直接void,然后通过response.getwriter().writer(str)写到js中
2、加注解@ResponseBody可以直接返回数据,返回值是String类型,但是到达js中是json类型
3、直接写一个@RestController,因为@ResponseBody会绕过@Controller,所以直接合并