资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Java Web工作原理,本章目标,WEB简介 HTTP协议原理 HTTP服务器程序的简单实现 动态网页编程 Java Web应用程序解决方案 第一个Java Web应用程序,Web概述,HTTP,HTML,URL,在计算机网络通信中它定义了一套通信规则 规定了浏览器与WEB服务器之间的通讯交互过程和细节 通讯模式采用了客户端/服务器端的通讯模式,客户端就是HTTP客户端程序,浏览器就是最常用的客户端HTTP程序;而服务器端就是指WEB服务器,应用层协议。 WEB服务器IP地址或域名。 资源的在服务器上的路径或名称,其首要工作是向人们提供信息服务,信息包括文本、图片、图像和声音等形式。 HTML 不是一种编程语言,而是一种标记语言 (markup language) 它采用一套标记标签来定义网页内容,超文本标记语言 (Hyper Text Markup Language),(Uniform Resource Locator) 统一资源定位器,是专门为标识网络上的资源位置而设置的一种地址方式,(Hypertext Transfer Protocol) 超文本传输协议,DEMO,理解 HTTP 协议,Web演示,Step 1: 建立TCP连接,Domain Controller,在浏览器的地址栏里键入地址并回车,浏览器客户端会尝试与服务器端建立一个TCP Socket链接 在网络数据通讯过程中,数据是通过IO流进行输入和输出的。,Socket socket=new Socket(“127.0.0.1“,8080); InputStream in=socket.getInputStream(); OutputStream out=socket.getOutputStream(); ,Step 2: 发送HTTP请求,Domain Controller,HTTP请求格式包括三个部分 请求行(请求头 、URI和HTTP协议版本号) 请求头 请求正文(消息体以及分隔请求头和消息体的一个空行),HTTP请求方法 请求URL HTTP版本号 GET /webtest/index.html HTTP/1.1 HTTP请求可以使用多种请求方法,主要包括: GET:最常用,客户端请求服务器上的一个资源。 POST: 用于向服务器发送大数据。 HEAD: 用于客户端与服务器端之间交流一些内部数据,服务器不会返回具体文档。 PUT:客户端通过这种方式把文档上传给服务器。 DELETE:请求服务器删除URI中指定的资源。,HTTP协议规则使用HTTP头来传递请求的基本信息。HTTP头是一个用冒号分隔的键/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。 常见的请求头如:Host(服务器地址)、Connection(链接类型)、User-Agent(用户代理资料)、Accept(可以接收的格式)、Accept-Language(可接受语言)以及Accept-Encoding(内容编码)等等,Step 3: 服务器端应答,Domain Controller,HTTP协议规则的响应也包括三部分: 状态行(HTTP协议的版本号、状态码和描述) 响应头 响应正文(消息体以及分割消息体和响应头的一个空行),响应状态码是一个三位的整数,以1、2、3、4、5开头,它分为如下几个组: 1xx:请求收到、信息提示、临时响应。 2xx:成功,表示成功处理了请求。 3xx:重定向,为了完成请求,必须进一步执行的动作。 4xx:客户端请求错误,请求包含语法错误或者请求无法实现。 5xx:服务器错误,服务器在尝试处理请求时发生内部错误。,响应头与请求头一样,也是一个用冒号分隔的键/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。典型的响应头包括内容类型描述、内容长度、时间邮戳、服务器信息、内容最后更改的时间。,Step 4: 关闭连接,Domain Controller,HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否成功的状态代码。然后解析每一个响应头,读取响应消息体,然后将消息体渲染呈现在浏览器页面上 文档可能包含如图片、CSS文件或者JS文件等,浏览器会对这些内容进行识别,并对这些需要的资源再进行额外的请求,整个过程可以一直循环到所有的数据、资源都被请求获得,并都按照响应头中规定的格式呈现到页面中为止。 最后,数据传送完毕,服务器端关闭连接,HTTP协议 是无状态协议,DEMO,Java套接字创建HTTP服务器程序,让我们来了解WEB应用的发展过程,发布静态HTML,Domain Controller,静态的HTML文档被事先存放在Web服务器文件系统中,等待服务器找到静态页面,并把它原样传回到客户端。,动态网页,Domain Controller,解决方案就是在Web服务器主机上增加一个能够完成实时构建页面功能的应用服务,这个应用服务负责动态构建页面,并且能与Web服务器软件交互通信,解决方案CGI,Domain Controller,CGI,即通用网关接口(Common Gateway Interface),是最早用于创建动态服务器端内容的一种技术。使用CGI,Web服务器可以将客户端的请求传递给一个应用服务程序,这个应用服务程序可以动态构建页面内容,并且将响应传递给客户端,解决方案CGI的问题,Domain Controller,CGI最初是被设计用来作为Web服务器与外部应用程序进行通讯的标准方法,用于产生动态网页的功能实际上是设计目标的次要结果。使用CGI做为Web服务器的应用服务时,每次请求一个CGI资源,将在服务器端创建一个新的进程(Process),并且通过标准输入和环境变量将信息传递给该进程,Java的解决方案,Domain Controller,在Java EE企业级应用中,Web容器及其组件Servlet和JSP,被设计用来解决CGI的缺陷问题,为Web开发者创建一个更加健壮的服务器端运行环境。,Servlet,Domain Controller,Servlet是普通的Java代码; Servlet不属于Java SE版本,它属于单独的Java EE规范,所以使用了满足Java EE规范的包和API Servlet继承了标准类(HttpServlet) Servlet没有main()方法 Servlet作为中间层在服务器端的工作细节主要是读取客户端发送的显式和隐式数据 生成响应结果。 向客户端发送显式数据(即响应文档内容)和隐式数据(HTTP响应数据),import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException response.setContentType(“text/html“); PrintWriter out = response.getWriter(); out.println(“); out.println(“); out.println(“Hi Java Web!“); out.println(“); out.println(“); out.println(“Hello Java Web应用!“); out.println(“); out.println(“); ,Java WEB的核心,Servlet与Web容器配合,Domain Controller,处理安全性,Servlet运行在一个主进程中,这就是为什么Servlet更高效的关键原因。有了高效的设计,以及Java的跨平台支持,Servlet解决了CGI的常见缺陷,迅速成为创建动态服务器端内容的最佳解决方案,并且成为JSP等其它技术的基础。现在,Servlet和JSP组合组成了Java EE的官方基础Web层,DEMO,开发第一个Java Web应用程序,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号