Springboot(项目搭建)
Web应用概述
Web技术基础
目前市面上的软件主要可分为两种:
- BS:(Browser/Server,浏览器/服务器架构模式)。
- CS:(Client/Server,客户端/服务器架构模式)。
架构对比
- C/S架构主要特点是交互性强,具有安全访问模式,网络流量低,响应速度快,
因为客户端负责大多数业务逻辑和UI演示,所以也被称为胖客户端,C/S结构的
软件需要针对不同的操作系统开发不同版本的软件。 - 随着互联网的兴起,CS架构不适合Web,最大的原因是Web应用程序的修改和
升级非常迅速,而CS架构需要每个客户端逐个升级桌面App,因此,
Browser/Server模式开始流行,简称BS架构。 - B/S架构的主要特点是分散性高、维护方便、开发简单、共享性高、总拥有成本低
BS架构原理
在BS架构下,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。
浏览器只需要请求服务器,获取Web页面,并把Web页面展示给用户即可。
开发工具
JDK : (Java Development Kit) Java 开发工具包
IDEA : 编辑器
Maven:是一个项目管理工具,可以对 Java 项目进行自动化的构建和依赖管理。
Maven的作用可以分成三类:
- 项目构建:提供标准的,跨平台的自动化构建项目的方式
- 依赖管理:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突
等问题 - 统一开发结构:提供标准的,统一的项目开发结构,
本地仓库配置
- 修改maven安装包中的conf/settings.xml文件,指定本地仓库位置。
<!-- localRepository |
远程仓库配置
- maven默认连接的远程仓库位置并不在国内,因此有时候下载速度非常慢,我
们可以配置一个国内站点镜像,可用于加速下载资源。
<mirrors> |
Web入门
控制器
- Spring Boot提供了@Controller和@RestController两种注解来标识此类负责
接收和处理HTTP请求。 - 如果请求的是页面和数据,使用@Controller注解即可;如果只是请求数据,
则可以使用@RestController注解
@RestController注解会将返回的对象数据转换为JSON格式。
路由映射
- @RequestMapping的value属性用于匹配URL映射,value支持简单表达式
@RequestMapping(“/user”) - @RequestMapping支持使用通配符匹配URL,用于统一映射某些URL规则类
似的请求:@RequestMapping(“/getJson/*.json”),当在浏览器中请求
/getJson/a.json或者/getJson/b.json时都会匹配到后台的Json方法 - @RequestMapping的通配符匹配非常简单实用,支持“”“?”“*”等通
配符 - 符号“”匹配任意字符,符号“*”匹配任意路径,符号“?”匹配单个字符。
- 有通配符的优先级低于没有通配符的,比如/user/add.json比/user/*.json优先
匹配。 - 有“*”通配符的优先级低于有“”通配符的
Method匹配
- HTTP请求Method有GET、POST、PUT、DELETE等方式。HTTP支持的全部
Method - @RequestMapping注解提供了method参数指定请求的Method类型,包括
RequestMethod.GET、RequestMethod.POST、RequestMethod.DELETE、
RequestMethod.PUT等值,分别对应HTTP请求的Method - Method匹配也可以使用@GetMapping、@PostMapping等注解代替
例如 : @RequestMapping(value = "/User", method = RequestMethod.GET) ===>
@GetMapping("/User")
参数传递
- @RequestParam将请求参数绑定到控制器的方法参数上,接收的参数来自
HTTP请求体或请求url的QueryString,当请求的参数名称与Controller的业务
方法参数名称一致时,@RequestParam可以省略 - @PathVaraible:用来处理动态的URL,URL的值可以作为控制器中处理方法
的参数 - @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理
非 Content-Type: application/x-www-form-urlencoded编码格式的数据,
比如:application/json
、application/xml
等类型的数据
静态资源访问
- 使用IDEA创建Spring Boot项目,会默认创建出classpath:/static/目录,静态
资源一般放在这个目录下即可。 - 如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤
策略。 - 在application.properties中直接定义过滤规则和静态资源位置:
- 过滤规则为/static/**,静态资源位置为classpath:/static/
|
SpringBoot
SpringBoot 特点
- 遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。
- 能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
- 提供定制化的启动器Starters,简化Maven配置,开箱即用。
- 纯Java配置,没有代码生成,也不需要XML配置。
- 提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等
开发环境热部署
- 在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、
重新启动,整个过程非常麻烦,影响开发效率。 - Spring Boot提供了spring-boot-devtools组件,使得无须手动重启Spring
Boot应用即可重新编译、启动项目,大大缩短编译启动的时间。 - devtools会监听classpath下的文件变动,触发Restart类加载器重新加载该类,
从而实现类文件和属性文件的热部署。 - 并不是所有的更改都需要重启应用(如静态资源、视图模板),可以通过设置
spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应应用
使用optional=true表示依赖不会传递,即该项目依赖devtools;其他项目如
果引入此项目生成的JAR包,则不会包含devtool<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
在application.properties中配置devtoolsspring.devtools.restart.enabled = true
spring.devtools.restart.additional-paths=src/main/java
Mybatis-plus使用与mysql数据库的连接
(MyBatis-Plus)[https://mp.baomidou.com/] 是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
<dependency> |
#druid连接池 |
Swagger2接口文档使用
前后端分离的项目开发中,后台写好的接口在跟前端对接测试的时候,往往很麻烦,需要自己编写接口文档,接口参数,响应数据等等。当接口更改后,又要手动去更改接口文档,久而久之就会忘记或者搞得接口和文档不一致。Swagger的诞生就是为了解决这个痛点。
|
#解决swagger2与springboot不兼容问题 |
测试网站:Swagger2