看代码所学1
1、@GetMapping("/login"):是@RequestMapping("/login",method = RequestMethod.GET)的缩写
同理@PostMapping("/login")是POST传递的一个缩写
2、Option类中的两个方法:(关于Option的具体方法见:https://www.cnblogs.com/television/p/9265027.html)
a、ofNullable():为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。
b、orElse():如果有值则将其返回,否则返回指定的其它值。
c、orElseGet():orElseGet与orElse方法类似,区别在于得到的默认值。orElse方法将传入的字符串作为默认值,orElseGet方法可以接受Supplier接口的实现用来生成默认值。
3、@Controller,@ResponseBody 和 @RestController的关系
1、在控制层,我们使用@Controller标注来标记控制层;但是@Controller可以通过return+字符串来返回要返回的页面;
例如:@Controller
@RequestMapping(.......)
public String ok(){
return "ok";
}
以上就是会返回到对应的ok.jsp或ok.html页面上
2、使用@ResponseBody可以向前端返回json数据或者xml文件或者是一个自己定义的类型
使用了@ResponseBody能够直接将controller返回的bean对象或map对象等自动进行json或xml格式的转换,无需再使用JSONObject或者 response.setContentType("application/json")+PrintWriter来将返回的bean、String、map对象转换成JSON格式,再输出到页面上。
缺点就是不再走试图处理器,而是直接使用writter来返回前端。
@Controller
@RequestMapping(.......)
public @ResponseBody String ok(){
User user=userService.getUser(id);
Map map=new Hashmap<String,Object>;
map.get(userid,user.getuserid);
map.get(username,user.getusername);
return map;
}
3、@ResponseBody相当于前两个的和
@CrossOrigin
@RestController /* @Controller + @ResponseBody*/
public class HospitalController {
//注入Service服务对象
@Autowired
private HospitalService hospitalService;
@RequestMapping(value = "findAllHospital",method = RequestMethod.GET)
public List<Hospital> findAllHospital(){
List<Hospital> hospitalList= hospitalService.findAllHospital();
return hospitalList;
}
但是不返回页面