Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目
免费开源、并支持Servlet和JSP规范。目前Tomcat最新版本为10.0。
Tomcat目录结构
文件夹 | 说明 | 备注 |
---|---|---|
bin | 可执行脚本 | startup.bat启动,shutdown停止 |
conf | 配置文件 | server.xml配置整个服务器的信息,web.xml项目部署描述符文件 |
lib | 存放Tomcat运行时所需的jar文件 | |
logs | 存放日志文件 | |
temp | Tomcat的临时文件 | |
webapps | 存放web项目,每个文件夹都是一个项目 | ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目 |
work | 运行时生成的文件,最终运行的文件在这里 | 用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,生成的Java和Class文件都会存放到这个目录下 |
Tomcat的使用
启动
- 进入Tomcat安装目录下的bin目录下,双击startup.bat启动服务器
访问
- 打开浏览器,输入http://localhost:8080,如果出现此页面,说明访问成功
停止
- 进入Tomcat安装目录下的bin目录下,双击startdown.bat关闭服务器
- 或者直接关闭才启动的命令行窗口
创建项目
- 在webapps中创建一个文件夹myweb,也就是一个项目
- 然后在myweb中再创建WEB-INF文件夹,用于存放核心内容,然后在里面创建三个文件夹
- 创建classes文件夹,存放.class文件
- 创建lib文件夹,存放相关jar包
- 创建web.xml,项目配置文件
- 在myweb中再创建hello.html并写一些内容
资源访问
- 浏览器中输入http://localhost:8080/myweb/hello.html即可访问页面
- 其中myweb是项目名,hello.html是要访问的资源
项目部署
- 将完成的项目打包成war包,然后直接放到Tomcat中的webapps目录即可,然后启动Tomcat后,就会自动解压这个war包,然后就可以访问了
修改配置文件
在conf目录下的server.xml文件中修改
修改端口号
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改主机
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
name
name中的值是localhost,对应的就是本地127.0.0.1,在 C:\Windows\System32\drivers\etc\hosts这个文件中可以修改此属性
(不建议修改,系统盘的配置改错了电脑容易崩)
# 127.0.0.1 localhost
127.0.0.1 activate.navicat.com
比如在里面加一条配置
# 127.0.0.1 localhost
127.0.0.1 activate.navicat.com
127.0.0.1 robot
然后再访问的时候,也可以通过robot来代替localhost,此时它们两个是一样的了
(这个文件直接修改可能系统不允许,可以先复制到桌面,然后再修改,改完之后再复制回去,就可以将原来的替换掉了)
appBase
appBase中的值是webapps,也就是默认的访问路径,webapps下的每个文件都是一个项目,当启动Tomcat,在浏览器中访问http://localhost:8080/的时候,默认定位到这个目录下(因为此目录下有个特殊的ROOT文件,所以会默认访问ROOT项目),如果此时想访问其它项目,可以直接在后面追加路径,比如webapps下还有一个MyServlet_war项目,我就可以在浏览器中输入http://localhost:8080/MyServlet_war/,就可以访问到此项目了
解决启动界面乱码
在conf目录下的logging.properties配置文件中找到这一行,将其注释掉即可
配置虚拟目录
Tomcat默认访问自己目录下的项目,现在想在c盘下创建一个项目,然后启动Tomcat,在浏览器中可以直接访问到,此时就需要设置一个虚拟目录
在Tomcat的conf目录下打开server.xml配置文件,在Host标签下添加一条配置
docBase中是自己的项目名,实际存在的,后面的path就是虚拟目录,在浏览器中访问时要通过这个虚拟目录来访问这个项目
<Context docBase="C:\aaa" path="/aaa"/>
以下就是aaa项目,WEB-INF下面存放的是classes和web.xml
然后启动Tomcat,在浏览器中访问http://localhost:8080/aaa/,就能访问到index.html页面
假如在WEB-INF中有一个servlet的class文件C:\aaa\WEB-INF\classes\com\robot\servlet\HelloServlet.class,然后再web.xml文件中配置好
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>com.robot.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
然后就可以访问http://localhost:8080/aaa/hello,去访问这个servlet了,即使不在Tomcat服务器的目录下, 因为有虚拟目录aaa,所以浏览器访问时在前面加个虚拟目录aaa也是可以访问的