SpringMvc学习笔记五

Restful 风格路由

1. 配置类

1.1、SpringMvcConfig配置类

java 复制代码
@Configuration
@ComponentScan({"com.itheima.controller", "com.itheima.config"})   方式1.2 添加com.itheima.config 扫描目录
@EnableWebMvc
public class SpringMvcConfig {
}

1.2、ServletContainerInitConfig类

java 复制代码
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {


    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

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

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }


    // 乱码处理 过滤器
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

1.3、SpringMvcSupport配置类

java 复制代码
@Configuration  //方式1.1 添加Configuration注解
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 当访问 /pages的时候 ,走pages目录下访问 不要走mvc
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
    }
}
  • 这个类的主要作用 添加静态资源排除,让这些路径 不会进入SpringMvc动态请求里面

2. 控制器

2.1、 Restful 风格 增删改查

java 复制代码
@RestController
@RequestMapping("/books")
public class BookController {

    @PostMapping
    public String save(@RequestBody Book book){
        System.out.println("book save ==>" + book);
        return "{'module':'book save success'}";
    }

    @GetMapping
    public List<Book> getAll(){
        Book book1 = new Book();
        book1.setType("计算机");
        book1.setName("SpringMVC入门教程");
        book1.setDescription("小试牛刀");


        Book book2 = new Book();
        book2.setType("计算机");
        book2.setName("SpringMVC项目实战");
        book2.setDescription("一代总是");

        List<Book> bookList = new ArrayList<>();
        bookList.add(book1);
        bookList.add(book2);


        return bookList;
    }

    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("book delete id = "+ id);
        return "{'module':'book delete success'}";
    }


    @PutMapping
    public String update(@RequestBody Book book){
        System.out.println("book update book = "+ book);
        return "{'module':'book update success'}";
    }
}
  • @RestController 声明为Rest风格控制器

  • @RequestMapping("/books") 路径

  • @PostMapping Post请求

  • @GetMapping Get请求

  • @DeleteMapping("/{id}") Delete请求

  • @PutMapping Put请求

  • Json格式参数必须加上@ReqeustBody 注解

相关推荐
世人万千丶1 小时前
参数管理_Flutter在鸿蒙平台路由参数最佳实践
学习·flutter·华为·harmonyos·鸿蒙
遇乐的果园4 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园6 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
从零开始的代码生活_6 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
可乐奶茶sky6 小时前
AI Agent 学习
人工智能·学习
摇滚侠6 小时前
Java 全栈开发实战教程 课程笔记 29-33
笔记
茯苓gao7 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习
whyTeaFo7 小时前
GAMES101: Lecture 9: Shading 3(Texture Mapping cont.) ppt笔记
笔记
RD_daoyi9 小时前
外链权重暴跌至13%,品牌提及反超传统链接——2026年不做Digital PR,你的独立站等于隐形
运维·网络·学习·机器学习·搜索引擎
chase。9 小时前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型
笔记·学习·机器人