HTTP协议原理
- socket默认使用tcp协议
- http协议是处于应用层的协议 端口:80 ftp:21
TCP/IP 模型:
- 应用层、传输层、网络层、物理加数据链路层
- 应用层:主要用来存放应用程序
- 传输层:TCP/UDP协议
- 网络层:IP和端口
- 物理+数据链路:以太网,atm协议
客户端给服务器发消息经历的步骤:
- 1、打开浏览器输入地址,浏览器会创建一个socket,底层封装的是TCP协议。
- 2、连接到指定的计算机,通过ip地址匹配地址。
- 3、向socket中写入信息。
- 4、关闭socket。
服务器给客户端发消息经历的步骤:
- 1、创建socket对象
- 2、绑定socket和端口
- 3、监听端口
- 4、接受用户请求
- 5、通过输入流获取到数据
- 6、关闭socket
http
http协议:超文本传输协议
html:超文本标记语言
http特点
1、遵循请求响应模型--- 只要发送请求成功,服务器必定会响应回客户端
2、http是无状态的协议---每次交互成功后,服务器就断开连接,客户端会执行socket.close(),下次再访问服务器就会识别为新的请求--- http现在是有状态了
处理流程
1、客户端和服务器建立连接,tcp三次握手 2、客户端发请求 3、服务器接受请求,处理响应 4、关闭连接
http请求
- 请求行:主要定义了请求的方法,get和post,请求地址,http协议
- 请求头:头元素信息,告诉服务器客户端的一些信息(访问方式)
- 空行:发送回车符或者是空格,目的是区分请求头和消息体
- 消息体:post请求将内容放在消息体,用以传输数据
Web服务器的缺陷
- 只能想客户端提供静态网页内容------增加一个辅助应用生成动态页面
建东塔服务器端内容的过程
- cgi(通用网关接口),可以用任意语言编写--缺点:耗资源,每次请求就打开一个进程
服务器端Web编程原理
Servlet与Web容器
- 由sun公司设计的用来处理动态网页的一种技术,有以下这些特点:
1.1 servlet程序是一个多线程程序
1.2 没有main方法,无法自己实例化本类
Web容器
- 作用是:运行和管理servlet的区域,而web容易一般运行在服务器内部。
- web容器给处于其中的组件提供了运行环境,使servlet和jsp程序直接和容器中的环境变量进行交互,开发者不必关心其他的系统问题。web容器主要是由web服务器来实现。例如:Tomcat、weblogic、Jboss
web容器和服务器
- 在设计上两块是分开的,不同的概念,web容器管理servlet或者jsp,web服务器是运行程序的一个软件。但是一般来说web服务器就结合了web容器的功能,比如Tomcat、jboss等等
web容器是如何来管理servlet或者jsp的(容器对servlet的支持)
- 通信支持:
- 可以利用容器提供的方法,能够轻松的让servlet程序和web服务器进行对话,那样的话我们就不用再创建socket,也不用监听端口,在开发过程中不用去关心容器是如何来调用servlet方法的,我们主要关注业务
- 生命周期管理:
- servlet程序的存在与销毁有容器来管理,容器会在相应的时候加载servlet,初始化servlet,调用方法处理请求,以及servlet销毁,资源回收都是容器来进行管理
- 多线程
- 容器会给每个servlet创建多线程程序,用户访问服务器的servlet创建线程,运行结束后线程就会被回收
- jsp支持
- 容器会自动处理jsp程序
- 安全性支持
- javaweb应用程序通常需要一些访问限制,容器对web容器进行了安全性设置,有些内容客户端无论如何是访问不到的
Java Web应用程序的组成
Tomcat介绍
- Tomcat特点:开源、免费、效率比较高
- bin目录:主要用来存放启动Tomcat和关闭Tomcat的脚本文件
- conf:存放服务器的各种配置文件
- lib:存放Tomcat运行所需的jar包
- logs:存放Tomcat运行过程中产生的日志文件
- temp:存放临时文件
- webapps:存放应用程序
- works:工作目录,存放jsp的各种运行产生的文件
搭建运行环境
依赖于jdk、jre
javaweb项目名称: html css js img WEB-INF lib classes web.xml
客户端能访问的内容是java项目下面HTML、css、js等,WEB-INF,目录下面的内容,客户端无法访问,容器有安全性设置
lib包含所有运行需要的jar包 classes:主要存放编译后的文件 web.xml是程序的核心配置文件