• SpringBoot项目和Tomcat的关系
  • 发布于 2个月前
  • 126 热度
    0 评论
以前最简单的web项目是html页面里,比如用asp写个连数据库的代码,但这个代码是静态,是需要部署在http服务器上,由http服务器解析html代码,然后展示页面,在展示页面时还可以到数据库去获取数据。

这里大家请注意两个概念,第一是http服务器,http服务器可以解析web代码(比如html格式的web代码)展示数据,和http服务器相对的是代码。第二是前后端,比如展示数据的html页面属于前端,而获取数据展示数据的业务代码叫后端。

1 刚开始的时候,前后端是不分离的,比如用asp或jsp写出来的代码,又能展示页面,又能获取并组织数据,asp是部署在IIS这个web服务器,而jsp是部署在tomcat服务器。

2 后来发现前后端混杂在一起,代码可维护性太差,所以就分离了,当年比较典型的分离框架是jsp+servlet+javabean,这已经有MVC的思想在里面了,这些代码是部署在jsp里,当年是打个war包,里面又包含前端jsp代码,又包含java代码,把后端访问数据库的代码写入javabean里。

3 后来发现,哪怕是jsp+servlet,程序员得自己写各种页面跳转和数据传输的动作,而这些又都是重复性的,和业务又无关,所以当时引出了各种框架,第一代是struts,后面是spring+struts+hibernate。但这种框架是后端的,前端依然是jsp或甚至是asp。

4 后来就慢慢形成了前后端分离的开发模式,前端也引入了js或jquery等框架,后来直到现在也包含了vue框架,后端也从ssh发展到ssm,再到spring boot。但是后端的ssm到spring boot,应该可以说是个分水岭。

5 大概在4,5年前,ssm框架还很流行,这种框架里,一个项目会包含spring mvc,spring容器和mybatis,但项目里依然可以包含jsp等前端页面,也就是说,前后端代码可以是放到一个项目里,要部署到http服务器(也叫web服务器)时,是打成war包,然后部署到tomcat服务器上,启动后,tomcat服务器就能监听客户发来的http请求做动作,前端归jsp+前端框架管,后端由ssm框架管。

6 再到后面出现的spring boot,里面有个启动类,启动类是个java main函数,启动后可以监听端口。但是spring boot项目只是后端项目,在spring boot项目里,一般是不放置jsp等前端代码。

7 而且,spring boot后端项目的部署情况是和之前ssm等后端框架不同,spring boot项目由于只包含java代码,所以是打成jar包,而且spring boot项目会自带web容器,默认是tomcat,所以启动时,是通过java -jar jar包命令启动spring boot,而不是像ssm框架一样,打包成war,把war包部署到tomcat服务器上再启动。

所以,如果说要禁止在spring boot项目里使用tomcat服务器,这种提法有一定的误导,确实spring boot的项目不用部署到tomcat服务器里,所以看似正确,但后端spring boot项目依然是要部署在web容器里,否则无法对外提供基于http协议的服务。

虽然启动时看不到tomcat的痕迹,但启动后依然是运行在tomcat服务器里的。如果硬要把spring boot项目禁用tomcat,那倒也不是不行,可以用jetty等容器,但实属多此一举。
用户评论