spring boot jpa学习:3.Controller层的入门


spring boot jpa学习:1.Model类的注释annatation

spring boot jpa学习:2.DAO和Service的自增id、删、查、改操作

spring boot jpa学习:3.Controller层的入门


一、示例代码

package com.sand.alphon.controller;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sand.alphon.model.Book;
import com.sand.alphon.jsonModel.ResultList;
import com.sand.alphon.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

// RestController = ResponseBody + Controller
@RestController
public class BookController {
    // 自动注入
    @Autowired
    BookService bookService;

    /*
     * 跨域,交互前端
     * 对应前端的method + url
     * 返回结果是json格式
     */
    @CrossOrigin
    @PostMapping("/api/searchBook")
    @ResponseBody
    public ResultList searchBook(@RequestBody String jsonString){
        // 莫名奇妙地传来的数据多个":"
        jsonString = jsonString.substring(0,jsonString.length()-1);


        try {
            jsonString = java.net.URLDecoder.decode(jsonString,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        System.out.println(jsonString);

        // 解析Json中传来的书名
        Gson gson = new Gson();
        Map<String,String> map = gson.fromJson(jsonString, new TypeToken<HashMap<String,String>>(){}.getType());
        String bookName = map.get("keyWord");

        // 返回的json结构:BookResult
        ResultList<Book> resultList = new ResultList<>();
        List<Book> bookList = bookService.findAllByBookName(bookName);
        // 不能用"!=null",是true
        if(bookList.size()!=0){
            resultList.setStatus("200");
            resultList.setErrorMessage(null);
            resultList.setList(bookList);
        }else {
            resultList.setStatus("0");
            resultList.setErrorMessage("none");
            resultList.setList(null);
        }
        return resultList;
    }
}

二、知识点

1.注释annatation

  • @Controller:表示是控制器,即处理url,和数据库业务交互的。
  • @ResponseBody:将函数返回的结果自动转化为json格式
  • @RequestBody:将url中Body部分以json的格式读取。这时还是URL编码。
  • @CrossOrigin:跨域的。因为前端的端口和后端的端口不一样,加上这个才能接受到。
  • @PostMapping@GetMapping:对应前端提交的方式method的方式。内容是url链接。

2.URL解码

后端URL解码

3.Json

Java (十三)Java web:GSON的学习

4.url前后端配置

看看大佬的就明白了,引自:Vue + Spring Boot 项目实战(三):前后端结合测试(登录页面开发)

(1)前端反向代理

  1. src\main.js
var axios = require('axios')
axios.defaults.baseURL = 'http://localhost:8443/api'
  1. config\index.js
proxyTable: {
  '/api': {
    target: 'http://localhost:8443',
    changeOrigin: true,
    pathRewrite: {
      '^/api': ''
    }
  }
}

(2)前端url

比如:\src\components\librarianpart\bookManagement.vue
在这里插入图片描述

(3)后端application.yml

# 后端端口
server:
  port: 8443

(4)后端url

BookController.java

@PostMapping("/api/searchBook")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值