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解码
3.Json
4.url前后端配置
看看大佬的就明白了,引自:Vue + Spring Boot 项目实战(三):前后端结合测试(登录页面开发)
(1)前端反向代理
src\main.js
var axios = require('axios')
axios.defaults.baseURL = 'http://localhost:8443/api'
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")