一、常见web服务器种类
Web服务器根据对javaEE支持的能力分为两大类:
1、 JavaEE服务器(应用服务器)
1) IBM公司 WebSphere
2) BEA公司 WebLogic
3) JBoss 公司 JBoss
4) Apache组织 Geronimo(免费WebSphere社区版)
2、 Web容器(servlet/jsp容器)只支持JAVAEE的部分技术
1) Apache组织 Tomcat
2) Webtide 公司 Jetty
二、 Tomcat背景
自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet, 这样Tomcat就诞生了。Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。
三、 Tomcat版本与对应的其他版本之间的对应关系:
不同的版本之间的兼容性不同一般会遇到的问题:
- tomcat无法识别项目
- 导入源码会无法识别
- 项目发布启动报错
Tomcat | JDK | JavaEE | Servlet | JSP |
9.X | 8及以上 | JavaEE8 | 4.0 | 2.4? |
8.x | 7及以上 | JavaEE7 | 3.1 | 2.3 |
7.x | 6及以上 | JavaEE6 | 3.0 | 2.2 |
6.x | 5及以上 | JavaEE5 | 2.5 | 2.1 |
5.x | 1.4及以上 | JavaEE1.4 | 2.4 | 2.0 |
4.x | 1.3及以上 | JavaEE1.3 | 2.3 | 1.2 |
3.x | 1.1及以上 | JavaEE1.3 | 2.2 | 1.1 |
四、Tomcat目录结构
1.bin---->这个目录只要是存放了一些bat文件或者sh文件。比如说我们需要启动tomcat的bat就在这个目录下
启动tomcat的方式:
1).点击 startup.bat可以启动tomcat
2).在黑窗口下运行 catalina.bat 后面需要跟命令:start启动 stop关闭
3).关闭容器 shutdonw.bat或者是直接关闭黑窗口。
2.conf--->这个目录中存放的都是一些配置文件 xml
3.lib---->这个目录中存放的是一些jar文件。
这里的jar文件重要有两大类:
1)tomcat自身的jar,
2)实现javaEE平台下部分标准的实现类(比如:jsp servlet...)
4.log---->存放的都是tomcat的日志文件。如果我们想了解黑窗口在启动时的打印信息,可以进到这个目录下
找到cataline.log文件在这个文件中可以看到相关记录。
5.temp---->在这个目录中存放的是tomcat在运行时所产生的一些临时文件。这些文件是否存在并不影响 tomcat的运行,所以这个目录下的内容可以被删除掉。但是:temp文件夹不能删。
6.webapps---->这个目录主要是存放需要让tomcat去管理的资源的目录。
7.work---->这个目录主要存放的是tomcat对jsp编译完后得原文件以及class文件。
8.doc:存放Tomcat文档;
五、Server.xml配置文件简介
server: 1、port 指定一个端口,这个端口负责监听关闭tomcat的请求
2、shutdown 指定向端口发送的命令字符串
service: 1、name 指定service的名字
Connector (表示客户端和service之间的连接):
1、port 指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
2、minProcessors 服务器启动时创建的处理请求的线程数
3、maxProcessors 最大可以创建的处理请求的线程数
4、enableLookups 如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
5、redirectPort 指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
6、acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
7、connectionTimeout 指定超时的时间数(以毫秒为单位)
Engine(表示指定service中的请求处理机,接收和处理来自Connector的请求):
1、defaultHost 指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context (表示一个web应用程序):
1、docBase 应用程序的路径或者是WAR文件存放的路径
2、path 表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
3、reloadable 这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序
host (表示一个虚拟主机):
1、name 指定主机名
2、appBase 应用程序基本目录,即存放应用程序的目录
3、unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Logger (表示日志,调试和错误信息):
1、className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
2、prefix 指定log文件的前缀
3、suffix 指定log文件的后缀
4、timestamp 如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt
Realm (表示存放用户名,密码及role的数据库):
1、className 指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口
Valve (功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样):
1、className 指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息
directory(指定log文件存放的位置):
1、pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多
Tomcat的可视化界面管理
用户配置
在进行具体Tomcat管理之前,先给tomcat添加一个用户,使这个用户有权限来进行管理。
打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:
<user name="user"password="user" roles="standard,manager"/>
然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。
六、关于tomcat的部署项目的方式:
- 静态部署
tomcat部署项目三种方式:
1.放到webapps目录下:
直接将web项目文件件拷贝到webapps 目录中
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将web项目打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。具体如何打包,可以使用许多开发工具的IDE环境,如Eclipse等。也可以用 cmd 命令:jar -cvf mywar.war myweb
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
将appBase修改即可。
2.修改server.xm 的host节点。添加<Context path="/访问资源目录" docBase="e:/xxx"/>
在server.xml中指定。在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个web应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。
在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
<Context path="/hello" docBase="D:\ workspace\hello\WebRoot" debug="0" privileged="true">
</Context>
或者
<Context path="/myapp" reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>
或者
<Context path="/sms4" docBase="D:\workspace\sms4\WebRoot"/>
说明:
path是虚拟路径;
docBase 是应用程序的物理路径;
workDir 是这个应用的工作目录,存放运行时生成的与这个应用相关的文件;
debug 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged设置为true的时候,才允许Tomcat的Web应用使用容器内的Servlet
reloadable 如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重起tomcat的情况下改变应用程序,实现热部署
antiResourceLocking 和antiJARLocking 热部署是需要配置的参数,默认false避免更新了某个webapp,有时候Tomcat并不能把旧的webapp完全删除,通常会留下WEB-INF/lib下的某个jar包,必须关闭Tomcat才能删除,这就导致自动部署失败。设置为true,Tomcat在运行对应的webapp时,会把相应的源文件和jar文件复制到一个临时目录里。
3.在conf目录下找到或者是新建文件夹(Catalina---->localhost----->访问资源的 xml-----><Context....../>)
创建一个Context文件在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字不可以随意取,要和path后的那个名字一致,按照下边这个path的配置,xml的名字应该就应该是hello(hello.xml),该xml文件的内容为:
<Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true"></Context>
2、动态部署也称之为热部署
2.1 登陆tomcat管理控制台:http://localhost:8080/ ,输入用户名和密码后便可管理应用并动态发布。
在Context Path(option):中输入/yourwebname ,这代表你的应用的访问地址。
XML Configration file URL中要指定一个xml文件,比如我们在F:\下建立一个hmcx.xml文件,内容如下: 其中docBase不用写了,因为在下一个文本框中填入。或者更简单点,这个文本框什么都不填,在WAR or Directory URL:中键入F:\hmcx即可,然后点击Deploy按钮,上面就可以看到了web应用程序,名字就Context Path(option):中的名字。
2.2 如果部署.war文件还有更加简单的方式,下面还有个Select WAR file uploae点击浏览选择.war文件,然后点击Deploy即可。