REST风格下的SpringMVC简单响应方法

学习中,如有错误请见谅

 

 

项目结构

 

 

 

ServletContainersInitConfig

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

  //设置由springmvc控制器处理的请求映射路径
protected String[] getServletMappings() { return new String[]{"/"}; } //乱码处理 @Override protected Filter[] getServletFilters() { CharacterEncodingFilter filter = new CharacterEncodingFilter(); filter.setEncoding("UTF-8"); return new Filter[]{filter}; } }

 

SpringMvcConfig

@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换 @EnableWebMvc
public class SpringMvcConfig { }

 

BookController

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController     //使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
//@RequestMapping注解⽤到类级别的时候,它能够指定该控制器所处理的请 求类型。在本例中,它规定BookController 将会处理路径 以“/books”开头的请求。
@RequestMapping("/books") public class BookController { // @RequestMapping( method = RequestMethod.POST) @PostMapping //使用@PostMapping代替@RequestMapping( method = RequestMethod.POST),效果相同 public String save(@RequestBody Book book){ System.out.println("book save..." + book); return "{'module':'book save'}"; } // @RequestMapping(value = "/{id}" ,method = RequestMethod.DELETE) @DeleteMapping("/{id}") //使用@DeleteMapping简化DELETE请求方法对应的映射配置 public String delete(@PathVariable Integer id){ System.out.println("book delete..." + id); return "{'module':'book delete'}"; } // @RequestMapping(method = RequestMethod.PUT) @PutMapping //使用@PutMapping简化Put请求方法对应的映射配置 public String update(@RequestBody Book book){ System.out.println("book update..."+book); return "{'module':'book update'}"; } // @RequestMapping(value = "/{id}" ,method = RequestMethod.GET) @GetMapping("/{id}") //使用@GetMapping简化GET请求方法对应的映射配置 public String getById(@PathVariable Integer id){ System.out.println("book getById..."+id); return "{'module':'book getById'}"; } // @RequestMapping(method = RequestMethod.GET) @GetMapping //使用@GetMapping简化GET请求方法对应的映射配置 public String getAll(){ System.out.println("book getAll..."); return "{'module':'book getAll'}"; } }

 

 

如果不简化操作的代码格式:

//设置当前请求方法为POST,表示REST风格中的添加操作
    //method表示设置请求动作
    //method = RequestMethod.POST表示当用POST访问http://localhost/users的时候进入该方法
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(){
        System.out.println("user save...");
        return "{'module':'user save'}";
    }

 

测试结果

 

 

 

 

三种接受参数的辨析

@RequestBody @RequestParam @PathVariable

区别
  @RequestParam用于接收url地址传参或表单传参
  @RequestBody用于接收json数据
  @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
应用
  后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
  如果发送非json格式数据,选用@RequestParam接收请求参数
  采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

 

 

 了解更多:

(45条消息) Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制_servletcontainersinitconfig_|旧市拾荒|的博客-CSDN博客

 

 

 

 代码来源:itheima

posted @ 2023-03-18 14:31  qintee  阅读(22)  评论(0)    收藏  举报