前后端交互--------后端传JSON给前端

目录

一.使用@RestController注解或者@Controller+@Responbody注解

二,使用request传递参数

三.使用model传递参数


一.使用@RestController注解或者@Controller+@Responbody注解

tips:

@RestController是@ResponseBody和@Controller的组合注解
@Controller是用来响应页面的,如果是string类型的方法,则springmvc会跳转到相应的页面(视图)
@ResponseBody是用来响应数据的,如果是对象类型的方法,则springmvc会将结果对象转成json格式输出给前端
本例中我使用的是@RestController注解,所以springmvc会将返回的对象Result自动转json返回给前端(底层默认是使用jsckson来实现数据格式转换的)

public Result add(@RequestBody WegoUser user){}    @RequestBody是将前端传来的json数据转对象。默认不用加(springmvc会自动完成数据的封装)


 

返回前端的JSON数据格式:

package com.atqh.qhcommunity.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    private boolean success;
    private int code;
    private String mag;
    private Object data;

    public static Result success(Object data) {
        return new Result(true, 200, "success", data);
    }

    public static Result fail(int code, Object data) {
        return new Result(false, code, "fail", data);
    }

}

Controller层 

package com.atqh.qhcommunity.controller;

import com.atqh.qhcommunity.Service.ArticleService;
import com.atqh.qhcommunity.dao.pojo.Article;
import com.atqh.qhcommunity.vo.Result;
import com.atqh.qhcommunity.vo.perem.PageParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class ArticleController {
    @Autowired
    private ArticleService articleService;

    /**
     * 分页显示所有文章,按照时间顺序降序排列
     * @param pageParams
     * @return
     */
    /*@ResponseBody*/
    @PostMapping //如果是getmapper,使用@Requestparam接收参数
    public Result listArtilcle(@RequestBody PageParams pageParams) {
        return articleService.listArticle(pageParams);
    }

    /**
     * 阅读量最多的榜单
     * @return
     */
    @RequestMapping("/bigread")
    public Result bigreadArticle() {
        int limit = 5;
        return articleService.bigreadArticle(limit);
    }

    /**
     * 点赞数做多的榜单
     * @return
     */
    @RequestMapping("/bigagree")
    public Result bigagreeArticle() {
        int limit = 3;
        return articleService.bigagreeArticle(limit);
    }


}

Service层

package com.atqh.qhcommunity.Service.Impl;

import com.atqh.qhcommunity.Service.ArticleService;
import com.atqh.qhcommunity.dao.mapper.ArticleMapper;
import com.atqh.qhcommunity.dao.pojo.Article;
import com.atqh.qhcommunity.vo.Result;
import com.atqh.qhcommunity.vo.perem.PageParams;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ArticleServiceImpl implements ArticleService {
    @Autowired
    private ArticleMapper articleMapper;

    @Override
    public Result listArticle(PageParams pageParams) {
        Page<Article> articlePage = new Page<>(pageParams.getPage(), pageParams.getPageSize());
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Article::getCreateData);
        Page<Article> articlePage1 = articleMapper.selectPage(articlePage, queryWrapper);
        List<Article> records = articlePage1.getRecords();
        return Result.success(records);
    }

    @Override
    public Result bigreadArticle(int limit) {
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Article::getReady);
        queryWrapper.last("limit " + limit);
        queryWrapper.select(Article::getId, Article::getTitle, Article::getReady);
        List<Article> articles = articleMapper.selectList(queryWrapper);

        return Result.success(articles);
    }

    public Result bigagreeArticle(int limit) {
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.orderByDesc(Article::getAgree);
        queryWrapper.select(Article::getId, Article::getTitle, Article::getAgree);
        queryWrapper.last("limit " + limit);
        List<Article> articles = articleMapper.selectList(queryWrapper);
        return Result.success(articles);

    }

    @Override
    public Result delArticleByArtId(int artid) {
        LambdaQueryWrapper<Article> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Article::getId,artid);
        queryWrapper.last("limit "+1);
        articleMapper.delete(queryWrapper);

        return null;
    }

}

二,使用request传递参数

@RequestMapping("/goodsReturnReq.do")//请求子路径
		public String goodsReturnReq(Goods goods,HttpServletRequest request){
			System.out.println("goodsReturnReq:"+goods);
			request.setAttribute("gds",goods);
			return "goodsAddOK";//请求成功的返回路径

三.使用model传递参数

@RequestMapping("/getArticleById") /*通过id查看文章详情*/
    public String getById(Integer pid, Model model){
        List<Result> list = floorsService.findAllByPid(pid);
        model.addAttribute("post",postsService.findById(pid));
        model.addAttribute("hf",repliersService.findAllFloorsRep(list));

        //通过页面地址返回页面
        return "community-post";
    }

四.使用modelandview视图解析器

modelandview是基于springmvc原生的产物

//返回一个模型视图对象
       ModelAndView mv = new ModelAndView();
       mv.addObject("msg","ControllerTest1");
       mv.setViewName("test");
       return mv;

  • 14
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot后端前端数据可以通过以下几种方式: 1. 使用RESTful API:Spring Boot提供了RESTful API的支持,可以通过HTTP协议向前端数据前端可以通过AJAX等方式调用后端API,获取数据。 2. 使用WebSocket:Spring Boot也支持WebSocket协议,可以实现实时通信。后端可以向前端推送数据前端也可以向后端发送数据。 3. 使用模板引擎:Spring Boot支持多种模板引擎,如Thymeleaf、Freemarker等。后端可以将数据渲染到模板中,然后将渲染后的HTML页面返回前端。 4. 使用JSON格式:Spring Boot支持将数据转换成JSON格式,然后返回前端前端可以通过JavaScript解析JSON数据,然后进行展示。 以上是几种常见的方式,具体使用哪种方式取决于具体的业务需求和技术栈。 ### 回答2: 在Spring Boot后端前端数据时,主要有以下几种方式: 1. 使用ModelAndView ModelAndView是将模型数据和视图名称作为参数递到前端显示的一种方式。在Spring Boot中,使用@Controller注解来标记视图层控制器,通过在控制器中定义请求处理方法并使用ModelAndView来封装数据和视图名称,最终将数据返回前端。 示例代码: ```java @Controller public class UserController { @RequestMapping("/user") public ModelAndView getUser(){ ModelAndView mv = new ModelAndView(); mv.addObject("name", "Spring Boot"); mv.setViewName("user"); return mv; } } ``` 2. 使用@ResponseBody注解 @ResponseBody注解将Java对象转换为JSON格式的数据返回前端。在Spring Boot中,可以使用@RestController注解来标记REST API的控制器,通过在方法上使用@ResponseBody注解来返回数据。 示例代码: ```java @RestController public class UserController { @RequestMapping(value="/user/{id}", method=RequestMethod.GET, produces="application/json") public @ResponseBody User getUser(@PathVariable("id") int id){ User user = userDao.getById(id); return user; } } ``` 3. 使用Jackson库 Jackson是一种Java库,可以将Java对象转换为JSON格式的数据返回前端。在Spring Boot中,可以通过在方法上使用@ResponseBody注解和在类上使用@RestController注解来标记REST API的控制器,然后使用Jackson库将Java对象转换为JSON格式的数据返回前端。 示例代码: ```java @RestController public class UserController { @RequestMapping(value="/user/{id}", method=RequestMethod.GET, produces="application/json") public @ResponseBody User getUser(@PathVariable("id") int id){ User user = userDao.getById(id); ObjectMapper mapper = new ObjectMapper(); try { String json = mapper.writeValueAsString(user); return json; } catch (JsonProcessingException e) { e.printStackTrace(); return null; } } } ``` 总之,在Spring Boot中,可以通过以上方式将数据后端递到前端。根据具体业务需求和编码习惯,选择合适的方式即可。 ### 回答3: Spring Boot是一种基于Spring框架的快速开发应用程序的工具,它提供了许多功能强大的功能,包括构建和调试应用程序、简化配置管理和处理请求和响应等。在Spring Boot应用程序中,后端前端数据的基本方式为RESTful API接口。 数据可以使用多种方式,例如:JSON格式、XML格式、HTML格式等。JSON格式是最流行的,因为它轻便且易于使用。Spring Boot可以通过@RestController注解将Java对象转换为JSON格式,并使用HTTP请求将其发送到前端。 在Spring Boot应用程序中,后端需要实现Controller层,它负责接收客户端请求、处理请求并将响应递给客户端。在Controller层中,可以使用注解来实现数据递。比如使用@GetMapping或@PostMapping注解来接收GET或POST请求,@PathVariable注解来获取路径参数,@RequestParam注解来获取URL查询参数等。 在完成Controller层的代码编写后,需要将响应数据递到前端。可以使用@RequestBody注解将请求数据转换为Java对象,然后通过ResponseEntity对象将Java对象转换为JSON格式,并在HTTP响应中返回JSON格式。前端可以使用JavaScript通过XMLHttpRequest对象来请求Controller层的API接口,然后使用响应JSON格式的数据。 为了方便开发和测试,Spring Boot还提供了一些工具类,例如RestTemplate类,它可以使用HTTP请求发送HTTP请求,并将响应数据转换为Java对象。 总之,Spring Boot提供了许多功能强大的功能,使得后端可以轻松实现向前端数据的功能,使得应用程序开发更加轻松和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值