`
cjnetwork
  • 浏览: 179546 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

http session状态保持

阅读更多
项目中需要保持http的session状态,研究了一下http中保持会话的资料,总结如下
http协议是面向无连接的协议,一次请求,一次操作,然后就结束了,是没有状态的。然后在实际应

用中需要保存用户信息的时候,可以采用cookie和session这2种方式,cookie是保存在客户端,

session是保存在服务器端的,个人觉得session比较安全。网上看资料,说是session的实现,是服务

器在内存中开辟一段内存区域,返回一个索引,即生成一个sessionid,发送到客户端,在客户端下一

次发送请求的时候将sessionid回传,则服务器可以找到用户的信息,相当于实现了状态的保持,因此

客户端还是要保存这个sessionid,我测试了一下在返回的response结果集中,将cookie键值对保存,

在下次发送请求的时候,将这个键值对以cookie的方式发送,结果成果。测试的例子是ww.our023.com

,测试结果很成果,如果没有登录,则返回的是无效的结果,但是如果登录了,然后将cookie中的内

容在下一次的请求中发送,则相当于包sessionid一起发送过去,则session状态保持成功。在cookie

中的键值对名,关系到sessionid的键值对,命名不知道是正面来的,反正接受到的参数都回传就是了

,这个估计和具体的服务器有一定的关系,或是和开发后台web的语言有一定关系,在此不在研究。
例子如下:

public static void main(String[] args) throws Exception {
		
		String userName = "testyuce";
		String password = "123456";
		Map<String, String> loginData = new HashMap<String, String>();
		loginData.put("username", userName);
		loginData.put("password", password);
		loginData.put("radio", "31536000");
		loginData.put("referer", "/bbs");
		//登录地址
		Connection con = Jsoup.connect("http://www.our023.com/bbs/logging.php?action=login&loginsubmit=1");
		con.data(loginData);
		Response response = con.execute();
		Document doc = response.parse();
		
		//如果包含则代表返回的页面不是错误页面
		System.out.println("测试登录结果11111,是否包含testyuce:" + doc.html().contains("testyuce"));
//		System.out.println(doc.html());
		System.out.println("==============================================");
		
		Map<String, String> cookie = response.cookies();
		//搜索地址
		Connection conSearch = Jsoup.connect("http://www.our023.com/bbs/search.php?srchtxt=重庆&srchtype=title&searchsubmit=yes");
		//设置请求时的cookie值,其中包含了上一次请求时服务器放回的sessionid
		Iterator<Entry<String, String>> iterCookie = cookie.entrySet().iterator();
		while(iterCookie.hasNext()){
			Entry<String, String> entry = iterCookie.next();
			conSearch.cookie(entry.getKey(), entry.getValue());
		}
		doc = conSearch.get();
		//如果包含则代表返回的页面不是错误页面,则说明session状态保持成功
		System.out.println("测试搜索结果2222,是否包含testyuce:" + doc.html().contains("testyuce"));
		
		
		//如果熟悉html语言,可以看到返回的结果集合
//		System.out.println(doc.html());
		System.out.println("===============================================");
	}



注:测试中用到了解析html的开源包jsoup
分享到:
评论
9 楼 senhui19 2010-11-17  
嗯,看了下代码似乎是弄懂了点什么,算是学习了吧,httpsession
8 楼 lvff1314 2010-11-17  
是这样滴,任何servlet容器或其他app server,对于的session的管理都如出一辙,都是通过一个类似于map的hash结果去管理所有用户session,而对于sessionid在client与server之间的传递,取决于用户浏览器设置,大部分情况下是通过cookie去传递,而如果浏览器关闭了cookie功能的话,则将会通过url传参的方式传递给server。
很多集群服务器,都应该做的就是对于session的管理,主要涉及到对象的传递或复制等问题。
7 楼 fory 2010-11-17  
你们在说神马?
6 楼 kimmking 2010-11-16  
httpclient 也可以的、。
5 楼 Sunny_kaka 2010-11-16  
李军武 写道
http1.1以上是默认的连接方式为持久连接的。

你指的http1.1的持久连接应该只是在http连接建立后,需要请求多个资源,比如多个图片的时候,tcp/ip层的连接保持不断.

但是你请求多次,形象理解你刷新下页面.这两次连接是无状态的.
所以需要session,cookie这种技术来保持
4 楼 qiren83 2010-11-16  
有如HTMLPASER那样的 解析DOM 遍历DOM的功能不?
3 楼 李军武 2010-11-16  
http1.1以上是默认的连接方式为持久连接的。
2 楼 1927105 2010-11-16  
LZ。我记得
http是面向连接的吧,是无状态的,


1 楼 dabian_guo 2010-11-16  
呐尼? 这个是啥?

相关推荐

    使用session保持登陆状态

    每当客户端请求服务器时,都会将这个session ID一并发送回去,这样服务器就能识别出请求来自哪个用户,从而实现状态保持。 在"loginDemo"这个示例中,我们可能看到以下几个关键步骤: 1. **用户登录**:用户输入...

    Java 使用HttpClient保持SESSION状态

    7. **执行其他需要保持SESSION状态的请求**:现在,当我们创建新的`HttpGet`或`HttpPost`请求时,HttpClient会自动处理Cookie,保持SESSION状态。 ```java HttpGet otherRequest = new HttpGet(...

    java后台请求http并保持Session

    在Java编程中,后台请求HTTP并保持Session是一个常见的任务,特别是在需要访问受保护的Web资源时,例如登录后的网页数据。下面将详细讲解这个过程,包括GET和POST方法的使用,以及Session管理。 首先,我们需要了解...

    WebRequest保持Session的方法

    在Web应用程序中,Session通常用来在客户端和服务器之间保持状态。当用户登录后,服务器会为该用户创建一个Session,通过SessionID来识别用户。但是,使用`WebRequest`进行多条HTTP请求时,如果不采取特殊措施,...

    理解HTTP session原理及应用

    在实际应用中,session常用于实现用户登录状态的保持,购物车功能,个性化推荐等。例如,当用户登录后,服务器会将用户信息存入session,后续请求中通过session ID就能识别用户身份,从而提供个性化的页面显示。对于...

    session session session szsessdifn

    Session机制是服务器端存储用户特定信息的一种方式,它允许开发者在多个页面之间保持用户状态,解决了HTTP协议无状态的问题。"szsessdifn"可能是某种特定的Session变量名或函数,但在这里没有足够的上下文来详细解释...

    httpclient如何保持session会话模拟登录后的操作

    Session是服务器端用来跟踪用户状态的一种机制。在Web应用中,当用户登录后,服务器会为该用户创建一个session对象,并将用户的一些信息(如登录凭证)存储在session中。客户端通过一个称为session ID的唯一标识与...

    nginx+tomcat7+memcached session会话保持

    在构建高性能、高可用性的Web应用系统时,会话保持是一个关键环节,它涉及到用户登录状态、购物车信息等重要数据的持久化处理。本文将详细介绍如何在Nginx、Tomcat7和Memcached的环境下实现会话保持,确保用户在多台...

    django session完成状态保持的方法

    ### Django Session 完成状态保持的方法 #### 一、引言 HTTP 协议作为互联网上应用最为广泛的一种网络协议,其本质特点是无状态的。这意味着每次客户端与服务器之间的交互都是独立的,服务器不会保留任何关于之前的...

    Session详解(主要讲Session跟Cookic区别)

    Session机制通过为每个用户创建并维护一个唯一标识符(即Session ID)来实现状态保持。关键特性如下: - **唯一性**:每个Session ID对应一个特定的用户会话。 - **安全性**:因为Session数据存储在服务器端,所以...

    ASP_NET用户状态保持

    5. **Session**:Session状态在服务器端保持数据,为每个用户分配一个唯一的会话ID,通过这个ID在多个请求间获取数据。Session在服务器资源占用较大,不适用于大量并发用户。 6. **Application**:Application状态...

    Session详解

    #### HTTP协议与状态保持挑战 HTTP协议,作为互联网上应用最为广泛的通信协议之一,本质上是无状态的,意味着每次请求和响应都是独立的,不保留历史信息。这种设计简化了服务器的实现,但也带来了挑战,特别是在...

    利用JSP session对象保持住登录状态

    http协议本身是一种无状态的协议,也就是客户端连续发送的多个请求之间没有联系,下一次请求不关心上一次请求的状态。 而实际运用中却希望服务器能记住客户端请求的状态,比如在网上购物系统中,服务器端应该能够...

    NET的csharp的session丢失sessionid不一样

    - 如果上述方法仍然不能解决问题,可以考虑自定义Session状态提供程序。这涉及到创建一个新的类来实现`System.Web.SessionState.SessionStateStoreProviderBase`接口,并重写其中的一些方法以满足特定的需求。这种...

    一篇优秀Session讲解

    Session是一种用于维护客户端与服务器之间交互状态的技术,它能够跟踪用户的活动并保存用户数据,从而使得网站能够在多次请求之间保持一致的状态。下面将详细介绍Session的相关知识点。 #### 一、Session概念 1. *...

    session的用法

    2. **HTTP协议与状态保持** - **HTTP的无状态性**:HTTP协议是基于请求-响应模型的,每个请求都是独立的,不保留任何关于先前请求的信息。 - **Cookie的引入**:为了解决无状态问题,Cookie被设计出来,它将数据...

    Spring Session + redis实现session共享

    在现代Web应用开发中,session共享是一个至...通过将session数据存储在Redis中,我们可以轻松地扩展Web应用的服务器集群,同时保持用户状态的一致性。了解并熟练掌握这种技术对于构建高可用、可伸缩的Web服务至关重要。

    web开发中重要的概念之session

    Cookie是通过在客户端存储数据的方式,每次请求时都会将这些数据发送到服务器,从而实现一定程度的状态保持。然而,Cookie的大小有限,且安全性较低。相比之下,Session数据存储在服务器端,更安全且存储量较大。...

Global site tag (gtag.js) - Google Analytics