目录
一、安装和启动
二、目录结构
三、tomcat组件
3.1、顶层元素
3.2、连接器类元素
3.3、容器类元素
3.4、嵌套类元素
四、web应用目录结构
五、配置虚拟目录
5.1、webapps
5.2、web应用放入其他位置
5.2.1、修改server.xml
5.2.2、在\conf\Catalina\localhost下建立xml
六、配置虚拟主机
七、配置web应用默认页面
八、Context元素
九、热部署
十、类加载器
十一、tomcat与eclipse集成
参考
tomcat是一个运行Servlet和JSP的容器,开源项目,由java编写的。
安装之前需要安装jdk,然后从官网上下载tomcat的压缩包,解压到某个文件夹下。如果是windows系统,可以通过执行bin目录下的startup.bat文件启动服务。可以双击该脚本或者通过命令行执行它。双击后如下:
可以看出,启动后tomcat已经监听了80端口,当然,刚开始是8080端口,不过我修改了它,后面会介绍。然后在浏览器上输入地址http://localhost/(或者http://localhost:8080)。
然后关闭命令行窗口就可以关闭服务。
容器中各个组件在server.xml都有对应的元素,xml每种元素代表一种tomcat组件,可分为4类:
一个service中通过connector接受到请求,发给engine,engine传给虚拟主机host中的一个具体应用context。因此想要修改tomcat监听的端口,只要修改对应的Connector元素就行了,比如修改server.xml中的:
比如web应用mywewapp,在该目录下可以直接存放html、css、js和其他文件,这些都是可以被客户端访问到,但是WEB-INF目录不能被客户端访问。WEB-INF目录下的classes存放自己编写的.calss文件,lib存入web应用需要的jar包。web.xml是web应用的配置文件。详细参考:Java Web App Directory Layout
tomcat可以将web应用映射成为能够外界访问的虚拟web目录,比如虚拟目录为webapp,那么可以通过http://your_domain_name/webapp/....访问资源。
可以直接将web应用放入webapps目录下,tomcat会自动扫描该目录并加载新加的应用,web应用的名称作为虚拟目录。先在webapps目录下创建文件夹myweb,进入myweb,建立welcome.html文件,里面输入一些字。然后浏览器中访问http://localhost/myweb/welcome.html
web应用放入其他位置,可以通过修改server.xml或者在某一目录下建立xml文件来配置虚拟目录。
比如将web应用放入D盘,D:\myweb。则可以配置server.xml文件,修改server.xml后需要重启tomcat。下面在Host下添加了一条Context元素。
context可以用于将本地系统中一个目录映射为可供web浏览器访问的虚拟目录。path属性指定web应用的虚拟路径,如果改成myweb2,相应的url也需要修改。docBase属性用于指定该虚拟目录所在本地系统中的目录地址,可以用绝对地址或者相对于webapps目录的相对地址。然后访问网址http://localhost/myweb/welcome.html
可以通过设置path=""将该应用设置为默认应用,然后可以通过http://localhost/welcome.html访问
修改server.xml需要重启tomcat,但是可以在\conf\Catalina\localhost目录下创建xml文件配置虚拟目录,tomcat会自动扫描,不用重新启动。Catalina是service服务的名字,localhost是Host虚拟主机的名字。在该目录下创建一个名为myweb.xml的配置文件(可以任意文件名,作为虚拟目录名字),然后将
可以将myweb.xml的配置文件重新命名为ROOT.xml,就会将该web应用设置为默认应用。可以直接通过http://localhost/welcome.html访问。
上面不是说到path是用来设置虚拟目录的吗??我们只是修改了xml文件名而已,没有修改path,为什么还可以修改虚拟目录?这是因为path只在server.xml中有效!!请查看我的另一篇博客:tomcat中Context的path和docBase属性
tomcat允许用户在同一计算机上配置多个web站点,在这种情况下,需要为每个web站点配置不同的主机名,这个过程为配置虚拟主机。
其中name是该虚拟主机的名字,appBase指定该虚拟主机所有应用默认的目录,现在我们将之前的myweb应用放入该目录下,重启tomcat,然后访问http://www.mydomain.com/myweb/welcome.html
为什么404了呢?。。。因为我们没有域名啊,www.mydomain.com没有被解析到我的主机,可以通过购买域名或者修改hosts文件让域名解析到我的主机上,下面修改C:\Windows\System32\drivers\etc\hosts文件
然后访问http://www.mydomain.com/myweb/welcome.html
如果没有成功访问,可以通过ipconfig /flushdns刷新DNS缓存内容再访问。
其实这已经不属于tomcat的配置范围了,这是web应用的配置。但是初学者都对这个感兴趣~~于是记录下来。需要在web应用的WEB-INF下web.xml添加welcom-file-list元素。
我已经将myweb应用重新放入webapps中了,然后建立WEB-INF目录,建立web.xml配置文件,内容如下:
welcome.html
不需要重启tomcat,然后访问网址:http://localhost/myweb/
此时没有指定要访问的资源名称,便会默认访问welcome.html网页。
context代表虚拟主机host上运行的单个web应用,通过配置context元素可以灵活的发布web应用。context可以在很多地方配置,但是tomcat会以一定顺序的查找该元素,如果找到就使用该元素不会继续查下去。因此不同地方的context元素有优先级。查找顺序如下:
由于我没有具体测试过,因此不过多讲述,知道有这么一回事就行了。
tomcat中是可以热部署web应用的,需要部署web应用时,比如,直接放入webapps目录中即可,不必重启tomcat。因此可以直接在webapps下修改web.xml、jsp文件,tomcat会自动扫描是否被修改过,必要时会重新加载web.xml、重新编译jsp文件。但是如果修改server.xml需要tomcat重启,这个和热部署没有什么关系,热部署是热拔插类的,这里只是提醒下而已。貌似修改其他地方的context元素tomcat会检测到?没有测试过。。
这是很重要的内容,但是以后补充
实际开发中会在eclipse中集成tomcat开发web应用,由于网上教程很多,这里不会讲解。这里单独列出,是因为当年自学时不知道web应用的开发过程,,,不知道如何学起,因此强调一下。。
《java web程序开发入门》 传智博客高教产品研发部
《tomcat与java web开发技术详解》 孙卫琴
https://blog.csdn.net/jdbdh/article/details/81056237
Java Web App Directory Layout