文章目录
- 1. 运行项目
- 2. 输出 Hello world
- 3. Web 服务器
- 4. 请求响应流程分析
- 5. 访问出错怎么办
-
- 404
-
- 错误实例 1:URL 单词拼错
- 错误实例 2:注解写错
- 500
- 无法访问此网站
- 小结
- 总结
1. 运行项目
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
-
@SpringBootApplication
是Spring Boot
启动类注解
点击启动类的main
方法就可以运行Spring Boot
项目了,启动成功如下图所示:
2. 输出 Hello world
JavaEE 更多是围绕着如何使用 Java 来进行 web 开发。如果要和浏览器进行交互,就需要使用 Spring Boot 来实现
在创建的项目包路径下创建 UserController 文件,实现代码如下:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@RequestMapping("/hello")
public String hello() {
return "Hello, Spring";
}
}
- 重新启动项目,访问
127.0.0.1:8080/hello
,最终效果如下:
3. Web 服务器
浏览器和服务器两端进行数据交互,使用的就是 HTTP
协议
前面文章已经介绍了 HTTP
协议,知道了 HTTP
协议就是 HTTP
客户端和 HTTP
服务器之间的交互数据的格式
Web
服务器就是对 HTTP
协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析 HTTP
协议规则),让 Web
开发更加便捷,所以 Web
服务器也被称为 WWW
服务器,HTTP
服务器,主要功能是提供网上的信息浏览服务
- 常见的
Web
服务器有:Apache
,Nginx
,IIS
,Tomcat
,Jboss
等
Spring Boot
内置了 Tomcat
服务器,无需配置就可直接运行
Tomcat 默认端口号是 8080,所以我们程序访问时的端口号也是 8080
4. 请求响应流程分析
浏览器输入 URL 之后,发起请求,就和服务器之间建立了连接
浏览器,输入网址:127.0.0.1:8080/user/sayhi
- 通过
IP
地址127.0.0.1
定位到网络上的一台计算机(127.0.0.1
就是本机) - 通过端口号
8080
找到计算机上对应的进程,也就是在本地计算机中找到正在运行的8080
端口的程序 -
/user/sayhi
是请求资源位置- 资源:对计算机而言资源就是数据
-
web
资源:通过网络可以访问到的资源(通常指放在服务器上的数据)
127.0.0.1:8080/user/sayhi
,就是向本地计算机中的 8080
端口程序,获取资源位置是 /user/sayhi
的数据,然后发给服务器
服务器:
- 接收到浏览器发送的信息(如:/user/sayhi)
- 在服务器上找到/user/sayhi 的资源
- 把资源发给浏览器
5. 访问出错怎么办
404
404 表示用户访问的资源不存在,大概率是 URL 路径写的不正确
错误实例 1:URL 单词拼错
错误实例 2:注解写错
注释写错或者没写都会报错
@Controller
public class UserController{
@RequestMapping("/sayHi")
public String sayHi(){
return "hello, spring";
}
}
- 此时访问也会报错
通过 Fiddler
观察 http
请求
500
服务器出现内部错误,一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃),会产生这个状态码
错误实例:
@RestController
public class UserController {
@RequestMapping("/sayHi") {
int res = 10/0;
return "hello, Spring";
}
}
- 重启 Tomcat 服务器,重新访问页面,可以看到:
此时,程序后端控制台已经打印了具体的异常调用栈
- 异常信息里已经提示了出现异常的代码是
UserController.java
的第 11 行 - 错误原因是算术异常:除数为 0
- 按照异常提示,去解决对应的问题即可
无法访问此网站
一般是 Tomcat
启动失败了
打开 Fiddler 的话,界面如下:
这种情况一般是服务器未启动,也就是 Tomcat
未启动,或者 IP/端口号写错了
小结
熟悉 HTTP
协议能让我们调试问题事半功倍
-
4xx
的状态码标识路径不存在,往往需要向上检查 URL 是否正确,和代码中设定的 Context Path 以及 Servlet Path 是否一致 -
5xx
的状态码表示服务器出现错误,往往需要观察页面提示的内容和 Tomcat 自身的日志,观察是否存在报错 - 出现连接失败往往意味着服务没有正确启动,也需要观察服务器的自身日志是否有错误提示
程序猿调试 BUG 如同医生诊病
一个有经验的程序猿和一个新手程序猿相比,最大的优势往往不是代码写的多好,而是调试效率有多高。如同一个问题可能新手花了几天都无法解决,但是有经验的程序猿可能几分钟就搞定了
总结
Spring Boot
是为了快速开发 Spring
而诞生的,Spring Boot
具备:
-
Spring Boot
提供了启动添加依赖的功能,可以快速集成框架 - 内置
web
服务器,无需配置Tomcat
等web
服务器,直接运行和部署程序 - 可以完全抛弃繁琐的
XML
,使用注解和配置的方式进行开发 - 支持更多的监控的指标,可以更好的了解项目的运行情况等特点
Spring Boot
可使用IDEA
或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication
就可以启动Spring Boot
项目了