您现在的位置是:探索 >>正文

tomcat是干嘛用的

探索8475人已围观

简介```html tomcat是干嘛用的 body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, ...

```html tomcat是干嘛用的

tomcat是干嘛用的

你写了一个Java网站,用IDE跑得好好的,但想让隔壁工位的同事也能在浏览器里打开看看,怎么办?总不能让人家把整个项目拷过去再装个Eclipse吧。这时候Tomcat就派上用场了——它就是一个能让你把写好的Java Web应用“挂”上去,然后别人通过IP和端口就能访问的东西。说白了,Tomcat是一个Servlet容器,也叫Web服务器,专门跑Java的Web程序。

我第一次接触Tomcat是大二做课程设计,用JSP写了个简陋的留言板。当时根本不懂什么叫“容器”,只知道把项目打成war包往webapps文件夹里一丢,启动bin目录下的startup.bat,浏览器敲localhost:8080/留言板,页面就出来了。那种感觉挺神奇的——明明没装什么大型软件,就一个压缩包解压出来的文件夹,居然能让我写的Java代码变成网页。

Tomcat的核心工作其实就两件事:接收HTTP请求,交给对应的Java代码处理,再把结果拼成HTTP响应发回去。你写的Servlet或者Spring MVC的Controller,本质上都是被Tomcat调用的。它内部维护了一个线程池,每个请求进来就分配一个线程去执行你的业务逻辑。所以为什么有时候请求多了会卡?因为线程池满了,后面的请求就得排队。这个细节说明Tomcat不只是个“转发器”,它还要管并发、管生命周期、管会话。

很多人把Tomcat和Apache HTTP Server搞混。后者是C语言写的,主要处理静态文件、做反向代理;Tomcat是Java写的,擅长动态内容。实际生产环境里经常是Nginx在前头扛静态资源和负载均衡,Tomcat在后面跑Java应用。我见过一个创业公司的架构,Nginx配了三个Tomcat实例,每个实例跑同一个war包,数据库连接池各自独立——这种部署方式Tomcat自己就能搞定,不需要额外装什么重型中间件。

一个容易忽略的点:Tomcat默认端口是8080,但你可以改成80。改conf/server.xml里的<Connector port="8080">就行。不过Linux下用80端口需要root权限,所以很多人还是老老实实跑8080,前面挂个Nginx转发。

Tomcat的目录结构也值得说一嘴。bin放启动脚本,conf放配置文件,webapps是你丢war包的地方,logs里能看到访问日志和错误堆栈。有次我帮同事排查一个404问题,翻了半天代码没毛病,最后发现他把war包放到了webapps/ROOT外面,Tomcat压根没解压。这种坑踩过一次就记住了。

版本选择上,Tomcat 9和10差别挺大。9用的是javax.servlet包,10换成了jakarta.servlet。如果你用Spring Boot 2.x,默认内嵌的是Tomcat 9;升到Spring Boot 3.x,内嵌的就是Tomcat 10。很多老教程还在讲javax,你照着做在Tomcat 10上跑,启动就报ClassNotFound。这不是Tomcat的错,是Java EE改名Jakarta EE带来的连锁反应。

说到内嵌Tomcat,现在用Spring Boot的人可能都没单独装过Tomcat。Spring Boot把Tomcat打包进了jar里,java -jar一跑,Tomcat就悄悄启动了。但本质上还是那个Tomcat,只是启动方式从startup.sh变成了Spring Boot的SpringApplication.run()。你打开Maven依赖树,能看到spring-boot-starter-tomcat,里面就是Tomcat的核心jar包。

那Tomcat能不能跑PHP?不能。它只认Java的Servlet规范。你非要把PHP文件丢进webapps,它只会当普通文本下载下来。同样,Tomcat也不适合跑纯静态的大文件下载,Nginx处理这些效率高得多。工具各有各的活,Tomcat的定位很清晰——Java Web应用的运行环境。

最后提一个实际场景。你本地开发用Tomcat 9,测试环境用Tomcat 8.5,生产环境用Tomcat 9。不同版本对Servlet规范的支持有细微差别,比如HttpServletRequest.getParts()在8.5和9里的行为就不完全一样。所以别随便混用,至少大版本要对齐。我见过有人本地跑得好好的文件上传,部署到测试环境就报错,查了一下午发现是Tomcat版本差了一个小版本号。

Tomcat不复杂,但细节不少。它就像Java Web世界里的空气——平时感觉不到存在,一旦出问题,整个应用就喘不上气。

```

Tags:

相关文章

  • 网站图片水印需要删除那串代码

    探索

    网站后台的图片水印功能里,那串代码看着就烦。尤其是当你用第三方插件或者主题自带的水印工具时,它默认给每张图打上一行网址或版权字符,样式老土,还占地方。你翻遍设置面板,可能压根找不到关闭选项,于是只能去 ...

    【探索】

    阅读更多
  • 渗透电脑

    探索

    我花了三个晚上,才把那个老头的电脑搞定。 不是技术难。是那台机器太老了,开机要转两分钟风扇,硬盘里全是“新建文件夹(3)”这样的名字。老头姓周,住我对门,退休前是中学物理老师。他找我的时候,手里攥着一 ...

    【探索】

    阅读更多
  • 暴力破解工具下载

    探索

    打开任何一个黑客论坛的下载区,《暴力破解工具》永远挂在显眼位置。Hydrogen、Hydra、John the Ripper,名字听着像希腊神话,干的事却直白得很——拿字典里几亿条密码组合,对着登录框 ...

    【探索】

    阅读更多


友情链接