Java对http的封装个人理解
一、向后台发送请求的方式:
当浏览器发现一个图片标记时,会生成另一个HTTP请求,得到标记所描述的资源。在这里,浏览器会做第二个HTTP请求来得到<img>标记中引用的图片
所以可以通过<img src="codeMaker"/> codeMaker指向一个servlet:
(<servlet>
<servlet-name>ValidateCode</servlet-name>
<servlet-class>org.yicj.frameWork.service.login.ValidateCode</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ValidateCode</servlet-name>
<url-pattern>/codeMaker</url-pattern>
</servlet-mapping>
)来向后台发出请求得到返回的内容。
总结:以前一直以为向后台发出请求的方式只有通过表单提交,超连接或通过ajax 的XMLHttpRequest对象向后台发送请求(异步加载数据)。其实通过下面的方式也可以不段的向后台发送请求不过大多数是用来改变图片的内容。
function change(){
var img = document.getElementById("img1");
img.src="codeMaker";
}
<img name ="chaimg" id = "img1"src="codeMaker"/>
<input type="button" value="修改图片" onclick="change();">
二、请求发送和接收的过程
1、http get请求剖析
资源的路径以及增加到URL的所有参数都会包括在“请求行”中
【请求】
(Request-Line) GET /HelloWorld/cookiebase.do HTTP/1.1
Host localhost:8080
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language zh-cn,zh;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
请求行:http方法(get,post…);web服务器上资源的路径。在GET请求中,参数(如果有)会追加到请求URL第一部分的后面,以“?”开头。各参数之间用“&”分隔。; Web浏览器所使用的协议的版本。
请求首部:{主机地址:(www.wickedlysmart.com);
用户代理:用户所使用的浏览器(计算机型号,使用的操作系统,语言(英文),浏览器所使用的网页排版引擎(哪个公司什么版本))
接受类型(浏览器所能识别并解析的类型):text/xml,application/xml,application/xhtml+xml等等
接受语言():英文或中文等等
接受编码:gzip
接受字符集:utf-8,ISO-8859-1
(说明:Charset 和 Encoding 的区别;在绝大多数情况下,包括某些专业文章中,字符集和编码都统称为编码,这是因为一个字符集往往对应一种编码。但是在程序中,我们来不得半点马虎,我们 应该清楚地知道字符集和编码有什么区别。
Charset 是字符集,Encoding 是编码。
字符集即字符的集合,规定了在这些集合里面有哪些字符,每一个字符都有一个编号(一个整数),但这只是编号不是编码。
编码就规定了一个编号如何与二进制交互。
我们大多数人最先接触到的字符集是 1963 年的 ASCII,其中的每一个字符只需要用一个字节来表示就可以了。但世界上有许多种语言,像亚洲文字,比如中文,常用汉字就几千个,仅用一个字节来表示显然是不够的,假如我们使用两个字节。
那么问题就来了,为什么我们要把两个字节看成是一个汉字的编号呢?为什么我们不把两个字节看成 ASCII 字符集的两个编号呢?为了解决此问题,就得使用编码来标识了。
还有一个问题,编号(整数)1234 在字符集 A 中代表“千”,1234 在字符集 B 中代表“一”,那么 1234 究竟代表什么字呢?这就得明确字符集了。
浏览器可以自动识别使用哪个字符集,一般说来它们使用 HTTP 头部的 Content-Type 标明的字符集,如果没有向 HTTP 头部发送该信息,一般参考使用 HTML 的 head 标签中的 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,为什么是参考使用呢?因为现在浏览器都比较聪明,如果发现这里用错了,一般会给予纠正。
我们做网页时,如果指定的 Charset 是 GB2312,那么就不应该在网页中出现繁体字,因为 GB2312 标准只有几千个简体的中文字。如果我们的网页编码是 UTF-8,我们就不要指定字符集是 GB2312,因为虽然 UTF-8 编码对应的 UTF-8 字符集包含了 GB2312 的字符,但同一个字符在两个字符集中的编号不一样。
对于我们中文简体网页,一般来说有两种搭配:
一种是字符集是 GB2312,编码使用 ANSI。占用磁盘空间最少,网络传输效率最高。
一种是字符集是 UTF-8,编码使用 UTF-8。虽然占用磁盘空间大,传输效率略低,但因为兼容面广,在应用 Ajax 以及包含多种语言文字时使用方便。鉴于此原因,现在许多网页开发工具都默认使用 UTF-8 来保存网页,比如 Visual Web Developer。
)
保持连接:300(没有理解)
连接方式:保持连接(没有理解)
}
2、HTTP POST请求剖析
和GET差不多只不过,,参数(如果有)会追加到请求URL第一部分的后面,以“?”开头。各参数之间用“&”分隔。将放到一个消息体中,长度不像使用GET那样受限制
二、HTTP响应剖析
HTTP响应包括一个首部和一个体。首部信息告诉浏览器使用了什么协议,请求是否成功,以及体中包括的内容是什么类型。
http响应首都:web服务器正在使用的协议版本 响应的http状态码 状态码的文本版本
内容类型:告诉浏览器要接收的数据是什么类型,这样浏览器才知道如何显示这些数据。(注意:MIME类型值与http请求的”Accept”首都中所列的相关)
内容长度:返回信息的长度
日期:返回日期
服务器:响应所使用的服务器
连接:关闭
分享到:
相关推荐
这个"JavaWeb开发典型模块大全完整源码"提供了全面的学习资源,可以帮助开发者深入理解JavaWeb的核心概念和技术栈。源码分为三个部分,每个部分可以独立解压,这使得学习和研究更加灵活和方便。 首先,JavaWeb开发...
Tomcat与JavaWeb开发技术详解书本的源代码。
通过学习《JavaWeb开发实战经典(基础篇)》的源码,你可以逐步掌握这些关键知识点,并通过实际操作加深理解,提升自己的开发能力。李兴华老师的教程通常以实例驱动,注重实践,非常适合自学和进阶。
《Tomcat与JavaWeb开发技术详解》一书的随书源码包含了大量的示例和练习,旨在帮助读者深入理解如何在实际开发环境中运用Tomcat服务器和JavaWeb技术。以下是对这些关键技术点的详细阐述: **Tomcat服务器** Tomcat...
这份"JavaWeb开发文档集合"显然是一份宝贵的资源,包含了多种核心技术的指南,可以帮助开发者深入理解和掌握JavaWeb开发的各个环节。 首先,JavaScript、HTML和CSS是构建网页前端的基本技术。JavaScript是一种运行...
尽管在现代开发中已较少使用,了解其原理对理解JavaWeb架构仍有一定帮助。 10. **JNDI(Java Naming and Directory Interface)**:JNDI是Java提供的一个接口,用于查找和管理分布式环境中的资源,如数据库连接池、...
JavaWeb开发实战源码是学习和理解Web应用程序开发的一个重要资源。这个压缩包可能包含了从基础到高级...同时,对于初学者来说,这是一个很好的实践和学习平台,可以对照源码逐步学习和调试,加深对JavaWeb开发的理解。
这个"javaWeb开发PPT大全"包含17个章节的PPT,是学习和理解JavaWeb技术的理想资源。以下将详细介绍这些章节可能涵盖的知识点: 1. **JavaWeb概述**:这部分可能会介绍JavaWeb的定义、特点和应用领域,以及与传统的...
资源名称:深入理解JavaWeb开发技术:探索基于主流框架的最佳组合内容简介:《深入理解JavaWeb开发技术:探索基于主流框架的最佳组合》内容新颖、知识全面、讲解详细,可以帮助读者深入理解javaweb开发技术的基本...
《JavaWeb开发学习手册》是一本全面覆盖JavaWeb开发核心概念和技术的手册,旨在帮助初学者及有经验的开发者深入理解和掌握这一领域的关键知识点。标签"javaweb开发"明确了手册的主要焦点,即使用Java语言进行Web应用...
在JavaWeb开发中,开发者需要理解并掌握一系列技术,包括Servlet、JSP、MVC框架、数据库交互、安全机制以及性能优化等。以下是对这些关键知识点的详细解释: 1. **Servlet**:Servlet是JavaEE平台中的核心组件,它...
《深入理解JavaWeb开发技术 探索基于主流框架的最佳组合》是谭贞军撰写的一本专业书籍,专注于JavaWeb开发的深度解析与实践。这本书详细介绍了如何在JavaWeb开发中运用主流框架,以达到最佳的技术组合,从而提高开发...
JavaWeb开发技术是现代...对于希望深入理解JavaWeb开发的人来说,这是一个宝贵的资源,可以从中学习到如何构建和组织一个完整的Web应用。通过分析这些类文件,可以了解JavaWeb应用的工作原理,提升自己的编程技能。
本书旨在帮助读者更好地理解和掌握JavaWEB相关的知识体系和技术框架,通过实践加深对JavaWEB开发的理解。 #### 二、JavaWEB基础概念 1. **Web应用程序**:运行在服务器上的程序,通过网络为客户端提供服务。 2. **...
本资源“JavaWeb开发典型模块大全源码”涵盖了从基础到高级的多个重要模块,提供了完整的源代码,适合学习者深入理解并实践JavaWeb开发技术。以下是这些源码所涵盖的一些关键知识点: 1. **Servlet与JSP**: Servlet...
JavaWeb 开发之路经验总结
教程包含了PDF课件和源码,使学习者能够理论结合实践,更深入地理解JavaWeb开发的核心概念。 1. **Servlet与JSP** Servlet是JavaWeb开发的基础,用于处理HTTP请求和响应。JSP(JavaServer Pages)则提供了更方便的...
本书旨在帮助开发者全面理解和掌握使用Tomcat进行JavaWeb应用程序的开发、部署及优化技巧。通过本书,读者可以深入学习到以下几个核心知识点: 1. **Tomcat简介**:Tomcat是Apache软件基金会的Jakarta项目中的一个...
毕业设计基于JAVAWEB开发的宠物商城系统项目源码毕业设计基于JAVAWEB开发的宠物商城系统项目源码毕业设计基于JAVAWEB开发的宠物商城系统项目源码毕业设计基于JAVAWEB开发的宠物商城系统项目源码毕业设计基于JAVAWEB...
通过这个项目,开发者可以深入理解和实践JavaWeb开发中的诸多技术,提升自己的专业技能。在实际学习过程中,除了理解代码实现,还应关注设计原则、最佳实践和常见问题的解决方案,这样才能真正从案例中受益。