`

主题:http session状态保持

    博客分类:
  • web
阅读更多
项目中需要保持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的语言有一定关系,在此不在研究。
例子如下:

Java代码

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

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
分享到:
评论

相关推荐

    使用session保持登陆状态

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

    javaweb作业jsp内置对象作业:使用session完成简单购物车功能

    首先,`session`对象是HTTP协议无状态特性的一个解决方案,它可以存储用户会话期间的信息。在用户每次请求新页面时,服务器可以通过`session`对象识别同一用户,从而保留购物车的状态。在JSP中,我们通过`session....

    Session&Cookie;.rar

    它们主要用于在HTTP协议无状态的特性下,保持用户的会话信息,实现用户在不同页面间的个性化体验和数据跟踪。下面将详细介绍这两种机制以及它们在PHP中的应用。 1. **Session**: - Session是一种服务器端存储用户...

    session 失效

    在IT行业中,Session是Web应用程序中用于保持用户状态的关键机制。标题“session失效”提示我们,这个话题将围绕用户在使用应用过程中Session突然丢失或无法正常工作的问题展开。描述中的博文链接指向了一篇关于该...

    session之用户交互间隔&&session持久化

    根据给定文件的信息,本文将围绕“Session 用户交互间隔与 Session 持久化”这一主题进行深入探讨,包括 Session 的基本概念、Tomcat 中 Session 的管理方式、Session 的持久化机制以及用户交互间隔等内容。...

    Session实现用户存储

    在Web开发中,Session是一种非常重要的技术,用于在服务器端保持用户的状态信息。"Session实现用户存储"这个主题主要涉及到用户登录、购物车存储以及页面显示等关键环节。接下来,我们将详细探讨Session的工作原理,...

    session共享

    "session共享"这个主题涉及到如何在多个服务器之间同步用户的会话状态,以确保用户在切换服务器时仍能保持登录状态和其他相关数据。这里我们主要讨论的是利用JRedis库在Java环境下,基于JDK8和Tomcat8实现的Redis来...

    PHP实现多服务器session共享之memcache共享.rar

    "PHP实现多服务器session共享之memcache共享"的主题着重于如何在多台服务器之间有效地存储和同步用户的session数据,以确保用户在不同服务器间的会话状态能够保持一致。本文将深入探讨这一主题,并围绕相关知识点...

    session 作用域

    3. **个性化设置**:用户自定义的主题、语言设置等可以保存在session中,以便在用户浏览不同页面时保持一致性。 4. **临时记录信息**:在处理表单提交时,如果需要分步骤完成,可以将中间结果暂存到session,便于在...

    Meteor Session demo

    Session是Meteor提供的一种在浏览器端存储数据的全局变量,用于在用户会话期间保持数据的状态。 在描述中提到的博客文章 "http://blog.csdn.net/a6383277/article/details/23421611" 是一个详细教程,可能涵盖了...

    jboss session 复制二

    当用户在多个页面间导航时,服务器需要保持用户的登录状态、购物车信息等,这时就会用到Session。在分布式环境中,如JBoss应用服务器集群,确保Session的复制和一致性就变得尤为重要。"JBoss session 复制二"这个...

    改进基于filter的远程分布式session存储

    Session是Web应用程序中用于跟踪用户状态的一种机制,通常存储在服务器端,以便在用户的不同请求之间保持其数据。然而,在大型分布式系统中,单一服务器的session存储可能无法满足需求,这时就需要引入远程分布式...

    cookie保持登陆状态

    "Cookie保持登录状态"这一主题涉及到HTTP协议、客户端存储机制以及安全性的多个方面。Cookie是实现这一功能的关键技术,它是由服务器发送到用户浏览器并存储在本地的一种小数据块,用于在后续的请求中向服务器提供...

    Java中设置session的详细解释

    2. HTTP协议与状态保持: HTTP协议的无状态特性使得服务器无法直接识别连续的请求是否来自同一个用户。为了实现状态保持,Cookie和Session机制应运而生。Cookie是在客户端保存信息的方式,而Session则是在服务器端...

    session统计在线人数.rar

    "session统计在线人数"这个标题明确指出了主题,即使用Java的session机制来实时监控和计算网站上的在线用户数量。这通常用于实时报告,例如网站流量分析、用户行为监测或广告投放优化。 **描述解析**: "简单测试,...

    session和cookie的区别

    - **无状态HTTP协议下的会话管理**:在HTTP这种无状态的协议下,Session使得服务器能够“记住”用户,从而实现跨页面的会话管理。 - **存储大量数据**:与Cookie相比,Session可以在服务器端存储更多、更复杂的数据...

    cookie机制和session机制的区别

    在现代网络应用中,服务器端与客户端之间的状态保持是至关重要的,尤其是在无状态的HTTP协议下。Cookie机制与Session机制是两种常用的状态管理方式,它们各自拥有独特的功能与应用场景,对于理解两者之间的区别与...

    PHP_实现多服务器共享_SESSION_数据.rar

    "PHP_实现多服务器共享_SESSION_数据"的主题聚焦于如何在多台PHP服务器之间有效地共享SESSION数据,以便用户在不同服务器间切换时仍能保持登录状态和其他个性化设置。这涉及到网络架构、会话管理以及数据存储等多个...

    IFrame中Session丢失的解决办法

    Session是Web应用中用于存储用户特定信息的一种机制,它允许开发者在用户的会话期间保持状态,即使用户在不同的页面之间跳转,这些信息也能被保留下来。然而,在IFrame(Inline Frame)环境中,Session的管理变得...

    实现session身份认证机制

    `session`身份认证机制是常用的一种方法,它用于在用户登录后维护用户的会话状态,确保用户在多个请求之间保持登录状态。在这个主题中,我们将深入探讨如何使用Node.js的Express框架以及cookie来实现session身份认证...

Global site tag (gtag.js) - Google Analytics