tomcat下载安装
1、认识tomcat服务器
tomcat用来管理web应用,叫应用服务器,本身只是一个Servlet容器
为什么要使用tomcat 为了达到资源共享。
在静态web,俩种访问方式
一种是找到文件的磁盘路径,一种是直接点击右上角的浏览器图标
直接点击的话,有一个问题,63342是idea端口。
解决办法:tomcat
使用网络编程三要素:协议,ip,端口号
通过网络编程,在网络里访问服务器的资源了。
Tomcat的作用是作为Web服务器部署Web项目,从而让客户端能够访问
1.web服务器,web应用部署到tomcat,就可以通过url访问.
2. tomcat能管理servlet类 ,servlet类创建和销毁我们都不管。
2、下载安装
tomcat是有java开发的一段应用程序
去官网下载:Apache Tomcat® - Welcome!
tomcat是绿色免安装版:即把zip文件解压后就能直接使用tomcat
3、tomcat 解压后目录
tomcat 解压后一定要放在没有中文,没有空格的目录。
bin目录:
- 启动tomcat:startup.bat
- 关闭tomcat:shutdown.bat
webapps目录 web应用部署后都在,webapps里放着呢
在tomcat如何部署一个web项目,只要把war包扔到webapps目录中,在启动tomcat时会被解压,加载应用程序
项目放在webapps目录不需要解压
部署后怎么访问:
localhost:8080 //8080是tomcat的默认端口号
localhost:8080 /工程名(war包名)
4、server.xml
conf目录:tomcat的核心配置文件位置
server.xml 用来配置tomcat本身的配置信息,
69行左右,设置当前的端口号,默认tomcat的端口号是8080
web.xml 用来配置部署到tomcat的web应用
此处的web.xml 作用于部署到tomcat所有的web应用
当前web应用里也有web.xml,只作用于当前工程本身,俩个web.xml上有逻辑继承关系,配置有冲突时以它自己的为准(范围小的为准)
idea中使用tomcat
1、idea中集成tomcat
settings-build-applications servers-tomcatserver-选择tomcat home[就是解压后的目录]
点击+号
告诉idea。它已经可以对E:\server\apache-tomcat-8.5.27进行管理[启动和关闭]
2、tomcat开关
配置启动和关闭tomcat的开关
点击“+”,列出相关服务器的开关,找到
remote是远程开关,可以开启和关闭其他计算机上的tomcat
local是开启和关闭当前计算机上的tomcat
之后就会弹出这样一个窗口,配置tomcat开关信息
接着在idea中-----就可以启动tomcat
3、创建网站(web应用)
file-new-moudle
java enterprise--web application【勾选create web.xml】-[工程会自动部署到tomcat]
点击next,输入网站名后点击finish
WEB-INF下放jar包和配置文件
静态文件要放在web文件夹下
4、发布网站
把刚刚创建的网站(web应用)交给tomcat管理,就是发布网站。idea在每创建一个web应用,会自动送一个开关。
点击artifact选择要发布的网站
给网站启英文别名
Deployment 下的上下文路径要改,通过它来访问部署到tomcat的wen应用,必须以/开头
就可以看到tomcat下,管理这个网站了
启动后,浏览器自动打开页面
我们改变地址栏url,加入要访问的静态资源文件名称,效果如下
5、详细配置
1.redeploy 重新部署web应用,只部署更新后的,tomcat不需要重启,
改的是类和配置文件有效,点击左下方的刷新按钮,是update。【dont ask again】
2.update 当前窗口idea失去焦点,自动更新类和资源。【alt+tab】,
只适合改的是静态资源,改的是类和配置文件
tomcat 优化
1、tomcat工作模式(IO模型)
tomcat 8及以后的工作模型是NIO。
2、tomcat线程
Tomcat使用线程来处理接收的每个请求。Tomcat最大线程连接数默认值200。
需要修改conf/server.xml文件,修改里面的配置文件: maxThreads=””
可以根据机器的时期性能和内存大小调整,一般 可以在400-500。最大可以在800左右
3、tomcat和nginx的区别
都能提供html的解析
4、ThreadLocal
在springmvc中,我们会使用ThreadLocal来保存线程专有的数据,因为tomcat会为每一个请求创建一个线程,所以在这种场景下,线程专有等于请求专有,比如我们可以把登录用户的id存在ThreadLocal里,这样在请求的处理链路上,我们就不用把用户id沿着方法一次又一次地传递,需要用用户id的时候,直接从ThreadLocal里面拿就行了,在请求结束的时候,再把ThreadLocal中保存的数据清理掉,这样线程复用的时候,就不会读到之前的用户的信息。