看代码所学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;
}

但是不返回页面

       

    

    

原文地址:https://www.cnblogs.com/television/p/9264715.html