001HTTP 协议详解+Tomcat 服务器介绍和使用+第一个 Web 程序+Servlet 介绍

一.HTTP 协议详解

web 交互的基本流程

图片介绍:客户端根据用户输入的地址信息请求服务器,服务器在接收到用户的请求后进行处理,然后将处理结果响应给客户端,客户端将响应结果展示给用户。

专业术语:请求,客户端根据用户地址信息将数据发送给服务器的过程。响应,服务器将请求的处理结果发送给浏览器的过程。

问题:客户端也就是浏览器的版本是有很多的,服务器的版本也是有很多的,如何实现不同版本的浏览器和不同版本的服务器之间的数据交互呢?

解决:规范浏览器和服务器的数据交互的格式。

实现:HTTP 协议。

HTTP 的概念和介绍

概念:超文本传输协议(Hyper Text Transfer Protocol)。

作用:规范了浏览器和服务器的数据交互。

特点:简单快速,客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。灵活,HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。无连接,无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。支持 B/S 及 C/S 模式。HTTP1.1 版本后支持可持续连接。

HTTP 的交互流程

HTTP 的交互流程一般分为四个步骤(一次完整的请求):步骤一,客户端和服务器端建立连接。步骤二,客户端发送请求数据到服务器端(HTTP 协议)。步骤三,服务器端接收到请求后,进行处理,然后将处理结果响应客户端(HTTP 协议)。步骤四,关闭客户端和服务器端的连接(HTTP1.1 后不会立即关闭)。

HTTP 协议之请求格式

请求格式的结构:请求头,请求方式、请求的地址和 HTTP 协议版本。请求行,消息报头,一般用来说明客户端要使用的一些附加信息。空行, 位于请求行和请求数据之间,空行是必须的。请求数据,非必须。

注意: 一张网页的内容是极其丰富的,浏览器会遵循 HTTP 请求的格式将有效数据发送给服务器。

示例(get 请求方式):

示例(post 请求方式):

HTTP 协议之请求方式

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP1.0 定义了三种请求方法, GET, POST 和 HEAD 方法。HTTP1.1 新增了五种请求方法,OPTIONS, PUT, DELETE, TRACE 和CONNECT方法。

get 和 post 请求方式的区别:get 请求方式,请求数据会以?的形式隔开拼接在请求头中,不安全,没有请求实体部分。HTTP 协议虽然没有规定请求数据的大小,但是浏览器对 URL 的长度是有限制的,所以 get 请求不能携带大量的数据。post 请求方式,请求数据在请求实体中进行发送,在 URL 中看不到具体的请求数据,安全。适合数据量大的数据发送。

HTTP 协议之响应

响应格式的结构:响应行(状态行),HTTP 版本、状态码、状态消息。响应头,消息报头,客户端使用的附加信息。空行,响应头和响应实体之间的,必须的。响应实体,正文,服务器返回给浏览器的信息。

示例:

HTTP 常见响应状态码含义:HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。

HTTP 状态码共分为 5 种类型:

常见状态码:

200

OK

//客户端请求成功

400 Bad Request

//客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

//请求未经授权,这个状态代码必须和

WWW-Authenticate 报头域一起使用

403

Forbidden

//服务器收到请求,但是拒绝提供服务

404

Not Found

//请求资源不存在,eg:输入了错误的 URL

500

Internal Server Error

//服务器发生不可预期的错误

503 Server Unavailable

//服务器当前不能处理客户端的请求,一段时间后可能恢复正常

二.Tomcat 服务器介绍和使用

服务器的概念和作用

问题:学习了 java 编程之后,java 代码的一个很重要的作用就是进行数据的处理,但是目前来说我们运行编写的代码,只有一次性,也就是运行完毕后,如果需要再次运行则需要再次手动启动代码的执行。但是我们无法提前用户会何时发送请求,也就无法决定我们编写的 java 代码应该什么时候启动运行。而且手动运行也变得不现实。

解决:那么根据 java 的网络编内容,我们是不是可以使用代码编写一个容器(对象) 呢?,该容器可以根据用户的请求来启动并运行我们编写的数据逻辑代码。答案是可以的。

实现:服务器。

解释:所谓服务器其实就是代码编写的一个可以根据用户请求实时的调用执行对应的逻辑代码的一个容器。在普通用户看来就是一个安装程序。我们只需要将服务器在操作系统上进行安装,并将我们事先编写好的逻辑处理代码根据规则放到服务器的指定位置,启动服务器,那么服务器就自动的会根据接收到请求调用并执行对象的逻辑代码进行处理。

Tomcat 服务的下载和安装

下载地址:https://tomcat.apache.org/download-70.cgi

下载选项:

安装:下载成功后会为压缩包文件,解压即可使用注意:尽量不要解压在中文目录中

目录结构介绍:\bin 存放启动和关闭 Tomcat 的可执行文件。\conf 存放 Tomcat 的配置文件。\lib 存放库文件。\logs 存放日志文件。\temp 存放临时文件。\webapps 存放 web 应用。\work 存放 JSP 转换后的 Servlet 文件。

校验安装:打开 bin 目录,然后双击执行 startup.bat 文件,打开浏览器在地址栏中输入 localhost:8080/ 如果出现 tomcat 广告页安装成功。

常见问题:端口号被占用。tomcat 的运行依赖 JDK,必须配置 JDK 环境,配置方式参照https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html。闪退,启动闪退问题一般是因为 JDK 的环境变量配置有问题,重新进行配置。如果还是闪退,使用在 bin\startup.bat 文件中的第一行前面加入SET JAVA_HOME=JDK 目录,SET CATALINA_HOME=解压后 Tomcat 的目录。这样,运行 startup.bat 就可以正常启动 tomcat 服务器。如果想点击 shutdown.bat 关闭服务器,同样在 shutdown.bat 文件中加入上面的两行即可。

三.第一个 Web 程序

开发工具:Myeclipse

Myeclipse 安装:双击执行安装软件,然后一路 next(位数根据电脑的操作系统位数自行选择)。

Myeclipse 的破解:根据破解文档自行破解。

第一个 Web 项目:打开 Myeclipse 并创建工作空间。点击 file 选择—>new—>web project—>输入项目名,点击 finish。

在 src 下创建包 com.bjsxt.servlet。在包下创建一个普通 java 类 MyServlet,并继HttpServlet。在 MyServlet 类中覆写 service 方法。在 webRoot 下的 WEB-INF 下找到 web.xml。打开 tomcat 的安装目录,在 webapps 目录下新建文件夹,文件夹名为 project,并将项目源webRoot 下的内容全部复制到该文件夹下。启动 tomcat 服务器,并在地址栏中输入: localhost:8080/project/my。

package com.bjsxt.servlet;


import java.io.IOException;
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

resp.getWriter().write("this is my first servlet."); System.out.println("this is my first servlet.");
}
}


 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<!--配置Servlet	-->
<!--配置servlet类路径	-->
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet</servlet-class>
</servlet>
<!--配置访问方式	-->
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/my</url-pattern>
</servlet-mapping>
</web-app>

总结:MyEclipse 是开发工具,通过此工具便于程序员的代码编写。真正运行的代码不是 MyEclipse  中编写的代码,而是 tomcat 服务器中部署好的代码。Tomcat 会根据请求自动调用对应的代码进行请求处理。

四.Servlet 介绍

问题:服务器在接收到浏览器的请求后,会自动调用对应的逻辑代码进行请求处理。但是逻辑代码是由程序员编写并放到服务器中,那么服务器怎么知道该怎么调用并调用哪个类和哪个方法来进行请求处理。

解决:程序员在编写代码的时候如果能够按照服务器能够识别的规则进行编写,浏览器按照指定的规则进行发送请求,那么服务器就可以调用并执行响应的逻辑代码进行请求处理了。举个栗子:图书馆借书。

实现:Servlet 技术。

概念:狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。 Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。

特点:运行在支持 java 的应用服务器上。Servlet 的实现遵循了服务器能够识别的规则,也就是服务器会自动根据请求调用对应的 servlet 进行请求处理。简单方便,可移植性强。

使用:创建普通的 java 类并继承 HttpServlet。覆写 service 方法。在 service 方法中书写逻辑代码即可。在 webRoot 下的 WEB-INF 文件夹下的 web.xml。文件中配置 servlet。

运行流程:url,http://localhost:8080/project/my2。组成,服务器地址:端口号/虚拟项目名 /servlet 的别名URI,虚拟项目名 /servlet 的别名。浏览器发送请求到服务器,服务器根据请求 URL 地址中的 URI 信息在 webapps 目录下找到对应的项目文件夹,然后在 web.xml 中检索对应的 servlet,找到后调用并执行Servlet。

发布了45 篇原创文章 · 获赞 7 · 访问量 2474

猜你喜欢

转载自blog.csdn.net/weixin_44145972/article/details/90542970