- 浏览: 590509 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zhanghao1785:
jQuery jqGrid中ColModel的参数大全 -
haiyangyiba:
在实际应用中,回车提交一般需要注意的是,多次回车之间的间隔,换 ...
回车自动提交 -
fengkuangxiao6:
快捷键能写的这么详细,太棒了!
Eclipse中10个最有用的快捷键组合 -
Frank_Sun:
我的jdk版本是1.6.0.29,在finally中加retu ...
try catch finally与return的执行顺序 -
jueyue:
这个注解可以搞吗,感觉还不如放在前台
struts2校验(二):声明式验证(基于xml配置验证)(1)
一.http的基本原理:
HTTP协议的工作原理主要包括四个步骤
图1 HTTP协议工作原理
(1)连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。( 客户端-----通过socket建立连接-----服务器)
(2)请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径/文件名 HTTP/1。其中,文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。
(3)应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。例:假设客户机与www.mycompany.com:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为www.mycompany.com的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。其中,常用的HTTP头信息如下。
HTTP 1.0 200 Ok:这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码"200 OK"表示请求完成。
MIME_Version:1.0:它指示MIME类型的版本。
content_type:类型:这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
content_length:长度值:它指示HTTP体信息的长度(以字节为单位)。
(4)关闭连接 :当应答结束后,Web浏览器与Web服务器必须断开,以保证其他Web浏览器能够与Web服务器建立连接。
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例
二.http的特点
1)支持客户/服务器模式。(c/s模式)
2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得 HTTP服务器的程序规模小,因而通信速度很快。
3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
三.cookie和session解决http的无状态的问题
两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session
由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。
Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从:[系统盘]:\Documents and Settings\[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。
(理解:cookie的创建时间在服务器响应后,存放信息是服务器发来的超文本和个人信息还有sessionId)
cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。
会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘中的cookie可以在不同浏览器间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式
Cookie支持跨域名访问,例如将domain属性设置为“.helloweenvsfei.com”,则以“.helloweenvsfei.com”为后缀的所有域名均可以访问该Cookie。跨域名Cookie现在被广泛用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
生成Cookie对象:
java.util.Date date = new java.util.Date();
Cookie c = new Cookie("lastVisited",date.toString());
前面一个参数是key,后面一个参数是value值。
设定Cookie的有效期:
c.setMaxAge(60*60*24);//单位为毫秒
Cookie的路径与域名:
c.setPath("/");
c.setDomain(".v512.com");
发送Cookie对象:
response.addCookie(c);
读取Cookie:
Cookie [] cookies=request.getCookies();
Cookie c = null;
if(cookies!= null)
{
for(int i=0;i<cookies.length;i++)
{
c = cookies[i];
out.println("cookie name:"+c.getName()+"<br>");
out.println("cookie value:"+c.getValue()+"<br>");
}
}
·修改Cookie:
Cookie [] cookies=request.getCookies();
Cookie c = null;
}
·删除Cookie:
即把Cookie的失效时间设置为0即可。
·Cookie文本信息的大小和数量有限制。以明文保存,没有任何加密措施。
for(int i=0;i<cookies.length;i++)
{
c = cookies[i];
if(c.getName().equals("lastVisited"))
{
c.setValue("2010-10-1");
c.setMaxAge(6000);
response.addCookie(c);
}
}
要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。 正式这样一个过程,用户的状态也就得以保持了。
综述:HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了
四、cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session,将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE
4、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
5.session需要借助cookie才能正常工作。如果客户端完全禁止cookie,session将失效。
6.session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
7.session调用了 session.invalidate()方法或者前后两次请求超出了session指定的生命周期时间,Session会销毁,否则在用户会话结束后就会关闭了。但若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。保存在硬盘里的,可以长期保存
8.session保存在服务器,客户端不知道其中的信息;cookie保存在客户端,服务器能够知道其中的信息。
9.Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
五、session机制
一个唯一的标识用于 会话
过期机制
六、HttpSession是Java平台对session机制的实现规范
cookie
httpssionListener
web容器(Jboss,tomcat,Jetty,weblogic...)
七、容器实现HTTPsession面临的问题
集群环境下共享困难
非持久,吃内存
发表评论
-
回车自动提交
2014-06-10 16:08 1234方法一:此页面的所有输入框回车自动提交 //添加回车确定查 ... -
点击查询按钮后,展示数据加载进度,防止用户多次提交
2014-02-17 16:30 1603需要引入 jquery.blockUI.js $.block ... -
( 转载尚不知道是否可行)Html限制文件上传格式
2014-02-14 17:23 941经常在网页的上传文件时要进行文件格式的限制,一方面是业务的原因 ... -
js 的 typeof 的用法
2014-02-14 10:56 822typeof 可以用来检测给定变量的数据类型,可能的返回值: ... -
js 的 typeof 的用法
2014-02-14 10:56 1typeof 可以用来检测给定变量的数据类型,可能的返回值: ... -
js 的 typeof 的用法
2014-02-14 10:56 1typeof 可以用来检测给定变量的数据类型,可能的返回值: ... -
css:文字溢出的部分隐藏并用省略号代替
2013-12-10 10:12 1088<style type="text/css&q ... -
表数据滚动时候,实现表头固定
2013-12-10 09:51 1488实现表头固定的样式:<tr style=" ... -
限制文本框的内容不允许copy
2013-12-10 09:40 1168<script> $(" ... -
简单按钮 radio checkbox使用
2013-10-11 18:57 1015checkbox aa.jsp <in ... -
request与response的作用
2013-02-28 11:05 1133Request对象:为脚本提供了当客户端请求一个页面或者传递一 ... -
JS里获取当前的年份以及该年的前两年的年份 并以下拉框形式将3个年份展现在JSP页面上
2013-02-25 11:37 7706<script> <div > ... -
设置form表单input 属性不提交
2013-02-01 00:39 0<div class="grid_4" ... -
$(document).ready()和window.onload的区别
2012-12-26 11:17 1346Jquery中$(document).ready()的作用类似 ... -
URL转码escape() encodeURI() encodeURIComponent()
2012-12-24 14:21 2462js对文字进行编码涉及3个函数:escape,encodeUR ... -
jQuery学习笔记--JqGrid相关操作 方法列表
2012-12-11 11:08 6433JqGrid相关操作备忘 方法列表 特别推荐:怎样获取某一方 ... -
jqgrid--frozen Columns
2012-11-20 17:47 8124jqgrid在4.1.2以前的版本里不支持frozenColu ... -
struts2的s:iterator详解
2012-10-08 15:41 1312详解 struts2的s:iterator 可以遍历 数据栈里 ... -
把get请求改为post请求
2012-09-11 11:31 2624function searchRentalHouseInfo( ... -
CSS颜色代码
2012-07-09 14:15 3CSS颜色代码常用的颜色 ...
相关推荐
HTTP 协议简介及其工作原理 HTTP 协议简介 超文本传输协议(HTTP)是万维网应用层的协议,由两个程序实现:一个是客户端程序(一般称为浏览器),另一个是服务器(常称 Web 服务器)。这两个通常运行在不同的主机...
了解JSP工作原理 JSP(Java Server Pages)是一种服务器端的WEB程序开发技术,由Sun公司发布,具有跨平台、通用性好、安全可靠等特点。JSP是基于Java的,页面程序由HTML或XML标记和JSP脚本共同组成,文件以“ .jsp...
### JSP工作原理详解 #### 一、JSP的基本概念 JSP(JavaServer Pages)是一种基于Java技术的Web开发技术,它允许开发者在HTML页面中嵌入Java代码,从而实现动态网页的功能。JSP技术使得开发人员能够在静态网页的...
### HTTP协议和WEB服务器工作原理 #### 一、HTTP协议详解 HTTP协议,即超文本传输协议(HyperText Transfer Protocol),是互联网应用最为广泛的一种网络协议。它是一种用于分布式、协作式和超媒体信息系统的应用层...
HTTP(HyperText Transfer Protocol),即超文本传输协议,是浏览器...压缩包文档中描述的是HTTP协议的基本概念和特点、HTTP协议的工作原理、HTTP协议的版本、HTTP与HTTPS区别、HTTP协议的应用、HTTP协议的发展及总结。
### 超文本传输协议(HTTP)工作原理详解 #### 一、超文本传输协议概述 **超文本传输协议(HTTP)**是互联网上最常用的一种网络协议,它定义了客户端(通常是用户的Web浏览器)与服务器之间如何进行交互,以获取、...
每种 VS Type 都有其特点和应用场景。 七、Performance L4 Performance L4 是一种高性能的虚拟服务器类型,主要用于负载均衡和流量管理。它可以实现硬件加速和 Syn Cookie 攻击防护。 八、Syn Cookie 攻击防护 ...
ASP的工作流程如下: 1. 用户在浏览器中输入一个ASP页面的URL。 2. 浏览器向服务器发送HTTP请求。 3. 服务器上的IIS(Internet Information Services)或PWS(Personal Web Server)接收到请求,启动ASP引擎解析并...
通过了解HTTP的工作原理、特点及其改进机制,我们可以更好地理解互联网数据传输背后的逻辑,这对于网络开发人员和运维工程师来说都是必不可少的知识。随着技术的不断进步,HTTP协议也在不断地演进和发展,未来我们还...
实际上,市场上还有其他多款优秀的浏览器,如Google Chrome、Apple Safari等,它们各自具有不同的特点和优势。未来,随着技术的发展,浏览器的功能和性能还将不断进步,为用户提供更好的上网体验。
SSM 框架原理分析 SSM 框架是当前 Java Web ...SSM 框架的三个原理分别是 Spring 框架、SpringMVC 框架和 MyBatis 框架,每个框架都有其特点和优势。只有将三个框架组合起来,才能形成一个完整的 Java Web 应用程序。
本文以Jigsaw为例,详细介绍了Http Proxy的工作原理和实现方法,包括Jigsaw配置为代理服务器的过程、网络资源的封装方式、Http通讯协议的具体实现、Socket及ServerSocket的应用,以及线程机制的管理与实现。...
通过本篇文章的学习,我们可以了解到AJAX的基本概念、工作原理以及如何使用XMLHttpRequest对象发起GET和POST请求。掌握了这些基础知识后,可以进一步探索如何利用AJAX创建更高效、更友好的Web应用程序。
### Struts2的工作机制原理分析及实例整理 #### 一、概述 Struts2作为一款流行的Java Web开发框架,其设计理念和技术实现相比Struts1.x有着显著的不同。尽管两者名称相似,但从架构到实现方式,Struts2都有了质的...
### 现代浏览器的工作原理 #### 浏览器概览与重要性 浏览器作为互联网时代最为普及的应用软件之一,其重要性不言而喻。无论是日常的信息浏览、在线购物还是远程办公,几乎所有的在线活动都需要通过浏览器来进行。...
这三种交换机的工作原理各有特点,但都旨在提高网络通信的效率和准确性。 1. 二层交换机工作原理: 二层交换机主要在OSI模型的数据链路层工作,它依赖MAC地址来决定数据包的转发路径。当交换机接收到数据包,它会...
通过对Tomcat工作原理的研究,我们可以看到其强大的功能和灵活性。无论是对于希望深入理解其内部机制的技术人员,还是对于想要优化和自定义Tomcat配置的开发者来说,《HowTomcatWorks》都是一本不可或缺的指南。通过...
HTTP协议交互特点和不足 - **特点**: - 请求/响应模式。 - 支持多种数据类型。 - **不足**: - 无状态性,需要额外机制保持会话状态。 - 安全性较弱,容易受到攻击。 #### 28. 字符型邮件与MIME - **字符型...