Tomcat介绍
首先需要清楚几个基本概念:
- HTTP服务器,接受http请求,返回http响应,比如Apache,Nginx等。
- Web容器,Web容器是提供给JavaEE中各种技术运行的环境,其本身也是一个Java程序。Web容器与HTTP服务器运行在同一台实体服务器上,其主要作用是协调HTTP服务器,管理Servlet。
Tomcat就是一个Web容器,更准确的说是Servlet/JSP容器,为了开发过程中调试方便,Tomcat也具备处理HTTP请求的能力,因此它勉强也算得上是一个HTTP服务器,但是正如之前所说这仅仅是为了调试方便,真实部署项目时,需要专业级的HTTP服务器支持。
多说一句Tomcat,jetty这种Web容器只属于Servlet/JSP容器,而不属于JavaEE容器,因为Java容器中还有其他技术(EJB等),而Tomcat并未支持。与此类似,JBOSS属于EJB容器也不是JavaEE容器。比较有名的JavaEE容器,有WebLogic,WebSphere。
Tomcat目录结构
自行到官网上下载压缩包解压即可。注意,Tomcat6只支持Servlet2.5标准,而Tomcat7支持Servlet3.0。
tomcat运行是依赖jdk的,解压完成后添加操作系统的环境变量%JAVA_HOME%为jdk根目录即可。
- /bin,存放可执行文件。比较重要的startup和shutdown。以bat后缀的是windows系统中的,以sh后缀的是linux。
- /conf,配置文件。最重要的是server.xml。
- /lib,tomcat运行时依赖的库,比如servlet-api.jar,是运行servlet时必须用到的。
- /logs,日志文件。
- /temp,临时文件目录。
- /webapps,存放web应用程序的根目录,里面每一个一级子目录都代表一个独立的Web应用。
- /work,运行时生成文件目录,比如JSP编译后生成的文件。
Web应用的目录结构
- WebRoot/,项目根目录
- xxx.jsp,静态资源
- xxx.html,静态资源
- META-INF/
- WEN-INF/,文件名必须固定
- classes/,编译好的java类,实现业务逻辑
- lib/,应用依赖的第三方jar包
- web.xml,应用的配置
注意,WebRoot下的静态资源可以通过url直接访问,而WEB-INF下的资源不可以直接访问。
部署Web应用
直接部署
直接将项目根目录或者打包好的war包放到tomcat的webapps目录下,如下:
之后启动tomcat就可以通过url访问了。url形式为http://127.0.0.1/{ContextPath}/{PathInfo}。启动ContextPath对应应用根目录名,在这里为helloweb。PathInfo对应静态资源的路径或者配置的路径映射。
外部部署项目
项目的路径其实不一定要在webapps下,可以在任何位置。但是需要配置两个信息:
- 项目的ContextPath,tomcat需要将url中的ContextPath与应用一一对应。
- 项目的文件路径,既然不再webapps目录下,那一定要让tomcat知道文件在哪。
在servel.xml中配置
找到servel.xml文件:
打开servel.xml在Host标签下添加一个Context标签:
path属性对映ContextPath,docBase对映文件在磁盘上的路径。
单独创建配置文件
在{tomcat根目录}/conf/Catalina/localhost目录下创建一个配置文件:
打开配置文件做如下配置:
注意,docBase属性是空的,那么ContextPath是在哪配置的呢?答案是文件名hello.xml,此时ContextPath对应的就是文件名hello。