Spring Boot(七) 之前后端交互

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
  • 12
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子时不睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值