织梦做的网站怎么上传视频教程,wordpress 导航菜单调用,通州微平台网站建设,华为云速建站模板TomcatJavaWebHTTP 文章目录 TomcatJavaWebHTTP一、Tomcat1.1 版本选择及安装1.2 目录1.3 WEB项目部署的方式 二、IDEA中Java Web开发部署流程三、HTTP协议3.1 发展历程3.2 HTTP协议的会话方式3.3 请求报文3.4 响应报文 一、Tomcat
Tomcat是Apache 软件基…TomcatJavaWebHTTP 文章目录 TomcatJavaWebHTTP一、Tomcat1.1 版本选择及安装1.2 目录1.3 WEB项目部署的方式 二、IDEA中Java Web开发部署流程三、HTTP协议3.1 发展历程3.2 HTTP协议的会话方式3.3 请求报文3.4 响应报文 一、Tomcat
Tomcat是Apache 软件基金会Apache Software Foundation的Jakarta 项目中的一个核心项目由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现因为Tomcat 技术先进、性能稳定而且免费因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可成为目前比较流行的Web 应用服务器。
1.1 版本选择及安装
版本企业用的比较广泛的是8.0和9.0目前比较新正式发布版本是Tomcat10.0, Tomcat11仍然处于测试阶段。从 Java EE 迁移到 Jakarta EE 的结果是所有已实现 API 的主包已从 更改 javax.*为jakarta.* 。这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。官方有提供迁移工具。
JAVAEE 版本和Servlet版本号对应关系 Jakarta EE Releases
Servlet VersionEE Version6.1Jakarta EE ?6.0Jakarta EE 105.0Jakarta EE 9/9.14.0JAVA EE 83.1JAVA EE 73.1JAVA EE 73.0JAVAEE 6
Tomcat 版本和Servlet版本之间的对应关系
Servlet VersionTomcat VersionJDK Version6.111.0.x17 and later6.010.1.x11 and later5.010.0.x (superseded)8 and later4.09.0.x8 and later3.18.5.x7 and later3.18.0.x (superseded)7 and later3.07.0.x (archived)6 and later (7 and later for WebSocket) 下载 Tomcat官方网站http://tomcat.apache.org/安装版需要安装一般不考虑使用。解压版直接解压缩使用我们使用的版本。 安装 正确安装JDK并配置JAVA_HOME( https://injdk.cn中可以下载各种版本的JDK)配置了才能启动 解压tomcat到非中文无空格目录 点击bin/startup.bat启动 打开浏览器输入 http://localhost:8080访问测试 直接关闭窗口或者运行 bin/shutdown.bat关闭tomcat 处理dos窗口日志中文乱码问题: 修改 conf/logging.properties 将所有的UTF-8修改为GBK
1.2 目录
bin该目录下存放的是二进制可执行文件解压版会有startup.bat和shutdown.bat文件控制服务器启停conf配置文件目录这个目录下有四个最为重要的文件 server.xml配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是8080tomcat-users.xml存储tomcat用户的文件以及用户的角色信息。用于从主页进入Tomcat Manager页面web.xml部署描述符文件这个文件中注册了很多MIME类型即文档类型。文件类型映射配置文件context.xml对所有应用的统一配置通常不会去配置它 libTomcat的类库logs日志文件目录记录了Tomcat启动和关闭的信息如果启动Tomcat时有错误那么异常也会记录在日志文件中temp存放Tomcat的临时文件这个目录下的东西可以在停止Tomcat后删除webapps存放web项目的目录其中每个文件夹都是一个项目如果目录下已经存在目录这些是tomcat自带的项目。其中ROOT是一个特殊的项目在地址栏中访问http://127.0.0.1:8080没有给出项目目录时对应的就是ROOT项目。http://localhost:8080/examples进入示例项目。其中examples 就是项目名即文件夹的名字work运行时生成的文件最终运行的文件都在这里。通过webapps中的项目生成的。可以把这个目录下的内容删除再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时Tomcat会通过JSP生成Java文件然后再编译Java文件生成class文件生成的java和class文件都会存放到这个目录下
1.3 WEB项目部署的方式
方式1直接将编译好的项目或者war包tomcat启动后会自动解压war包放在 webapps 目录下方式2在tomcat中通过配置文件指向app的实际磁盘路径 在tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件
!-- path: 项目的访问路径,也是项目的上下文路径,就是在浏览器中,输入的项目名称docBase: 项目在磁盘中的实际路径--
Context path/app docBaseD:\mywebapps\app /二、IDEA中Java Web开发部署流程
idea配置应用服务器settings - Build, Execution, Deployment - Application Servers 新建项目后新建 Module为 Module 添加 Tomcat 依赖 选择module双击shift添加 framework supportidea低版本选中 module 右键也有该选项。添加 Web Application 并且勾选 web.xml IDEA部署-运行web项目在运行和debug旁边有编辑配置添加tomcat Server选择 Local之后点击右下角 Fix的配置项目选择带 _exploded 的或者到该页面 Deployment 页签配置配置完即可启动了浏览器将打开 index 页面 IDEA部署并运行项目的原理
idea并没有直接将编译好的项目放入tomcat的webapps中idea根据关联的tomcat,创建了一个tomcat副本,将项目部署到了这个副本中idea的tomcat副本在C:\用户\当前用户\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中idea的tomcat副本并不是一个完整的tomcat,副本里只是准备了和当前项目相关的配置文件而已idea启动tomcat时,是让本地tomcat程序按照tomcat副本里的配置文件运行idea的tomcat副本部署项目的模式是通过conf/Catalina/localhost/*.xml配置文件的形式实现项目部署的
三、HTTP协议
3.1 发展历程 HTTP/1.1 HTTP 的第一个标准化版本 HTTP/1.1 ( RFC 2068 ) 于 1997 年初发布支持七种请求方法OPTIONSGETHEADPOSTPUTDELETE和TRACE发布后15年非常稳定但之后出现了 HTTPS安全超文本传输协议。它是使用 SSL/TLS 进行安全加密通信的 HTTP 的安全版本 HTTP/2 由IETF在2015年发布。HTTP/2旨在提高Web性能减少延迟增加安全性使Web应用更加快速、高效和可靠多路复用HTTP/2 允许同时发送多个请求和响应而不是像 HTTP/1.1 一样只能一个一个地处理。这样可以减少延迟提高效率提高网络吞吐量二进制传输HTTP/2 使用二进制协议与 HTTP/1.1 使用的文本协议不同。二进制协议可以更快地解析更有效地传输数据减少了传输过程中的开销和延迟头部压缩HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩减少了头部传输的数据量从而减少了网络延迟服务器推送HTTP/2 支持服务器推送允许服务器在客户端请求之前推送资源以提高性能改进的安全性HTTP/2 默认使用 TLSTransport Layer Security加密传输数据提高了安全性兼容 HTTP/1.1HTTP/2 可以与 HTTP/1.1 共存服务器可以同时支持 HTTP/1.1 和 HTTP/2。如果客户端不支持 HTTP/2服务器可以回退到 HTTP/1.1 HTTP/3 于 2021 年 5 月 27 日发布 , HTTP/3 是一种新的、快速、可靠且安全的协议适用于所有形式的设备。 HTTP/3 没有使用 TCP而是使用谷歌在 2012 年开发的新协议 QUICHTTP/3 带来了革命性的变化以提高 Web 性能和安全性。设置 HTTP/3 网站需要服务器和浏览器支持目前谷歌云、Cloudflare和Fastly支持 HTTP/3。Chrome、Firefox、Edge、Opera 和一些移动浏览器支持 HTTP/3
3.2 HTTP协议的会话方式
浏览器与服务器之间的通信过程要经历四个步骤 浏览器与WEB服务器的连接过程是短暂的每次连接只处理一个请求和响应。对每一个页面的访问浏览器与WEB服务器都要建立一次单独的连接浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对
3.3 请求报文
请求报文组成
请求首行请求行 GET/POST 资源路径?参数 HTTP/1.1 请求方式 GET访问服务器的资源路径?参数1值1参数2值2 …协议及版本 HTTP/1.1 请求头信息请求头空行请求体POST请求才有请求体
- 请求行
GET http://localhost:8080/TestWeb_war_exploded/ HTTP/1.1
- 请求头
- 主机虚拟地址
Host: localhost:8080
- 长连接
Connection: keep-alive
Cache-Control: max-age0
sec-ch-ua: Google Chrome;v119, Chromium;v119, Not?A_Brand;v24
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: Windows
- 请求协议的自动升级[http的请求服务器却是https的浏览器自动会将请求协议升级为https的]
Upgrade-Insecure-Requests: 1
- 用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
- 浏览器支持的文件类型
Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7
- 当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的] 可以通过此路径跳转回上一个页面 广告计费防止盗链
Referer: http://localhost:8080/TestWeb_war_exploded/login.html
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
- 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br
- 浏览器支持的语言
Accept-Language: zh-CN,zh;q0.9
Cookie: JSESSIONID4A572D771E3A36F8CBCB791AB56C9D9E3.4 响应报文
响应报文组成
响应首行响应行 协议/版本 状态码 状态码描述 协议及版本 HTTP/1.1响应状态码 200HTTP 状态码英语HTTP Status Code是用以表示 HTTP 响应状态的 3 位数字代码。状态描述 OK (缺省) 响应头信息响应头空行响应体
- 响应行
HTTP/1.1 200
- 响应头
- 响应体数据的类型[浏览器根据类型解析响应体数据如果响应的是html页面最终响应体内容会被浏览器显示到页面中]
Content-Type: text/html;charsetUTF-8
- 响应体内容的字节数
Content-Length: 111
- 响应的时间这可能会有8小时的时区差
Date: Fri, 24 Nov 2023 08:22:39 GMT
Keep-Alive: timeout20
Connection: keep-alive
- 下面是空行及响应体htmlheadtitle$Title$/title/headbody$END$br /老铁666/body
/html常见响应状态码
200 请求成功浏览器会把响应体内容通常是html显示在浏览器中302 重定向当响应码为302时表示服务器要求浏览器重新再发一个请求服务器会发送一个响应头Location指定新请求的URL地址304 使用了本地缓存404 请求的资源没有找到说明客户端错误的请求了不存在的资源405 请求的方式不允许500 请求资源找到了但服务器内部出现了错误
一般含义
1xx消息2xx成功3xx重定向4xx客户端错误5xx服务器错误
更多状态码
状态码状态码英文描述中文含义1**消息100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议例如切换到HTTP的新版本协议2**成功200OK请求成功。一般用于GET与POST请求201Created已创建。成功请求并创建了新的资源202Accepted已接受。已经接受请求但未处理完成203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器而是一个副本204No Content无内容。服务器成功处理但未返回内容。在未更新网页的情况下可确保浏览器继续显示当前文档205Reset Content重置内容。服务器处理成功用户终端例如浏览器应重置文档视图。可通过此返回码清除浏览器的表单域206Partial Content部分内容。服务器成功处理了部分GET请求3**重定向300Multiple Choices多种选择。请求的资源可包括多个位置相应可返回一个资源特征与地址的列表用于用户终端例如浏览器选择301Moved Permanently永久移动。请求的资源已被永久的移动到新URI返回信息会包括新的URI浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI303See Other查看其它地址。与301类似。使用GET和POST请求查看304Not Modified未修改。所请求的资源未修改服务器返回此状态码时不会返回任何资源。客户端通常会缓存访问过的资源通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源305Use Proxy使用代理。所请求的资源必须通过代理访问306Unused已经被废弃的HTTP状态码307Temporary Redirect临时重定向。与302类似。使用GET请求重定向4**客户端错误400Bad Request客户端请求的语法错误服务器无法理解401Unauthorized请求要求用户的身份认证402Payment Required保留将来使用403Forbidden服务器理解请求客户端的请求但是拒绝执行此请求404Not Found服务器无法根据客户端的请求找到资源网页。通过此代码网站设计人员可设置您所请求的资源无法找到的个性页面405Method Not Allowed客户端请求中的方法被禁止406Not Acceptable服务器无法根据客户端请求的内容特性完成请求407Proxy Authentication Required请求要求代理的身份认证与401类似但请求者应当使用代理进行授权408Request Time-out服务器等待客户端发送的请求时间过长超时409Conflict服务器完成客户端的 PUT 请求时可能返回此代码服务器处理请求时发生了冲突410Gone客户端请求的资源已经不存在。410不同于404如果资源以前有现在被永久删除了可使用410代码网站设计人员可通过301代码指定资源的新位置411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息412Precondition Failed客户端请求信息的先决条件错误413Request Entity Too Large由于请求的实体过大服务器无法处理因此拒绝请求。为防止客户端的连续请求服务器可能会关闭连接。如果只是服务器暂时无法处理则会包含一个Retry-After的响应信息414Request-URI Too Large请求的URI过长URI通常为网址服务器无法处理415Unsupported Media Type服务器无法处理请求附带的媒体格式416Requested range not satisfiable客户端请求的范围无效417Expectation Failed服务器无法满足Expect的请求头信息5**服务器错误500Internal Server Error服务器内部错误无法完成请求501Not Implemented服务器不支持请求的功能无法完成请求502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时从远程服务器接收到了一个无效的响应503Service Unavailable由于超载或系统维护服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中504Gateway Time-out充当网关或代理的服务器未及时从远端服务器获取请求505HTTP Version not supported服务器不支持请求的HTTP协议的版本无法完成处理