tomcat服务器
一、常用的web服务器
*Tomcat:Apache的产品,它是一个开源免费的web服务器。
*JBoss(Redhat红帽):支持JavaEE,应用比较广;EJB容器
* GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;
* Resin(Caucho):支持JavaEE,应用越来越广;
* Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
* Websphere(IBM):要钱的!支持JavaEE,适合大型项目;
web项目开发好之后,需要发布(部署)到一台服务器上,然后外界才能访问。
二、tomcat目录结构
bin:二进制文件存放的目录,启动文件,停止文件等。
conf:保存的tomcat服务器中的所有配置文件。
-
server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;
-
tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。
-
web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
-
context.xml:对所有应用的统一配置,通常我们不会去配置它。
lib:tomcat运行javaee程序需要依赖的那些jar包。
logs:tomcat运行的时候的日志信息。
temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
server.xml详讲
(1)配置外部应用
原来我们的项目放到webapps下,现在我放到外面,也希望tomcat可以找到它!
第一种方式:conf/server.xml:打开server.xml文件,找到<Host>元素,在其中添加<Context>元素,代码如下:
server.xml![](https://img2018.cnblogs.com/blog/1566539/201908/1566539-20190804223401799-2124700809.png)
![](https://img2018.cnblogs.com/blog/1566539/201908/1566539-20190804223401799-2124700809.png)
-
path:指定当前应用的名称;
-
docBase:指定应用的物理位置;
-
浏览器访问路径:。
第二种方式:conf/catalana/localhost:在该目录下创建itcast_hello.xml文件,在该文件中编写<Context>元素,代码如下:
![](https://img2018.cnblogs.com/blog/1566539/201908/1566539-20190804223552976-2046059401.png)
-
文件名:指定当前应用的名称;
-
docBase:指定应用的物理位置;
(2)理解server.xml
-
<Server>:根元素,表示整个服务器的配置信息;
-
<Service>:<Server>的子元素,在<Server>中只能有一个<Service>元素,它表示服务;
-
<Connector>:<Service>的子元素,在<Service>中可以有N个<Connector>元素,它表示连接。
-
<Engine>:<Service>的子元素,在<Service>中只能有一<Engine>元素,该元素表示引擎,它是<Service>组件的核心。
-
<Host>:<Engine>的子元素,在<Engine>中可以有N个<Host>元素,每个<Host>元素表示一个虚拟主机。所谓虚拟主机就像是真的主机一样,每个主机都有自己的主机名和项目目录。例如<Host name=”localhost” appBase=”webapps”>表示主机名为localhost,这个主机的项目存放在webapps目录中。访问这个项目下的主机时,需要使用localhost主机名,项目都存放在webapps目录下。
-
<Context>:<Host>元素的子元素,在<Host>中可以有N个<Context>元素,每个<Context>元素表示一个应用。如果应用在<Host>的appBase指定的目录下,那么可以不配置<Context>元素,如果是外部应用,那么就必须配置<Context>。如果要为应用指定资源,也需要配置<Context>元素。
用户发出一个请求:http://localhost:8080/hello/index.jsp。发现是http/1.1协议,而且还是8080端口,所以就交给了处理这一请求的“服务员(处理HTTP请求的<Connector>)”,“服务员”再把请求交给了“后厨(<Engine>)”,因为请求是要一盘水煮鱼,所以由“川菜区(<Host>)”负责,因为“大老王师傅<Context>”做水煮鱼最地道,所以由它完成。
-
<Connector>:关心请求中的http、和8080;
-
< Host>:关心localhost;
-
<Context>:关心hello
(3)映射虚拟主机
我们的目标是,在浏览器中输出:http://www.itcast.cn就可以访问我们的项目。
完成这一目标,我们需要做三件事:
-
修改端口号为80,这一点应该没有问题吧;
-
在本机上可以解析域名为127.0.0.1,这需要修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加对http://www.itcast.cn和127.0.01的绑定关系;
-
在server.xml文件中添加一个<Host>(主机)。
-
修改端口号为80
-
绑定http://www.itcast.cn和127.0.01的绑定关系
-
server.xml文件中添加一个<Host>
-
name=”www.itcast.cn”:指定虚拟主机名为www.itcast.cn;
-
appBase=”F:/itcastapps”:指定当前虚拟主机的应用程序存放目录为F:/itcastapps。
-
在itcastapps目录下创建名为ROOT的应用,因为一个主机只可以有一个名为ROOT的应用,名为ROOT的应用在浏览器中访问是可以不给出应用名称。
现在访问:http://www.itcast.cn看看是什么页面!
请注意,只有本机可以通过http://www.itcast.cn来访问,而其他电脑不可以!
三、tomcat部署项目的三种方式
3.1 直接将web项目文件件拷贝到webapps目录中
(1)将编写并编译好的web项目(注意要是编译好的,如果是 eclipse,可以将项目打成 war 包放入),放入到 webapps 中
(2)启动服务器
(3) 在浏览器输入:http://localhost:8080/项目名/访问的文件名
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。如果你想要修改这个默认目录,可以在conf下的server.xml文件里修改Host标签里的appBase值。
这个方法实际上和在IDE开发环境里部署项目是一样的。
3.2修改 conf/server.xml 文件
打开tomcat下conf/server.xml,在<Host> </Host>标签之间输入项目配置信息
<Context path="/WebProject" docBase="D:/WebProject" reloadable="true" />
path:浏览器访问时的路径名
docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。其实也就是编译后的项目
reloadble:设定项目有改动时,tomcat是否重新加载该项目
②、双击 startup.bat,启动 tomcat 服务器,然后在浏览器输入访问的项目名称路径
3.3 在confCatalinalocalhost 目录下添加xml配置文件
新建名为jfinal_demo.xml文件,文件内容配置如下:
<Context path="/jfinal_demo" docBase="F:workjfinal_demoWebRoot" reloadable ="true" debug="0" privileged="true">
</Context>
Catalinalocalhost目录tomcat下载下来默认是没有的,首次启动会自动创建,也可以手动创建;
配置中可以去掉path属性,因为访问项目时的根路径只取决于XML文件的名称,如上述例子中,访问该应用程序地址如下:http://localhost:8080/jfinal_demo ;
推荐使用第三种方式,因为不需要修改tomcat默认配置,对Tomcat的侵入性最小,并且如果想取消部署,直接删除xml配置文件即可。
以上几种方法都经过本人测试,除此之外还有Tomcat热部署的方式 。
总结:
①、第一种方法比较普通,但是我们需要将编译好的项目重新 copy 到 webapps 目录下,多出了两步操作
②、第二种方法直接在 server.xml 文件中配置,但是从 tomcat5.0版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目
③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。
通常我们使用第三种方法
4、常见的问题
访问html页面404 查看war包下是否有该页面