Tomcat àì夳堔傛蜴生んèń 2023-10-04 12:52 5阅读 0赞 ##### 9.Tomcat ##### ###### 9.1.web服务器 ###### * 服务器:安装了服务器软件的计算机 * 服务器软件:接收用户的请求,处理请求,做出响应 * web服务器软件:接收用户的请求,处理请求,做出响应。 * 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目 * web容器 * 常见的java相关的web服务器软件: * webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。 * webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。 * JBOSS:JBOSS公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。 * Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源的,免费的。 * JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范 ###### 9.2.Tomcat ###### ###### 9.2.1.下载安装 ###### 1. 下载:`http://tomcat.apache.org/` 2. 安装:解压压缩包即可。 * 注意:安装目录建议不要有中文和空格 3. 卸载:删除目录就行了 4. 启动: * bin/startup.bat ,双击运行该文件即可 * 访问:浏览器输入:`http://localhost:8080`回车访问自己 * http://别人的ip:8080 访问别人 5. 可能遇到的问题: * 黑窗口一闪而过: * 原因: 没有正确配置JAVA\_HOME环境变量 * 解决方案:正确配置JAVA\_HOME环境变量 * 启动报错: * 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程 * netstat -ano * 柔和:修改自身的端口号 * 找到文件conf/server.xml \`<Connector port=“8888” protocol=“HTTP/1.1” connectionTimeout="20000" redirectPort="8445" />` * 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。 * 好处:在访问时,就不用输入端口号 * 关闭: * 正常关闭: * bin/shutdown.bat * ctrl+c * 强制关闭: * 点击启动窗口的× ###### 9.2.2.配置环境 ###### * tomcat部署资源必须以一个应用为最小单位,如果希望部署一个资源文件,那么必须要将资源文件放置于某个应用内。 * 应用:tomcat里面的一个最小单位,应用里面可以存放很多的资源文件 * 新建一个应用:在webapps目录下新建一个目录,那么该目录就是一个应用,同时,目录的名称就是应用的名称。 * 部署项目的方式: 1. 直接部署:直接将所需要部署的资源放到webapps目录下的某一个应用里或新建一个应用并放入进去即可(最好避免直接放入webapps根目录)。 * 部署资源文件也可以部署一个war包(类似于windows里面的压缩包,tomcat回自动将其解压缩为一个开放式目录) * 访问方式:web服务器的本质,其实就是将本地硬盘上面的某个文件的绝对路径给拿到。 * 输入 `http://localhost:8080` ,相当于此时tomcat已经定位到了webapps目录下,访问静态资源只需要去写出和webapps的相对路径关系即可。 2. 虚拟映射:正常情况下,如果我们需要部署一个资源文件,我们是将该文件放置于tomcat的webapps目录下的,但是如果希望将资源文件放置于tomcat目录之外的其他地方,也可以访问到该资源文件,那么就需要通过虚拟映射的方式来部署,将该文件虚拟映射到webapps目录下。 * 方式一:在conf/Catalina/localhost目录下去配置 ,新增一个xml文件 * 如:在该目录下新增一个test.xml文件内容如下(前提条件是D盘目录下有一个app文件夹) <?xml version="1.0" encoding="UTF-8"?> <!-- 标准头文件 --> <Context docBase="D:\app"/> <!-- Context的首字母必须大写,表示应用,docBase里面的内容要写全路径名 --> * 在tomcat里面,最小的功能单位必须要求是应用,所以虚拟映射也需要有一个应用,tomcat会在启动的时候读取该xml文件,然后形成一个应用,应用的名称就是xml文件的名称(即该应用名是test)。 * 输入`http://localhost:8080/test` 到硬盘的绝对路径为D:/app目录,去访问到某个静态资源文件,继续写出相对路径关系即可。 * 方式二:conf/server.xml文件中去修改配置 * 需要在Host节点下配置一个Context节点,不过此时需要在server.xml文件中去配置 * 如:在Host节点下,配置一个应用名为temp的应用,且路径为资源路径为D:\\app <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- <Context/>使用最频繁的元素。代表了运行在虚拟主机上的单个Web应用。--> <!-- 不管什么方式部署配置的应用,启动的时候Tomcat都会将其解析加载成为一个Valve对象 --> <Context path="test" docBase="D:\app"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> * 访问方式同方式一 > 注:部署资源应该以应用为单位,即文件夹,而不是指定某个资源文件 ###### 9.3.Tomcat目录结构 ###### * bin:binary,二进制文件,启动停止Tomcat都在这个文件夹 * conf:配置文件 * lib:依赖资源库,jar包 * logs:日志文件,可以查看报错信息 * temp:临时文件存放 * webapps:应用资源 * work:工作目录 * 其他文件 > 将Tomcat集成到IDEA中,并且创建JavaEE的项目,部署项目。 ###### 9.4.Tomcat组成结构 ###### * Tomcat本身由一系列可配置的组件构成,其中核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器。每个组件都可以在Tomcat安装目录/conf/server.xml文件中进行配置,每个Tomcat组件在server.xml文件中对应一种配置元素。 * 在sever.xml中,每一个结点就相当于Tomcat的每一个组件 <?xml version="1.0" encoding="UTF-8"?> <!-- Server代表整个Sevlet容器组件,是最顶层的元素,可以包含一个或多个Sevice元素 --> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <!-- <Service>包含一个<Engine>元素以及一个或多个<Connector>元素,这些<Connector>共享同一个<Engine> --> <Service name="Catalina"> <!-- 监听8080端口,如果想实现多端口监听,再添加一个Connector结点即可 --> <!-- <Connector/>代表和客户程序实际交互的组件,负责接收客户请求,以及向客户返回响应 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- <Engine>每个<service>元素只能包含一个<Engine>元素。它处理在同一个<Service>中所有<Connector>接收到的客户请求。 --> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <!-- <Host>在一个<Engine>中可以包含多个<Host>,它代表一个虚拟主机(网站)它可以包含一个或多个 web应用 --> <!-- 同一个Tomcat可以处理多个域名的请求,只需继续添加Host结点即可 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- <Context/>使用最频繁的元素。代表了运行在虚拟主机上的单个Web应用。--> <!-- 不管什么方式部署配置的应用,启动的时候Tomcat都会将其解析加载成为一个Valve对象 --> <!-- 这里原始的Sever.xml文件没有<Context/>标签 --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server> ###### 9.5.Tomcat请求执行流程 ###### * 以访问`Http://localhost:8080/test/1.html`为例,阐述一下完整的请求执行流程 1. 浏览器内输入对应的网址,首先进行域名解析,tcp三次握手,浏览器会帮助我们去生成一个HTTP请求报文 2. HTTP请求报文到达目标服务器之后,被监听着8080端口号的Connector接收到,将请求报文解析成为request对象,同时还会生成一个response对象将这并将两个对象传给engine。 3. engine的职责也比较简单,如果由很多个host,那么就挑选一个合适的host;如果没有,则交给缺省的host 4. host的职责就是去挑选一个合适的Context,然后将请求、响应对象进行进一步下发(tomcat完全可以生成一个应用名-----应用的映射关系,根据/app找到对应的应用,找到应用以后就可以找到docBase) 5. Valve(Context)的职责就是根据应用的docBase + 最终的请求的资源,然后拼成一个绝对路径,new File.exitsts表示该文件存在,可不可以将文件的流写入到response中,如果不存在,可以往response里面写入一个不存在的状态码 6. Connector读取response里面的内容,按照HTTP响应报文的要求,重新组装生成响应报文,发送出去 ###### 9.6.sever.xml文件配置 ###### 1. 设置端口号 * tomcat下载完之后,默认监听8080端口号,如果希望修改端口号,那么去修改对应的Connector。有一个需要特别说明的,前1024端口号建议不要去设置,因为很有可能操作系统会用,但是80端口号例外,80端口号实际上是http协议的默认端口号,使用http协议,并且没有写端口号,实际上使用的就是80端口号,如 `http://localhost/app/1.html`。没有端口号不是说没有使用端口号,而是使用的当前协议的默认端口号80。 2. 设置缺省应用 * ROOT其实就是缺省应用,`http://localhost/app7/1.html`,此时tomcat中并没有去配置一个/app7的应用,此时它会交给缺省ROOT应用来处理,如果ROOT下也没有1.html资源,那么会返回404,相当于保底。访问ROOT应用下面的资源时,直接把应用名去掉即可。 `http://localhost/index.jsp` 访问的是webapps下的ROOT里的index.jsp资源 3. 设置默认访问页面 * 如果请求中没有指明具体的访问页面,如`http://localhost`,那实际上访问的时默认页面,缺省页面。这个是在tomcat的conf/web.xml中进行配置的 <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> * 实际上如果请求的url并没有指明访问的具体资源,那么就会在当前应用下去寻找这些welcome-file,如果找到,则加载,如果找不到则返回404
相关 tomcat 1. c/s: 客户端和服务端 : 例如QQ; 安全, 升级比较麻烦 b/s: 浏览器和服务端: 只需要编写服务端; 不安全 2. web资源介绍: 灰太狼/ 2022年06月14日 08:49/ 0 赞/ 67 阅读
相关 tomcat Tomcat 1.概述 通过上面的讲解大家对JSP与Servlet已经有所理解,最起码知道它们是做什么的,说到底它们都是程序设计语言,是帮助我们更好的编写程序。大家都知 缺乏、安全感/ 2022年06月11日 07:55/ 0 赞/ 409 阅读
相关 Tomcat Tomcat简介 WEB服务器与应用服务器的概念 WEB服务器:专门处理HTTP请求,提供WEB信息浏览服务。 应用服务器:可解析运行后台代码,为应用 客官°小女子只卖身不卖艺/ 2022年06月07日 03:07/ 0 赞/ 254 阅读
相关 Tomcat 1.基本调优 bin/catalina.sh 加一行 JAVA\_OPTS='-Xms128m -Xmx512m -XX:PermSize=128m' 2.设置脚本开机启 r囧r小猫/ 2022年05月31日 22:48/ 0 赞/ 210 阅读
相关 tomcat 一、安装Tomcat5.5.20 1、下载安装包 <table> <tbody> <tr> <td><span><strong>代码:</stro 一时失言乱红尘/ 2022年05月11日 12:16/ 0 赞/ 112 阅读
相关 tomcat 前文: 对tomcat的构的初步解析 一、web服务器 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_te 偏执的太偏执、/ 2022年03月19日 16:58/ 0 赞/ 78 阅读
相关 tomcat tomcat结构 模块组成结构 Tomcat的核心组件就Connector和Container,一个Connector+一个Container(Engine)构成一个 ﹏ヽ暗。殇╰゛Y/ 2022年03月16日 07:51/ 0 赞/ 121 阅读
相关 Tomcat [Tomcat][] Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责: 1. 管理Servlet程序的生命周期 左手的ㄟ右手/ 2022年01月28日 13:21/ 0 赞/ 160 阅读
相关 Tomcat tomcat目录层次结构 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6L 我会带着你远行/ 2021年11月17日 09:02/ 0 赞/ 219 阅读
相关 Tomcat Tomcat文件目录 |-bin: 存放tomcat的命令。 |- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。 ゝ一世哀愁。/ 2021年09月11日 05:40/ 0 赞/ 327 阅读
还没有评论,来说两句吧...