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 注解

相关推荐
e***74952 小时前
Spring Security 官网文档学习
java·学习·spring
山河亦问安5 小时前
Spring原理编码学习
java·学习·spring
思成不止于此5 小时前
【C++ 数据结构】二叉搜索树:原理、实现与核心操作全解析
开发语言·数据结构·c++·笔记·学习·搜索二叉树·c++40周年
碧海潮生_CC6 小时前
【CUDA笔记】03 CUDA GPU 架构与一般的程序优化思路(下)
笔记·架构·cuda
钟屿6 小时前
Back to Basics: Let Denoising Generative Models Denoise 论文阅读学习
论文阅读·人工智能·笔记·学习·计算机视觉
d111111111d7 小时前
SPI通信协议--在STM32中介绍(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
愚昧之山绝望之谷开悟之坡7 小时前
业务接待-公务接待-商务接待
笔记
断水客7 小时前
如何在手机上搭建Linux学习环境
linux·运维·学习
j***12158 小时前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
爬虫·学习·selenium
大数据追光猿9 小时前
LangChain / LangGraph / AutoGPT / CrewAI / AutoGen 五大框架对比
经验分享·笔记·python·langchain·agent