1、概述
概述
随着时代发展,前后端分离已经是一种很多企业使用的开发方式。在这种模式下前后端的交互是重点之一。前端发出请求,后端接收进行业务上的处理。在Spring boot中,使用控制器(Controller)来处理接收的请求。前后端的交互风格也变了。
比如传统的是通过?
传递参数,并用&来连接。现在也出现了一种Restful
风格
Restful风格,基于这个风格设计的更简便,更安全等。
2、常用注解
主要的注解:
1、@Controller
- 标记在类上,用于声明Spring类的实例是一个控制器。
2、@RequestMapping
- 可标注在类上或方法上,将url映射到控制器类或方法上,用于类上,表示类中所有的响应请求的方法都以改地址作为父路径
- 有6个属性
1)value或path:指定请求的地址
2)method:指定请求的类型
3)consumes:消费信息,指定处理请求的提交内容类型(Content-Type),例如application/json,text/html。
4)params:指定request中必须包含某些参数值才让该方法处理请求
5)headers:指定request中必须包含某些指定的header值才让该方法处理请求
6)produces:生产消息,指定返回的类型
3、 @ResponseBody
- 标注在类上或方法上,标注在方法上,表示该方法返回的不再是视图,而是返回数据。
4、 @RequestParam
- 标注在方法的参数上,用于获取url上传递的参数
5、@RequestBody
6、@RestController
- 标注在类上,相当于@ResponseBody加上@Controller。
7、@PathVariable
- 将请求url中的模板变量映射到方法参数上,即获取url中的变量作为参数.
例如下面代码,访问http://localhost:8080/blog/2
,则是获取url上的id作为参数值,
@GetMapping("/blog/{id}")
public Object blogByKey(@PathVariable("id") Integer id){
return blogService.blogOfId(id);
}
@GetMapping 处理get请求
@PostMapping 处理post请求
@PutMapping 更改
@DeleteMapping 删除
3、处理内容类型
认识HTTP中的媒体类型Content-Type
在HTTP协议消息头中,用Content-Type来表示具体的媒体类型信息。PC端网页常用”text/html“格式,手机App常用JSON格式
(1)常见媒体格式
- text/html: HTML格式
- text/plain:纯文本格式
- text/xml:XML格式
- image/gif:GIF格式
- image/jpeg:JPG格式
- image/png:PNG格式
(2)以application开头的媒体格式
- application/xhtml+xml:XHTML+XML格式
- application/xml:XML格式
- application/atom+xml:Atom XML聚合格式
- application/json:json格式
- application/pdf:PDF格式
- application/msword:word文档
- application/octet-stream:二进制流数据(常用于文件下载)
- application/x-www-form-urlencoded:表单数据编码方式,From数据被默认编码为key/value格式发给服务器。
- multipart/form-data: 表单中进行文件上传,
4、传统操作资源方式
传统前后端交互方式
通过不同的参数来实现不同的效果,方法单一,post和get。查询-GET,增删改-POST。
实现一下传统的方式
1、新建spring boot项目
2、编写实体类Blog,以及对于的增删改查的接口BlogMapper及实现。
3、编写Service接口及实现
4、编写Controller类
@RestController
public class BlogController {
private BlogService blogService;
@Autowired
public BlogController(BlogService blogService){
this.blogService = blogService;
}
//http://localhost/blog/likeTitle/detail?title=xxx
@GetMapping("/blog/likeTitle/detail")
public Object blogLikeTitle(HttpServletRequest req){
String title = req.getParameter("title").trim();
return blogService.blogLikeTitle('%'+title+'%');
}
//http://localhost/blog/likeAuthor/detail?author=xxx
@GetMapping("/blog/likeAuthor/detail")
public Object blogLikeAuthor(@RequestParam("author") String author){
return blogService.blogLikeAuthor('%'+author+'%');
}
@PostMapping("/blog/add1")
public Object addBlog(HttpServletRequest req){
String title= req.getParameter("title").trim();
String author =req.getParameter("author").trim();
String createTime =req.getParameter("createTime").trim();
String views =req.getParameter("views").trim();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date createDate = new Date();
try{
createDate = dateFormat.parse(createTime);
}catch (Exception e){
e.printStackTrace();
}
Blog blog = new Blog();
blog.setTitle(title);
blog.setAuthor(author);
blog.setCreateTime(createDate