其他分享
首页 > 其他分享> > SpringMVC&Maven进阶

SpringMVC&Maven进阶

作者:互联网

3. SpringMVC

3.1 了解SpringMVC

3.2 SpringMVC简介

3.2.1 SpringMVC概述

image

3.2.2 SpringMVC入门案例

3.2.3 注解介绍

3.2.4 SpringMVC入门程序开发总结(1+N)

3.2.5 Servlet配置类详解

3.2.6 入门案例工作流程分析

3.2.7 Controller加载控制与业务bena加载控制

image

3.2.8 PostMan

3.3 请求与响应

3.3.1 请求映射路径

3.3.2 各种请求参数传递

3.3.3 响应json数据

3.3.4 日期类型参数传递

@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,
                        @DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
                        @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
    System.out.println("参数传递 date ==> "+date);
    System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
    System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
    return "{'module':'data param'}";
}

/*
参数传递 date ==> Tue Apr 18 00:00:00 CST 2000
参数传递 date1(yyyy-MM-dd) ==> Tue Apr 18 00:00:00 CST 2000
参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> Tue Apr 18 00:05:20 CST 2000
*/

image

3.3.5 响应

3.4 REST风格

3.4.1 REST风格简介

3.4.2 RESTful入门案例

3.4.3 REST快速开发

在上面的案例中,有很多重复编写的代码

image

将每个方法的value中的模块名提取到类前

将每个方法的@ResponseBody提取到类前

类的@Controller和@ResponseBody可以合并成@RestController

每个方法@PostMapping中的请求行为设置可以用对应的@xxxMapping注解替换

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController//使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
@RequestMapping("/books")
public class BookController {

    //@RequestMapping( method = RequestMethod.POST)
    @PostMapping//使用@PostMapping简化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'}";
    }
}

3.4.4 案例:基于RESTful页面数据交互

POSTMan实现后台接口开发

@RestController
@RequestMapping("/books")
public class BookController {
    /**
     * 保存新增数据
     * @param book
     * @return
     */
    @PostMapping
    public String save(@RequestBody Book book) {
        System.out.println("book save" + book);
        return "{'module':'book save success'}";
    }

    /**
     * 获取全部
     * @return
     */
    @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> list = new ArrayList<Book>();
        list.add(book1);
        list.add(book2);
        return list;
    }
}

实现页面数据交互:

由于在访问静态资源页面时,SpringMVC的Sevlet容器配置中设置了protected String[] getServletMappings() { return new String[]{"/"};}会拦截所有请求,导致无法打开页面

因此创建SpringMvcSupport配置类,设置对静态资源的访问放行

@Configuration
public class SpringMVCSupport extends WebMvcConfigurationSupport {
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        //当访问/pages/???的时候,不要走MVC,走/pages目录下的内容
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");

    }
}

前端页面通过异步提交访问后台控制器

//添加
saveBook() {
    axios.post("/books", this.formData).then((res) => {

    });
},

//主页列表查询
getAll() {
    axios.get("/books").then((res) => {
        this.dataList = res.data;
    });
},

3.5 ⭐SSM整合

3.5.1 整合配置

3.5.2 功能模块开发

3.5.3 接口测试

3.5.4 添加事务

3.5.5 表现层数据封装协议

3.5.5 表现层与前端数据传输数据协议实现

3.5.6 异常处理器

程序开发过程中不可避免的会遇到异常现象

3.5.7 前后台协议联调

3.6 拦截器

3.6.1 拦截器概念

image

3.6.2 入门案例

image

3.6.3 拦截器参数

3.6.4 拦截器链配置

当配置多个拦截器时,形成拦截器链

拦截器运行中断,post都不会执行

4. Maven进阶

4.1 分模块开发与设计

4.2 依赖管理

依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

格式:

<!--设置当前项目所依赖的所有jar-->
<dependencies>
	<!--设置具体的依赖-->
    <dependency>
      	<!--依赖所属群组的id-->
        <groupId>com.mark</groupId>
      	<!--依赖所属项目的id-->
        <artifactId>Maven_02_Pojo</artifactId>
      	<!--依赖版本号-->
        <version>1.0-SNAPSHOT</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>


</dependencies>

image

4.3 聚合与继承

4.4 属性管理

4.5 多环境配置与应用

4.6 私服

标签:return,进阶,SpringMVC,class,public,Maven,book,id,String
来源: https://www.cnblogs.com/hackertyper/p/16663274.html