`

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

相关推荐

    ASP.NET教学讲义,完整章节

    5.8 Session—管理用户会话状态 93 5.9 计数器示例 96 5.10 Global.asax 98 5.11 使用Viewstate保持窗体状态 99 5.12 把视图状态用作数据存储 100 5.13 利用查询字符串传递数据 101 5.14 利用隐藏的窗体字段传递数据...

    java面试题

    答:sleep()是线程类的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但监控状态依然保持,到时候会自动恢复。 wait()是Object类的方法,对此对象调用了wait方法导致本线程放弃对象锁,进入等待锁定池...

    超级有影响力霸气的Java面试题大全文档

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    asp.net教学讲义

    5.11 使用Viewstate保持窗体状态 90 5.12 把视图状态用作数据存储 91 5.12.1 视图状态应用示例 92 5.13 利用查询字符串传递数据 92 5.14 利用隐藏的窗体字段传递数据 92 5.14 变量的作用域 93 第六章:站点设计 94 ...

    java 面试题 总结

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    KODExplorer 芒果云-资源管理器

    - 选中保持,选中后如果调整排序等等,保持选中状态。 - 上传文件选中当前。 - f5改为异步(加入mask loading) 优化文件夹打开体验 - 键盘按键选中文件 增加字符搜索定位功能(单个字符,增加到多个字符选中。两次...

    网站架构技术

    问题: 负载均衡情况下session状态的保持? 解决方案: 基于DNS的负载均衡 反向代理 ngix JK2 数据库的读写分离 问题: 读库与写库的数据同步 解决方案: 不同的数据库都有自己的数据库...

    Toad 使用快速入门

    解答DBA日常工作中80%的常见问题,覆盖2400多个主题 从网络到性能优化,从备份恢复到Error message,一应俱全 例子:遇到失效的存储过程怎么办? 4. 如何对存储过程进行Debug?  需要Toad单独的Debug Option...

    asp.net知识库

    ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题转换 ASP.NET2.0 ObjectDataSource的使用详解(1) ASP.NET2.0 ObjectDataSource的使用详解(2) TextDataSource(1) — ...

    Fourinone分布式并行计算四合一框架

    另外,基于Fourinone可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。  Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,...

    fourinone-3.04.25

    另外,基于Fourinone可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它...

    Fourinone分布式计算框架

    另外,基于FourInOne可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 FourInOne对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它...

    Discuz! X3.4 简体中文-PHP

    X3.3 的基础上,去除了云平台的相关代码,其他功能保持不变,如果您的论坛不需要云平台可以选择安装或更新到此版本。 Discuz! X3.4 主要更新功能为: 1、完善视频解析播放 2、HTTPS兼容性优化 3、修复各类已知BUG和...

    Discuz! X3.4 繁体中文-PHP

    开启内存缓存时,forum_forumfield 表没被缓存导致的主题分类消失、版块规则消失、访问权限无效等问题20、删除用户无法删除 用户记录表(home_doing)数据21、修复 默认关闭非安全请求升级,保证HTTP外域资源正常显示...

    C#编程经验技巧宝典

    C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 &lt;br&gt;1.1 Visual Studio开发环境安装与配置 2 &lt;br&gt;0001 安装Visual Studio 2005开发环境须知 2 &lt;br&gt;0002 配置合适的Visual Studio 2005...

Global site tag (gtag.js) - Google Analytics