JavaEE_03_SpringMVC基础

《SpringMVC基础》

目录

  • Spring Web MVC(熟练)
  • 前后分离开发(掌握)
  • SpringBoot MVC(熟练)
  • Swagger UI(掌握)

一、Spring Web MVC

Spring Web MVC是Spring框架一个非常重要的模块之一,其采用了MVC架构模式的思想,将Web层进行职责解耦,便于我们简单、快速开发出MVC结构的Web程序,并且它的API还封装了Web开发中的一些常见功能,简化了Web程序开发的过程。

Spring Web MVC核心组件:

  1. DispatcherServlet(前端控制器,请求入口)
  2. HandlerMapping(处理器映射器,请求派发)
  3. Controller(控制器,请求处理流程)
  4. ModelAndView(模型,封装业务处理结果和视图)
  5. ViewResolver(视图解析器,视图显示处理)

请添加图片描述

二、前后分离开发

传统Web开发模式

优点:

  • 前端可以编写Java程序,后端人员可直接在页面上写后台逻辑;

  • 技术单一,容易掌握,代码好排查问题;

  • 一个技术人员即可完成前后端的功能开发(全栈),适合小型企业使用。

缺点:

  • 影响整体开发进度,前后端无法单独分工;

  • 后端编译代码时,需要把前端代码编译(JSP其实也是Java的Servlet编写的,需要后台编译);

  • 运行时前后端跳转不断(来回转发,界面不能局部刷新),影响用户体验。

前后分离开发模式

  • 前端:负责界面交互,主要是显示数据;
  • 后端:负责数据加工,主要是处理数据;
  • 前后端开发互不干扰,各自开发完毕联调即可。

请添加图片描述

三、SpringBoot MVC

SpringBoot MVC本质就是Spring Web MVC,但在前后分离的基础上,书写形式有所不同。

请添加图片描述

案例一

  1. com.hpr.service.ITestService
package com.hpr.service;

import com.hpr.entity.User;

public interface ITestService {

    /**
     * 查询用户信息列表
     *
     * @return 结果集
     */
    List<User> getUserList();
}
  1. com.hpr.service.impl.TestService
package com.hpr.service.impl;

import com.hpr.entity.User;
import com.hpr.service.ITestService;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

//@Service表示当前类是一个业务实现类
@Service
public class TestService implements ITestService {

    @Override
    public List<User> getUserList() {
        //此处省略数据库操作,响应假数据
        List<User> list = new ArrayList<>();
        list.add(new User(1001, "Alice", 18, "18830201518"));
        list.add(new User(1002, "Bob", 20, "18830201516"));
        list.add(new User(1003, "Clover", 30, "18830201514"));
        list.add(new User(1004, "Divid", 24, "18830201512"));
        return list;
    }
}
  1. com.hpr.controller.TestController
package com.hpr.controller;

import com.hpr.entity.User;
import com.hpr.service.ITestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/*
 * @RestController:相当于Controller+@ResponseBody,所有方法返回JSON格式数据;
 * @RequestMapping:指定当前Controller访问地址;
 * @CrossOrigin("*"):解决跨域问题(前后不同源导致的问题)。
 * */
@CrossOrigin("*")
@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private ITestService iTestService;

    @GetMapping("/getUserList")
    public List<User> getUserList() {
        return iTestService.getUserList();
    }
}
  1. 启动项目,访问http://localhost:8080/test/getUserList进行测试。

执行结果

请添加图片描述

四、Swagger UI

项目开发中,我们会书写大量接口,若没有清晰的接口文档,不仅前端调用起来非常混乱,后端维护也是大问题。开发中我们通常使用Restful风格接口文档框架进行管理,Swagger UI就是其中较为优异的一款。

Restful风格

Restful 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

请添加图片描述

一般情况下(为了偷懒),会使用@PostMapping做增、改注解,@GetMapping做删、查注解。

Swagger UI核心注解

  1. @EnableSwagger2Doc:启动类注解,表示启动Swagger UI;
  2. @Api:Controller注解;
  3. @ApiOperation:方法注解;
  4. @ApiParam:参数说明注解;
  5. @ApiModel:模型注解;
  6. @ApiModelProperty:模型属性注解。

案例二

  1. pom.xml
<!--swagger-->
<dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.9.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
  1. application.yml
swagger:
  title: 《Spring学习接口文档》     #文档标题
  description: 测试文档            #文档描述
  global-operation-parameters:    #全局参数设置(一般写全局校验参数,如token)
      - name: Authorization       #参数名称
        description: 认证信息      #参数描述
        modelRef: string          #数据类型
        parameterType: header     #请求类型(请求头/请求体)
        required: false           #是否必须
  1. com.hpr.MainApplication
...
@EnableSwagger2Doc
@SpringBootApplication
public class MainApplication {
...
}
  1. com.hpr.controller.TestController
...
@Api(tags = "测试类接口")
public class TestController {

    @Autowired
    private ITestService iTestService;

    @GetMapping("/getUserList")
    @ApiOperation("查询用户信息列表")
    public List<User> getUserList() {
        return iTestService.getUserList();
    }
}
  1. com.hpr.entity.User
...
@ApiModel("用户信息")
public class User {

    @ApiModelProperty("账号")
    private int id;

    @ApiModelProperty("名称")
    private String name;

    @ApiModelProperty("年龄")
    private int age;

    @ApiModelProperty("电话")
    private String phone;
    
    ...
}
  1. 启动项目,访问接口文档地址http://localhost:8080/doc.html。

执行结果

清晰的接口文档不仅可以增强系统维护性,也可以使前端开发人员调用更加方便。

请添加图片描述

总结

重点

  1. SpringMVC处理逻辑及代码实现;
  2. Swagger UI框架使用。

难点

  1. Spring Web MVC核心组件;
  2. SpringBoot MVC代码实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值