前言:作为springboot的初学者,我第一个想搞明白的问题就是网页的url是怎么访问到后端服务的。
基础知识
URL的构成:协议名称://域名:端口号/URL
例子:http://localhost:80/index.html
-
知识点1:http协议默认端口号80,https协议默认端口号443
※web访问是通过http协议的,即使你没有在浏览器输入http,浏览器默认添加http的头。
当你通过http协议访问时,默认给你添加了80的端口号。所以如果后端服务端口是80,就可以写成如下http://localhost/index.html
-
知识点2:tomcat服务器默认配置的端口是8080,所以通过tomcat部署的服务后端端口默认8080.
※这个端口是服务器的端口,上面是访问的端口。两个端口必须一致,url才可以访问到正确的服务。
我们重点讨论URL的部分是如何拼接的,从后往前的顺序,看URL是如何一步步被限定下来的。
第一层 Controller
1.1 当controller只有方法上定义 @RequestMapping(“url”)
访问地址:http://localhost:8080/hello
※:tomcat默认端口8080
@RestController
public class HelloController {
@RequestMapping("hello")
private String demo(){
return "Hello spring";
}
//这里url前是否加斜杠都不影响访问,原理不知道,请高手解释。
@RequestMapping("/greet")
private String greet(){
return "greet";
}
}
1.2 当controller类也上定义 @RequestMapping(“url”)
在1.1基础上url前拼接类上的url即可,类上的url前是否有斜杠也不影响访问。
访问地址:http://localhost:8080/servername/hello
※:tomcat默认端口8080
@RestController
@RequestMapping("/servername")
public class HelloController {
@RequestMapping("hello")
private String demo(){
return "Hello spring";
}
@RequestMapping("/greet")
private String greet(){
return "greet";
}
}
第二层 配置文件中context-path
访问地址1:http://localhost:80/project-path/servername/hello
访问地址2:http://localhost/project-path/servername/hello
application.yml配置文件如下: