赞
踩
服务器分为JavaEE应用服务器和web容器(也就是web服务器。)
那么这两种服务器有什么区别呢?
JavaEE应用服务器是Java EE 规范的具体实现, 可以执行/驱动基于 JavaEE 平台开发的 web 项目。绝大部分的应用服务器都是付费产品
web服务器:只实现了 JavaEE 平台下部分技术标准,如 Servlet,Jsp,JNDI,JavaMail。Web 容器是开源免费的。而Tomcat就是一种免费的Web服务器
Tomcat 的配置文件由 4 个 xml 组成,分别是 context.xml、web.xml、server.xml、tomcat-users.xml。每个文件都有自己的功能与配置方法。下面来一一介绍:
Tomcat 默认监听端口为 8080。可以通过修改server.xml 文件来改变 Tomcat 的监听端口
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
//修改的地方就是8080
Tomcat中有很多角色,每个角色拥有特定的权限,我们可以创建某个角色,之后将用户设定为某个角色,就可以操作Tomcat的某些功能,一个用户可以分配多个角色
角色分类:
manager-gui 角色:允许访问 HTML GUI 和状态页面
manager-script 角色: 允许访问文本界面和状态页面
manager-jmx 角色:允许访问 JMX 代理和状态页面
manager- status角色:仅允许访问状态页面
为用户添加角色
在config文件夹下的tomcat-users.xml文件下配置
在倒数第二行添加
,如果想添加多个角色,只需要在role引号中”admin-gui,角色名称“
tomcat是一个可以处理请求并产生相应的应用程序,他的本质上是一个应用程序,他实现了JavaEE平台下的一些规范,所以我们可以在tomcat上运行我们编写的Servlet和Jsp
上图可以分为三个部分:客户端、tomcat服务器、数据库
客户端:可以基于某种网络协议发送请求的都可以作为客户端
tomcat服务器:有三个功能:web服务器、js容器、servlet容器(tomcat中的容器也可以称作引擎,引擎的作用:根据请求的资源,来找到(解析)资源所对应的jsp或者servlet,来把他做一个执行;web服务器的作用:监听请求端口,)
一次请求和一次响应的处理过程:客户端发送请求数据包,web服务器监听到客户端发送过来的请求数据包,他将请求数据包转发给引擎,引擎拿到请求之后,引擎会对拿到请求数据包的一个解析,并把解析的结构放到一个httpservletRequest对象中,然后根据请求行中的资源去找到所对应的jsp或servlet进行一个执行,执行完之后,会将结果返回给一个Java对象,Java对象再返回给web服务器,web服务器会返回给客户端
上图分为两个部分:客户端(左侧)和tomcat服务器(右侧)
<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> </Host> <Host name="www.wjh.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/wh" docBase="D:\demo"/> </Host> </Engine> </Service> </Server>
各个组件的作用(可以先简单的了解,之后会有更深的认识)
- Server组件
启动一个Server实例(即一个jvm),Sever实例也就是tomcat实例,(Servle采用单进程多线程的方式来运行,单进程指的就是tomcat服务器)启动tomcat服务器,它会监听 8005 端口以接收 shutdown 命令。Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个 Server 实例,必须配置它们使用不同的端口。
- Service组件
Service 主要用于关联一个引擎和与此引擎相关的连接器(指的就是上文所说的web服务器),每个连接器通过一个特定的端口和协议接收请求并将其转发至关联的引擎进行处理。因此,Service 要包含一个引擎一个或多个连接器。
- Connector组件
支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。默认只开启了处理 Http 协议的连接器。如果需要使用其他协议,需要在 Tomcat 中配置该协议的连接器。
- Engine组件
Engine 是 Servlet 处理器的一个实例,即 servlet 引擎,定义在 server.xml 中的 Service 标记中。Engine 需要 defaultHost 属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的 host 组件
- Host组件
位于 Engine 容器中用于接收请求并进行相应处理的虚拟主机。通过该容器可以运行Servlet 或者 JSP 来处理请求
- Context组件
Context是Host的子标签,代表指定一个Web应用,它运行在某个指定的虚拟主机(Host)上;每个 Web 应用都是一个 WAR 文件,或文件的目录
1、用户访问 localhost:8080/test/index.jsp,请求被发送到 Tomcat,被监听 8080 端口并处理 HTTP/1.1 协议的 Connector 获得。
2、Connector 把该请求交给它所在的 Service 的 Engine 来处理,并等待 Engine 的回应。
3、Engine 获得请求 localhost/test/index.jsp,匹配所有的虚拟主机 Host。
4、Engine 匹配到名为 localhost 的 Host 虚拟主机来处理/test/index.jsp 请求(即使匹配不到会请求交给默认 Host 处理),Host 会根据/test 匹配它所拥有的所有的 Context。
5、匹配到的 Context 获得请求/index.jsp。
6、构造 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet的 doGet()或 doPost()执行业务逻辑、数据存储等程序。
7、Context 把执行完之后的结果通过 HttpServletResponse 对象返回给 Host。
8、Host 把 HttpServletResponse 返回给 Engine。
9、Engine 把 HttpServletResponse 对象返回 Connector。
10、Connector 把 HttpServletResponse 对象返回给客户 Browser。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。