目录
理论
Spring Boot优点:
1. 快速创建独立运行的Spring项目,以及与主流框架集成;
2. 使用嵌入式的Servlet容器,应用无需打包成WAR包;
3. starters自动依赖与版本控制;
4. 大量的自动配置,简化开发,也可修改默认值;
5. 无需配置XML,无代码生成,开箱即可;
6. 准生产环境的运行时应用监控;
7. 与云计算的天然集成;
微服务:架构风格
一个应用应该是一组小型服务;可以通过HTTP方式进行互通;
演示
在Spring 官网下载项目;
下载好后,使用IDEA打开:
构建如下Package和Class
源码如下:
HelloController.java
package com.IT1995.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
跑起来后,进入web网站:
下面演示打包:
当maven中存在这个时候(用上面的操作肯定会有):
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
IDEA如下打包:
双击后:
关闭IDEA中的运行。
直接用Java调用jar包:
命令:java -jar xxxx.jar
同样Web能访问:
解析
这里我们看下web网站:
从中可以看出这个hello的请求返回的类型是一个document;
从中可以发现,他是通过GET方法进行请求的!
这里猜测,如果使用POST请求,能不能得到相同的效果:
答案是可以的!
下面来解析下响应头的信息:
Content-Type : text/plain;charset=UTF-8
首部字段Content-Type说明实体主体内对象的媒体类型。和首部字段Accept一样,字段值用type/subtype形式赋值。
参数charset使用iso-8859-1或euc-jp等字符集进行赋值;
下面解析下请求头的Accept首部
Accept: text/html, application/xhtml+xml, application/xml;q=0.9,*/*;q=0.8
Accept首部字段通知服务器,用户代理能够处理的媒体类型以及每天类型的相对优先级。可以使用type/subtype这种形式,一次指定多种媒体类型;
举个例子:
文本文件:
text/html,text/plain,text/css ...
application/xhtml+xml,application/xml ...
图片文件:
image/jpeg,image/gif,image/png ...
视频信息
video/mpeg, video/quicktime ...
应用程序使用的二进制文件
application/octet-stream, application/zip ...
比如浏览器不支持PNG图片格式,Accept就不指定image/png,而是指定image/gif和image/jpeg等图片类型。
若想要给显示的媒体类型增加优先级,使用q=来额外表示权重,用;分开,范围为0~1,可以精确到小数点后3位,1为最大,不指定时候默认为1.0。
当服务器提供多种内容时,将会优先返回权重值最高的媒体信息。
其中上面的 */*就是接收任意类型。
HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 12
Date: Sat, 02 Mar 2019 05:19:28 GMT
Hello World!
及,内容为text/pain,字符集为UTF-8,长度为12,并且有时间,内容为Hello World!