一、HTTP协议
1. 简介
HyperText Transfer Protocol 超文本传输协议
是 TCP/IP 协议集中的协议 , 是一个简单的请求-响应协议,指 定了客户端发送给服务器的消息以及服务器的响应。
点击进入:HTTP百度百科
2. HTTP 请求/响应的步骤
2.1客户端连接到Web服务器
⼀个HTTP客户端,通常是浏览器,与Web服务器的HTTP端⼝(默认为80)建⽴⼀个TCP套接字连接。 例如:http://www.baidu.com。
2.2 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送⼀个⽂本的请求报⽂,⼀个请求报⽂由请求⾏、请求头部、 空⾏和请求数据4部分组成。
2.3 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。⼀个响应由 状态⾏、响应头部、空⾏和响应数据4部分组成。
2.4 释放TCP连接
在HTTP/1.0中默认使⽤短连接。也就是说,客户端和服务器每进⾏⼀次HTTP操作,就建⽴⼀次连接,任 务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web⻚中包含有其他的Web资源 (如JavaScript⽂件、图像⽂件、CSS⽂件等),每遇到这样⼀个Web资源,浏览器就会重新建⽴⼀个 HTTP会话。
⽽从HTTP/1.1起,默认使⽤⻓连接,⽤以保持连接特性。使⽤⻓连接的HTTP协议,会在响应头加⼊这⾏ 代码:
Connection:keep-alive
在使⽤⻓连接的情况下,当⼀个⽹⻚打开完成后,客户端和服务器之间⽤于传输HTTP数据的TCP连接不 会关闭,客户端再次访问这个服务器时,会继续使⽤这⼀条已经建⽴的连接。Keep-Alive不会永久保持 连接,它有⼀个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现⻓连接需要客 户端和服务端都⽀持⻓连接。
HTTP协议的⻓连接和短连接,实质上是TCP协议的⻓连接和短连接。
2.5 客户端浏览器解析HTML内容
客户端浏览器⾸先解析状态⾏,查看表明请求是否成功的状态代码。然后解析每⼀个响应头,响应头告 知以下为若⼲字节的HTML⽂档和⽂档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法 对其进⾏格式化,并在浏览器窗⼝中显示。
例如:在浏览器地址栏键⼊URL,按下回⻋之后会经历以下流程:
1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2. 解析出 IP 地址后,根据该 IP 地址和默认端⼝ 80,和服务器建⽴TCP连接;
3. 浏览器发出读取⽂件(URL 中域名后⾯部分对应的⽂件)的HTTP 请求,该请求报⽂作为 TCP 三次握 ⼿的第三个报⽂的数据发送给服务器;
4. 服务器对浏览器请求作出响应,并把对应的 html ⽂本发送给浏览器;
5. 浏览器将该 html ⽂本进行解析并显示内容;
3. HTTP请求⽅法
HTTP/1.1协议中共定义了⼋种⽅法(也叫“动作”)来以不同⽅式操作指定的资源:
GET
向指定的资源发出“显示”请求。使⽤GET⽅法应该只⽤在读取数据,⽽不应当被⽤于产⽣“副作⽤”的操作 中,例如在Web Application中。其中⼀个原因是GET可能会被⽹络蜘蛛等随意访问。
POST
向指定资源提交数据,请求服务器进⾏处理(例如提交表单或者上传⽂件)。数据被包含在请求本⽂ 中。这个请求可能会创建新的资源或修改现有资源,或⼆者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除Request-URI所标识的资源。
HEAD
与GET⽅法⼀样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本⽂部分。它的好 处在于,使⽤这个⽅法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信 息或称元数据)。
TRACE
回显服务器收到的请求,主要⽤于测试或诊断。
OPTIONS
这个⽅法可使服务器传回该资源所⽀持的所有HTTP请求⽅法。⽤'*'来代替资源名称,向Web服务器发送 OPTIONS请求,可以测试服务器功能是否正常运作。
CONNECT
二、Web服务器
Web服务器是运⾏及发布Web应⽤的容器,只有将开发的Web项⽬放置到该容器中,才能使⽹络中的所 有⽤户通过浏览器进⾏访问。开发Java Web应⽤所采⽤的服务器主要是与JSP/Servlet兼容的Web服务 器,⽐较常⽤的有Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等
1. Tomcat
开源⼩型web服务器 ,完全免费,主要⽤于中⼩型web项⽬,只⽀持Servlet和JSP 等少量javaee规范 (就是JavaWeb编程接⼝)
1.1 Tomcat下载与安装
下载好之后,安装到任意⽬录(9.0以上版本需要打开exe进行安装)
安装步骤:
1. 下载Tomcat
2. 解压到⼀个没有特殊符号的⽬录中(⼀般纯英⽂即可)
3. 进⼊到解压的⽬录下找到bin\startup.bat双击启动即可
注意:不建议将服务器软件放在磁盘层次很多的⽂件夹中!不建议放在中⽂路径下!tomcat安装需要配置JAVA_HOME环境变量
1.2 tomcat的⽬录
1、bin:该⽬录下存放的是⼆进制可执⾏⽂件,如果是安装版,那么这个⽬录下会有两个exe⽂件: tomcat9.exe、tomcat9w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗⼝启动Tomcat;如 果是解压版,那么会有startup.bat和shutdown.bat⽂件,startup.bat⽤来启动Tomcat,但需要JDK的 配置,shutdown.bat⽤来停⽌Tomcat;
2、conf:这是⼀个⾮常⾮常重要的⽬录,这个⽬录下有四个最为重要的⽂件:
server.xml:配置整个服务器信息。例如修改端⼝号,添加虚拟主机等;
tomcat-users.xml:存储tomcat⽤户的⽂件,这⾥保存的是tomcat的⽤户名及密码,以及⽤户的⻆⾊信 息。可以按着该⽂件中的注释信息添加tomcat⽤户,然后就可以在Tomcat主⻚中进⼊Tomcat Manager ⻚⾯了;
web.xml:部署描述符⽂件,这个⽂件中注册了很多MIME类型,即⽂档类型。这些MIME类型是客户端 与服务器之间说明⽂档类型的,如⽤户请求⼀个html⽹⻚,那么服务器还会告诉客户端浏览器响应的⽂ 档是text/html类型的,这就是⼀个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。 当然是在浏览器中显示这个html⽂件了。但如果服务器响应的是⼀个exe⽂件,那么浏览器就不可能显 示它,⽽是应该弹出下载窗⼝才对。MIME就是⽤来说明⽂档的内容是什么类型的!
context.xml:对所有应⽤的统⼀配置,通常我们不会去配置它。
3、lib:Tomcat的类库,⾥⾯是⼀⼤堆jar⽂件。如果需要添加Tomcat依赖的jar⽂件,可以把它放到这 个⽬录中,当然也可以把应⽤依赖的jar⽂件放到这个⽬录中,这个⽬录中的jar所有项⽬都可以共享之, 但这样你的应⽤放到其他Tomcat下时就不能再共享这个⽬录下的Jar包了,所以建议只把Tomcat需要的 Jar包放到这个⽬录下;
4、logs:这个⽬录中都是⽇志⽂件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那 么异常也会记录在⽇志⽂件中。
5、temp:存放Tomcat的临时⽂件,这个⽬录下的东⻄可以在停⽌Tomcat后删除!
6、webapps:存放web项⽬的⽬录,其中每个⽂件夹都是⼀个项⽬;如果这个⽬录下已经存在了⽬ 录,那么都是tomcat⾃带的项⽬。其中ROOT是⼀个特殊的项⽬,在地址栏中没有给出项⽬⽬录时,对 应的就是ROOT项⽬。
http://localhost:8080/examples,进⼊示例项⽬。其中examples就是项⽬名,即⽂件夹的名字。
7、work:运⾏时⽣成的⽂件,最终运⾏的⽂件都在这⾥。通过webapps中的项⽬⽣成的!可以把这个 ⽬录下的内容删除,再次运⾏时会⽣再次⽣成work⽬录。当客户端⽤户访问⼀个JSP⽂件时,Tomcat会 通过JSP⽣成Java⽂件,然后再编译Java⽂件⽣成class⽂件,⽣成的java和class⽂件都会存放到这个⽬录 下。
8、LICENSE:许可证。
9、NOTICE:说明⽂件。
通过url访问服务器:
url:http://服务器的ip地址:端⼝号/项⽬名/被访问的⻚⾯
示例:http://localhost:8080/test0918
1.3 IntelliJ IDEA配置Tomcat
1,点击Run---EDit Configurations..
2,点击左侧“+”号,找到Tomcat Server---Local
3,在Tomcat Server -> local-> Server -> Application server项⽬下,点击 Configuration ,找到本地 Tomcat 服务器,再点击 OK按钮。
1.4 创建JavaWeb项⽬
最新版idea创建时只能先创建普通项目,再右键项目名称Add Frameworks Support添加Web Application
1.5 修改端口号
修改配置⽂件:/conf/server.xml
<Connector port="8888" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
如果将端⼝号改成80,则访问项⽬时的请求路径就可以省略端⼝号。
1.6 给tomcat增加管理员信息
配置conf/tomcat-users.xml
<tomcat-users>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>
注意:tomcat启动的时候会加载webapps下的所有项⽬