Web服务器之Tomcat的相关说明(Web访问中的角色与协议问题和JavaWeb项目的程序结构问题)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web服务器之Tomcat的相关说明(Web访问中的角色与协议问题和JavaWeb项目的程序结构问题)相关的知识,希望对你有一定的参考价值。
1、C/S架构和B/S架构的概念:
a、C/S架构:
- C/S,Client/Server,客户端/服务器,客户端需要安装专用的客户端软件。客户端是针对某以具体业务专门开发的软件。
- 由于客户端是专用的软件,所以客户端程序一般也具有对具体业务进行处理的能力。从而减轻对服务端的处理压力,使得服务端的运算速度更快,对客户端的响应更快。
- 也正是由于客户端是需要专门安装的专用软件,所以导致C/S架构的系统也出现了致命的问题:版本升级成本异常地高。无论是由于客户端软件本身功能的升级,或者是由于服务端的升级导致客户端也必须进行升级,无论什么原因导致客户端需要升级,每一个客户端机器上都必须先获取到新版本软件,再将老版本进行卸载替换。C/S架构系统的每一次客户端升级,都需要企业为之付出人力、物力和财力上的成本代价。
b、B/S架构:
- B/S,Browser/Server,浏览器/服务器。B/S架构,其实也是一种特殊的C/S架构,只不过,这个Client特指的是浏览器。
- 对于B/S架构的系统,需要客户端安装有浏览器,那么客户端就可以访问服务器。而整个系统的升级,只需要升级服务器端程序即可。所以,B/S架构的系统最大的优点就是不存在客户端升级问题。
- 由于客户端不是专门针对某一具体业务而设计,是一个通用的客户端,所以客户端几乎没有任何对具体业务进行处理运算的能力。而对于具体业务的处理压力,全部加在了服务端,从而导致服务器程序运算速度降低,对客户端的响应速度降低,影响了客户体验。
- 另外,B/S架构系统还存在一个问题:浏览器兼容问题。虽然客户端只需要一个浏览器即可访问服务端,但由于现在浏览器品牌、版本很多,而其实现技术千差万别,所以导致服务端需要想办法兼容各种浏览器版本。这无形中又增加了服务器端的压力。
2、Web访问中的角色与协议:
- Web访问中的角色与协议示意图:(角色有4个,浏览器,Web服务器,服务器端程序和DB;协议有3个,HTTP协议,Servlet协议,JDBC协议。)
- 所谓协议,即是规范、规则,是通信双方事先的约定。
- HTTP协议要求,通行双方,即浏览器与服务器双方,都需要按照指定的格式发出请求与响应。对方按照协议,即事先的约定,对对方发送来的信息进行解析。
- Servlet协议要求,若程序员要开发完成某一个具体业务的服务端程序,则必须实现Servlet接口,使用ServletAPI进行数据传递。
- JDBC协议要求,服务器端程序若要连接并操作数据库,则需要按照JDBC协议中的规定的方式(接口方法)获取DB连接,进行SQL的执行、进行结果的获取。而JDBC协议(接口)的实现,均由数据库厂商来完成。放于数据库厂商提供的数据库驱动jar包即可。所以,我们连接不同的数据库,就需要导入不同的数据库驱动jar包。
- 此外,还有JavaEE协议:Servlet协议是JavaEE协议里的一部分。JavaEE协议即进行JavaWeb开发的一套API,除了包含Servlet协议外,JSTL协议、JPA协议等。目前使用较多的版本是JavaEE5.0。JavaEE5.0包含的是Servlet2.5协议。JavaEE6.0包含的是Servlet3.0协议。而Servlet2.5与Servlet3.0版本的一个很大的区别在于:Servlet3.0支持对Servlet、Filter、Listener类的注解式开发。
3、Web服务器之Tomcat的相关说明:
a、Tomcat的简单认识:
- 实际应用中实现了JavaEE规范的Web浏览器有很多,如Oracle的WebLogic(需购买)、IBM的WebSphere(需购买)、RedHat公司的JBoss(不支持Servlet规范,开源免费)等,这些都称为重量级服务器。
- Apache的Tomcat(Apache软件基金会的一个开源项目,可以在其官网http://www.apache.org/中下载),只是JavaEE规范中Servlet/JSP规范的实现者(也包括EL和WebSocket协议 ),所以其实是一个轻量级的服务器,它是开源免费的。Tomcat也称之为Web容器,或者是Servlet容器,但是不能够称之为JavaEE容器。
- 官网中的Tomcat9.0安装包和源码包下载图片截取:
- 引申出的一个概念:JCP(官网为http://jcp.org),Java Community Process,Java审核社区,是一个开放的国际组织,主要负责规范、监督Java的发展,其他个人、企业、机构等制定的Java规范,必须通过JCP审核后,才能够被认定为Java规范,JCP的创始者为SUN公司。
b、Tomcat的安装与目录结构:
- Tomcat的安装,即将其解压缩包即可,无需向导式的安装过程。解压缩后可以对Tomcat的根目录更名。
c、Tomcat的运行环境配置:
- Tomcat安装完毕后,需要安装JDK或者JRE。对于Tomcat5以及以前版本,要求必须安装JDK,而对于Tomcat6及其之后版本可以只安装JRE而不需要安装JDK。
- 在安装JDK时配置系统环境变量JAVA_HOME,将其bin目录添加到path变量即可。(Tomcat不需要其他配置)
- 如果没有配置系统环境变量,则在命令行中会显示如下错误:
d、Tomcat的启动和访问:
- 在设置完前面的环境变量之后,Tomcat即可进行启动。
- 进入命令行窗口的Tomcat目录的bin目录下,执行startup.bat命令,即可看到Tomcat的启动过程。当然,也可以在Window窗口中,找到Tomcat目录的bin目录,直接双击startup.bat文件启动Tomcat。(shutdown.bat文件为关闭Tomcat)
- 可以通过在浏览器地址栏上键入localhost:8080来访问Tomcat。
4、JavaEE规范要求JavaWeb项目的程序结构是:
- 在当前应用所在目录中可以直接存放资源文件,如.html、.jpg等,也可以将其放入到子目录中访问。
- 若Web项目中包含Serlvet代码,则Servlet的字节码文件必须存放在当前应用所在子目录/WEB-INF/classes中。
- 在/WEB-INF/下可以包含web.xml配置文件,定义请求URI与所要访问的Serlvet间的映射关系、指定欢迎页面等。
- 在/WEB-INF下可以包含子目录lib,用于存放当前Web应用所使用的外部jar包。
- 在/WEB-INF/目录中的资源不能被浏览器直接访问。
- 如下所示:
--- 项目根目录
---html、jsp、js、css、jpg等资源文件
---子目录
---相关资源文件
---WEB-INF
---classes
---lib
---web.xml
---html、jsp等资源文件
5、解读server.xml文件:
- Tomcat服务器是由一系列可配置的组件构成,Tomcat的组件可以在<CALTALINA_HOME>(即Tomcat安装的根目录)/conf/server.xml文件中进行配置,每个Tomcat组件和server.xml文件中的一种配置元素向对应,下面就一些常用的元素做介绍:
a、<Server>元素:代表整个Catalina Servlet容器,它是Tomcat实例的顶层元素,可以包含一个或者多个<Service>元素。
b、<Service>元素--不同端口部署不同应用则复制多个Service。(包含一个<Engine>元素,以及一个或者多个<Connection>元素,这些<Connection>元素共享一个<Engine>元素。)
c、<Connector>元素:代表和客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果。
d、<Engine>元素--虚拟主机:每个<Service>元素只能包含一个<Engine>元素、<Engine>元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求。
e、<Host>元素:一个<Engine>元素中可以包含多个<Host>元素,每个<Host>元素定义了一个虚拟主机,它可以包含一个或者多个Web应用。
f、<Context>元素--同一端口部署多个应用则复制多个Context:每个 <Context>元素代表运行虚拟主机上的单个Web应用,一个<Host>元素中可以包含多个<Context>元素。
- 在tomcat中的server.xml元素详解:
6、Tomcat中的context.xml说明、Context标签讲解:
a、在tomcat5.5之前:Context体现在/conf/server.xml中的Host里的<Context>元素中,它由Context接口定义。每个<Context>元素代表了运行在虚拟主机上的单个Web应用。
- server.xml文件,如<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true"> 。
- path表示要创建的虚拟目录,它指定访问Web应用的上下文根,如http://localhost:8080/kaka/...;docBase:为应用程序的路径或者WAR文件存放的路径,可以是绝对路径,也可以是相对路径(相对路径是相对于<Host>)。
- reloadable:如果这个属性设置为true,Tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录class文件的改变,如果监视到有class文件被更新,服务器自动重新加载Web引用,这样我们可以在不重启tomcat的情况下改变应用程序。
- 一个Host元素中嵌套任意多个的Context元素。每个Context的路径必须是唯一的,由path属性定义。另外,你必须定义一个path=""的Context,这个Context称之为该虚拟主机的缺省web应用,用来处理那些不能够匹配任何Context的Context路径的请求。
b、在tomcat5.5之后:
- 不推荐在server.xml中进行配置,而是在/conf/context.xml中进行独立的配置。因为server.xml是不可动态重加载的资源,服务器一旦启动以后,要修改这个文件,就得重新启动服务器才能够重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变),就会自动重新加载这个文件,而不需要重启服务器。
- 如下所示:
<Context path="/kaka" docBase="kaka" debug="0" reloadbale="true" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/kaka.xml</WatchedResource> 监控资源文件,如果web.xml || kaka.xml改变了,则自动重新加载该应用。
<Resource name="jdbc/testSiteds" 表示指定的jdbc名称
auth="Container" 表示认证方式,一般为Container
type="javax.sql.DataSource"
maxActive="100" 连接池支持的最大连接数
maxIdle="30" 连接池中最多可空闲maxIdle个连接
maxWait="10000" 连接池中连接用完时,新的请求等待时间,毫秒
username="root" 表示数据库用户名
password="root" 表示数据库用户的密码
driverClassName="com.mysql.jdbc.Driver" 表示JDBC DRIVER
url="jdbc:mysql://localhost:3306/testSite" /> 表示数据库URL地址
</Context>
c、附录:context.xml的三个作用范围:
- tomcat server级别:在/conf/context.xml里配置。
- Host级别:在/conf/Catalina/${webAppName}.xml,继而进行配置。
- web app级别:在/conf/Catalina/$(hostName}里添加${webAppName}.xml,继而进行配置。
本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1972421
以上是关于Web服务器之Tomcat的相关说明(Web访问中的角色与协议问题和JavaWeb项目的程序结构问题)的主要内容,如果未能解决你的问题,请参考以下文章