深度好文之Servlet技术详解(一)介绍 & Tomcat

深度好文之Servlet技术详解(一)介绍 & Tomcat,第1张

深度好文之Servlet技术详解(一)介绍 & Tomcat

目录

一.介绍

 二.Tomcat

1.Tomcat入门

三.Tomcat架构讲解


一.介绍 主要内容 JavaEE 简介 Servlet 简介 Tomcat 详解 Servlet 技术详解 学习目标

一、 JavaEE 简介 1 什么是 JavaEE JavaEE (Java Enterprise Edition ), Java 企业版,是一个用于企业级 web 开发平台。最早 由 Sun 公司定制并发布,后由 Oracle 负责维护。在 JavaEE 平台规范了在开发企业级 web 应 用中的技术标准。 在 JavaEE 平台共包含了 13 个技术规范(随着 JavaEE 版本的变化所包含的技术点的数量会有增多)。它们分别是:JDBC 、 JNDI 、 EJB 、 RMI 、 Servlet 、 JSP 、 XML 、 JMS 、 Java IDL 、 JPA 、 JTA 、 JavaMail 和 JAF 。 2 JavaEE 版本

二、 Servlet 简介 1 Web 开发历史回顾 1.1CGI 公共网关接口( Common Gateway Interface , CGI )是 Web 服务器运行时外部程序的规范。 

1.2CGI 缺点

以进程方式运行,对每一个客户端的请求都要启动一个进程来运行程序,导致用户数目增加时,服务器端资源被大量占用。由于对 *** 作系统和进程的不深刻理解,使得开发人员开发的 CGI 程序经常遇到莫名其妙的错误。 不同的 CGI 之间不能共享资源 1.3FastCGI FastCGI 是对 CGI 模式的一个改进,采用了 Pooling 技术,一定程度上改善了性能,但是由于仍然是基于进程运行的所以并没有从根本上解决问题。 

2 Servlet 介绍 Servlet 是 Server Applet 的简称,称为服务端小程序,是 JavaEE 平台下的技术标准,基于 Java 语言编写的服务端程序。 Web 容器或应用服务器实现了 Servlet 标准所以 Servlet 需 要运行在 Web 容器或应用服务器中。 Servlet 主要功能在于能够在服务器中执行并生成数据。 2.1Servlet 技术特点 Servlet 使用单进程 多线程方式 运行。

2.2Servlet 在应用程序中的位置

三、 服务器 1 JavaEE 应用服务器(JavaEE Application Server ) 应用服务器是 Java EE 规范的具体实现 , 可以执行 / 驱动基于 JavaEE 平台开发的 web 项目。绝大部分的应用服务器都是付费产品。 常见的应用服务:

Weblogic(BEA Oracle 收费) Webshpere(IBM 收费) JBoss(RedHad 收费)

Resin(Caucho 收费) JRun(Macromedia 收费) Geronimo(Apache 免费) 2 Web 容器( Web Server ) 只实现了 JavaEE 平台下部分技术标准,如 Servlet ,Jsp , JNDI , JavaMail 。 Web 容器是开 源免费的。

Tomcat(Apache 开源免费) Jetty(Jetty 开源免费)

 二.Tomcat 1.Tomcat入门

3.1Tomcat 下载与安装

3.1.1 下载 下载地址: http://tomcat.apache.org/ 主页左侧选择版本Download即可,版本后面 带有alpha的不要下载,因为这表明这是测试版,会有很多未知问题。 我用的版本是apache-tomcat-9.0.34 3.1.2 安装 Tomcat 是绿色软件,解压就可使用。 3.1.3 配置环境变量 Tomcat 是用 Java 语言开发的 Web 容器,所以在使用 Tomcat 时需要在 *** 作系统中正确配置环境变量(是系统环境变量,而不是用户变量)。 JAVA_HOME : C:Program FilesJavajdk1.8.0_171 (你的jdk路径) PATH : %JAVA_HOME%bin; CLASS_PATH : %JAVA_HOME%lib; 3.2Tomcat 目录结构与介绍 3.2.1 bin bin 目录主要是用来存放 tomcat 的命令文件,主要有两大类,一类是以 .sh 结尾的(linux 命令),另一类是以 .bat 结尾的( windows 命令)。 3.2.2 conf conf 目录主要是用来存放 tomcat 的一些配置文件。 3.2.3 lib lib 目录主要用来存放 tomcat 运行需要加载的 jar 包。 3.2.4 logs logs 目录用来存放 tomcat 在运行过程中产生的日志文件。 3.2.5 temp temp 目录用户存放 tomcat 在运行过程中产生的临时文件。(清空不会对 tomcat 运行带来影响) 3.2.6 webapps webapps 目录用来存放应用程序,当 tomcat 启动时会去加载 webapps 目录下的应用程序。可以以文件夹、 war 包的形式发布应用。 3.2.7 work work 目录用来存放 tomcat 在运行时的编译后文件,例如 JSP 编译后的文件。 3.3Tomcat 启动与关闭 Tomcat 的启动与关闭需要执行 bin 目录中的命令脚本。 3.3.1 Tomcat 启动 运行 startup.bat 文件。 bug解决:

Tomcat 启动闪黑屏

第一种方式 :
在配置系统环境变量中新建:
CATALINA_base,路径是自己tomcat的根路径地址
CATALINA_HOME路径同上
第二种方式:
检查JAVA_HOME里面的JDK地址是否与当前JDK位置一致

3.3.2 Tomcat 关闭 3.3.2.1 方式一 运行 shutdown.bat 文件。 3.3.2.2 方式二 直接关闭掉启动窗口。 3.3.3 访问 Tomcat 访问 Tomcat 的 URL 格式: http://ip:port 访问本机 Tomcat 的 URL 格式: http://localhost:8080

3.4Tomcat 的配置 3.4.1 Tomcat 配置文件介绍 Tomcat 的配置文件由 4 个 xml 组成,分别是 context.xml 、 web.xml 、 server.xml 、 tomcat-users.xml 。每个文件都有自己的功能与配置方法。 3.4.1.1 context.xml Context.xml 是 Tomcat 公用的环境配置。 Tomcat 服务器会定时去扫描这个文件。一 旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器 。 3.4.1.2 web.xml Web 应用程序描述文件,都是关于是 Web 应用程序的配置文件。所有 Web 应用的web.xml 文件的父文件。 这个web.xml 是全局的,如果项目中某些地方没有配置,则默认使用web.xml的配置。 3.4.1.3 server.xml 是 tomcat 服务器的核心配置文件,server.xml 的每一个元素都对应了 tomcat 中的一个 组件,通过对 xml 中元素的配置,实现对 tomcat 中的各个组件和端口的配置。 如修改Tomcat的默认端口,长连接时间等就用这个文件。

  

3.4.1.4 tomcat-users.xml 配置访问 Tomcat 的用户以及角色的配置文件。 3.4.2 解决控制台乱码 控制台产生乱码的原因是在 Tomcat 在输出日志中使用的是 UTF-8 编码,而我们中文的 Windows *** 作系统使用的是 GBK 编码。由于编码格式不统一,所以出现了乱码。 解决方式: 修改 conf 目录中的 logging.properties 文件重新指定的编码方式。 java.util.logging.ConsoleHandler.encoding = GBK 3.4.3 修改 Tomcat 监听端口 Tomcat 默认监听端口为 8080 。可以通过修改 server.xml 文件来改变 Tomcat 的监听端口。

将里面的8080修改即可,然后重启Tomcat就生效了。

3.4.4 配置 Tomcat Manager 3.4.4.1 什么是 Tomcat Manager Tomcat Manager 是 Tomcat 自带的、用于对 Tomcat 自身以及部署在 Tomcat 上的应用进 行管理的 web 应用。默认情况下, Tomcat Manager 是处于禁用状态的。准确的说, Tomcat Manager 需要以用户角色进行登录并授权才能使用相应的功能,不过 Tomcat 并没有配置任 何默认的用户,因此我们需要先进行用户配置后才能使用 Tomcat Manager 。 红框处就是 Tomcat Manager ,需要下面设置用户权限后方可使用。

3.4.4.2 配置 Tomcat Manager 的访问用户 Tomcat Manager 中没有默认用户,我们需要在 conf/ tomcat-users.xml 文件配置。 Tomcat Manager 的用户配置需要配置两个部分:角色配置、用户名及密码配置。 3.4.4.2.1 Tomcat Manager 中的角色分类 manager-gui 角色(使用较多): 允许访问 HTML GUI 和状态页面 (即 URL 路径为/manager/html/*) manager-script 角色(使用较多): 允许访问文本界面和状态页面 ( 即 URL 路径为 /manager/text/*) manager-jmx 角色: 允许访问 JMX 代理和状态页面 ( 即 URL 路径为 /manager/jmxproxy/*) manager- status 角色: 仅允许访问状态页面 ( 即 URL 路径为 /manager/status/*)

3.4.4.2.2 配置用户及角色    

也可以配置多个用户角色,如下写就行

4 Tomcat 版本说明 5 Tomcat 工作原理 5.1Tomcat 作用 Tomcat 是一个能够处理请求并产生响应的应用程序。 Tomcat 实现了 JavaEE 平台下的一些技术规范,所以我们可以在 Tomcat 中运行我们所编写的 Servlet 、 JSP 。 5.2Tomcat 运行原理

三.Tomcat架构讲解

6.1Tomcat 架构图

默认情况下Tomcat只支持HTTP协议

6.2Tomcat 组件 6.2.1 Server 组件 启动一个 server 实例(即一个 JVM ),即Tomcat实例,它监听在 8005 端口以接收 shutdown 命令。 Server 的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个 Server 实例,必 须配置它们使用不同的端口。 port: 接收 shutdown 指令的端口,默认为 8005 ; shutdown :发往此 Server 用于实现关闭 tomcat 实例的命令字符串,默认为 SHUTDOWN ;

6.2.2 Service 组件 Service 主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收请求并将其转发至关联的引擎进行处理。困此, Service 要包含一个引擎、 一个或多个连接器。 name :此服务的名称,默认为 Catalina ;

6.2.3 Connector 组件 支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。 默认只开启了处理 Http 协议的连接器。如果需要使用其他协议,需要在 Tomcat 中配置该协 议的连接器。 在 Tomcat 中连接器类型通常有 4 种: 1) HTTP 连接器 2) SSL 连接器 3) AJP 1.3 连接器 4) proxy 连接器 port :监听的端口 protocol :连接器使用的协议,默认为 HTTP/1.1; connectionTimeout :等待客户端发送请求的超时时间,单位为毫秒 ; redirectPort :如果某连接器支持的协议是 HTTP ,当接收客户端发来的 HTTPS 请求时,则转发至此属性定义的端口 ; maxThreads :支持的最大并发连接数,默认为 200 个 ;

6.2.4 Engine 组件 Engine 是 Servlet 处理器的一个实例,即 servlet 引擎,定义在 server.xml 中的 Service 标 记中。 Engine 需要 defaultHost 属性来为其定义一个接收所有发往非明确定义虚拟主机的请 求的 host 组件(既没有指定host时,就发往defaultHost )。 name : Engine 组件的名称 ; defaultHost : Tomcat 支持基于 FQDN(Fully Qualified Domain Name 全限定域名 ) 的虚拟主 机,这些虚拟主机可以通过在 Engine 容器中定义多个不同的 Host 组件来实现;但如果此引 擎的连接器收到一个发往非非明确定义虚拟主机的请求时则需要将此请求发往一个默认的 虚拟主机进行处理,因此,在 Engine 中定义的多个虚拟主机的主机名称中至少要有一个跟 defaultHost 定义的主机名称同名; Engine 和 Host 的关系: Engine 好比汽车的发动机,而Host 好比发动机里的活塞和缸体,也就是说Host 是 Engine中真正能处理请求并且能运行servlet的组件。

6.2.5 Host 组件 位于 Engine 容器中用于接收请求并进行相应处理的虚拟主机。通过该容器可以运行Servlet 或者 JSP 来处理请求。 name :虚拟主机的名称, Tomcat 通过在请求 URL 中的域名与 name 中的值匹配,用于 查找能够处理该请求的虚拟主机。如果未找到则交给在 Engine 中 defaultHost 指定的主机处 理; appbase :此 Host 的 webapps 目录,即指定存放 web 应用程序的目录的路径; autoDeploy :在 Tomcat 处于运行状态时放置于 appbase 目录中的应用程序文件是否自动进行 deploy ;默认为 true ; unpackWARs :在启用此 webapps 时是否对 WAR 格式的归档文件先进行展开;默认为true ;

6.2.6 Context 组件 Context 是 Host 的子标签,代表指定一个 Web 应用,它运行在某个指定的虚拟主机( Host )上;每个 Web 应用都是一个 WAR 文件,或文件的目录; path : context path 既浏览器访问项目的访问路径。 docbase : 相应的 Web 应用程序的存放位置;也可以使用相对路径,起始路径为此 Context所属 Host 中 appbase 定义的路径; 6.3Tomcat 处理请求过程 

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 。

7 在 Tomcat 中配置虚拟主机( Host ) 7.1 需求 创建 index.html 页面 将 index.html 资源部署到 d 盘的 demo 目录中。 通过 www.itbz.com:8888/itbz/index.html 访问虚拟主机,并访问 index.html index.html :

 

7.2 创建页面 创建 index.html 页面 7.3 修改 server.xml 添加 Host 配置 7.4 添加 Context 配置

5 修改 windows 的 Host 文件 修改 Windows 系统中的 Host 文件做域名与 IP 的绑定。 7.5.1 Host 文件位置 C:WindowsSystem32driversetc 7.5.2 修改内容 (在最后加上这句即可) 127.0.0.1 www.itbz.com

7.6 访问资源测试结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存