Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是7.0。
WEB应用的相关知识
Web应用程序简介
应用程序:指允许用户执行特定任务的软件程序,主要分为桌面应用程序和Web应用程序两种类型。
桌面应用程序(Desktop Application):
- 一般是指采用客户机/服务器结构(Client/Server)的应用程序。
- C/S模式将应用与服务分离,系统具有稳定性和灵活性
- C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性
- 由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快
- 在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂
Web应用程序(Web Application):
- Web应用程序一般是指采用浏览器和服务器结构(Browser/Server,简称B/S结构)的应用程序。
- Web应用程序由Web服务器和Web客户端组成。
- Web服务器:Web服务器上装有某个应用程序,这个Web服务器应用程序负责接收客户请求进行处理,向客户返回结果
- Web客户端:允许用户请求服务器上的某个资源,并且向客户端返回结果。Web应用程序的客户端一般是指Web浏览器。Web浏览器就是一个软件,它知道怎么与服务器通信,它还有一个重要任务,就是解释HTML代码,把Web页面呈现给用户
Web应用程序完整的“请求-响应”流程
B/S模式的优点:
- 易于维护:基于B/S模型的系统当需要升级或维护时,只需修改服务器程序即可。
- 易于实现。B/S模型的表现层可以用制作网页的html来实现,浏览器和网页设计技术已经相当成熟。而且用Java技术开发的Web系统可以安装在任意一种服务器系统平台上,也就是常说的具有跨平台性。
- 使用方便,无论客户在什么地方,只要服务器正在运行,客户就能通过网络进行连接,实现对数据的访问和操作。
HTTP协议
URL:UniformResource Locator(统一资源定位符)
例如,http://www.it315.org:80/java/index.html
主要的WEB服务器软件
IIS 、Apache 、Tomcat
安装Tomcat
Tomcat官方站点:http://tomcat.apache.org/
从官网上下载压缩包直接解压(放的非中文,空格的目录下)即可
Tomcat 的启动与停止
双击 bin 目录下的 startup.bat 文件
输入 http://localhost:8080/,显示如下界面代表安装成功
常见启动问题
JAVA_HOME环境变量
在windows中设置JAVA_HOME环境变量
只要在setclasspath.bat批处理文件第一次使用JAVA_HOME环境变量之前的任何地方,将JAVA_HOME环境变量设置为JDK的主目录,就可以使用startup.bat文件启动Tomcat了。
端口占用问题 :netstat -na命令和fport工具(可以查看有哪些网络端口号被监听)
配置WEB站点的虚拟目录
1.虚拟web目录的映射概念和原理:
概念:
如果想要让某台计算机的一个目录内容,能被外面的浏览器通过http协议访问,则步骤如下:
- 首先要在这台计算机上安装和启动一个web服务器软件
- 其次还要将该目录映射成一个web站点目录。这个web站点目录通常称为虚拟目录。
- 一个web站点上只能有一个虚拟目录的根目录,其他的虚拟目录都必须是该目录的子目录。
- 一般根目录用“/”符号表示,根目录和该根目录下的子目录或资源文件也以“/”符号进行分割。
原理的注意事项:
- 一个文件系统目录可以被映射为多个虚拟web目录
- 虚拟Web子目录名称可以是多级目录结构的形式
- Tomcat按照最长路径匹配原则处理请求的URL
2.设置web站点的目录:
(1)设置WEB站点的虚拟根目录
1.在tomcat\webapps\ROOT中只要直接导入一个html文档就可以直接访问
2.在server中用<Host></Host>标签中设置<Context></Context>标签也可以设置根目录
绝对路径:<Contextpath=”” docBase=”e:/myweb” Debug=”0”/>
相对路径:<Contextpath=”” docBase=”.” Debug=”0”/>
注:一个host为一个web站点,在host中有一个appBase=“webapps”是基准路径,而相对的路径是基准与基准路径说的,即把webapps设为虚拟的根目录,但一般不改变根。在写标签的时候记住要加尾标签 /
(2)设置web站点的虚拟子目录:
第一种:在server中添加
<Context path=”/book”docBase=”e:\test” Debug=”0”/>
注:debug的功能不是必须的,它显示的是在后台输出的多少,0表示少, 1表示多
第二种:在webapps下设置的文件夹里的html就可被自动当成是虚拟的子目录
第三种:把想要发布的html文档达成包,可以对其包进行访问
(1)对压缩包设置虚拟的子目录第一种
在server中设置 <Context path=”/student”docBase=”e:\myweb.war”/>
访问时:http://localhost:8080/student/1-1-2.html
注:解压缩war的压缩之后,执行时自动的把压缩的文件压缩到webapps下
(2)对压缩包设置虚拟的子目录第二种
直接把压包拷贝到webapps下就可以,但要注意在访问时的虚拟的子目录是和压缩的名字是一样的,所有要注意路径。
注意:打包时的命令:jar命令是用来打包的(cd myweb)
jar cvf myweb(压缩的文件名).war .(当前目录下的所有文件)
3.部署描述符和目录的默认网页
(1)部署描述符
部署描述符是web.xml,并且存在两个地方
一个是在Tomcat/conf/web.xml下(因为在这里面的xml是共有的)
一个是在每一个应用程序虚拟子目录写WEB_INF/web.xml
(2)默认网页的设置:
第一种:在conf中的web.xml中的最下面有<welcome-file-list>这个标签里是默认的文件
在虚拟的子目录下拷贝一个名为index的html文件,在运行的时候直接在路径下打虚拟的目录就可以访问,就是因为有web.xml默认的文件
第二种:在虚拟的目录中自己建一个Web.xml,web.xml是在WEB_FIN文件夹下
配置虚拟主机
基于主机名的虚拟主机
(1)浏览器访问web资源的过程-------------就是在地址栏上输入路径的过程:
格式:http://IP地址(或主机名):端口号/目录名称/网页文件名称
举例: http://www.csdn.net/book/java.html
(2)虚拟主机及实现原理:
- 目的:在一台计算机上创建多个WEB站点,并为每个WEB站点设置不同的主目录和虚拟子目录,每个WEB站点作为各自独立的网站分配给不同的公司或部门。
- 好处:多个公司或部门的网站就可以共用同一台计算机,而用户感觉每个公司和部门都有各自独立的网站。多个没有实力在Internet上架设自己专用服务器的中小公司可以联合租用一台WEB服务器,对外提供各自的WEB服务而互不影响。
原理:
- WEB服务器上的每个WEB站点必须设置有不同的标识信息
- WEB浏览器发出的连接和请求信息中包含WEB站点的标识信息
WEB站点的标识信息:
IP地址、端口号、主机名
详细的实现过程
(1)两个站点:
- 主机名:site1http://site1:8080/index.html
- 主机名:site2http://site2:8080/index.html
基于主机名的虚拟主机的设置:
- Connector 连接器监听客户端发来的请求
- Engine 引擎标签用来处理客户请求的,接收连接器的请求并处理完之后返回给连接器
- 在Engine中有 Host虚拟主机,一个web站点
(2)在server中加一对Host标签,因为有两个站点
<Host name=”site1”appBase=”e:virtudlHost1”> <Context path=”” docBase=”.” > </Host> <Host name=”site2”appBase=”e:virtudlHost2”> <Context path=””docBase=”.” > </Host>
(3)http://sitel:8080/test1.html不能访问,因为sitel是域名,在提交请求时必须先添加域名,根据以下路径添加域名
c:\WINDOWS\system32\drivers\hosts添加域名
127.0.0.1 site1
127.0.0.1 site2
(4)http://sitel:8080/test1.html可正确访问
基于端口号的虚拟主机
(1)创建两个站点:
web站点:8080
web站点:8081
提交请求:http://localhost:8080/index.html
提交请求:http://localhost:8080/index.html
(2)在server中配置:在</Service>后创建多个<Service>标签
<Service name="Tomcat_second"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> <Engine name="Catalina"defaultHost="localhost"> <Host name="site2"appBase="E:\virtudlHost2"> <Context path=""docBase="."/> </Host> </Engine> </Service>