web应用中的session和cookie机制相信大家已经再熟悉不过了,cookie是一种存在于客户端上的用于保存用户浏览数据的小文件。session存在于服务器中,可以用来区分用户和保存用户信息。session会根据客户端的请求给不同客户端分配一个唯一的sessionId,用来区分session。例如用户登录之后,给用户创建一个session,并在session中保存该用户的相关信息,即可以避免用户的id在网络上传输,又可以保证区分每一个用户。
web中实现session的机制有两种:
1.通过cookie来实现
所谓通过cookie来实现,说白了就是在创建了session之后,把sessionId写入到cookie文件中,之后用户在发送请求的时候,服务器会去cookie中拿session。
2.通过url重写来实现
如果用户禁用了cookie,第一种方法就行不通了。这时就会用到第二种方法。所谓url重写,其实意思就是把sessionid放入到请求的url之后,就是每一次把sessionid显示到url后面,带到服务器后,通过sessionId找到服务器中的session对象。
方法就是催对请求的url进行处理,response.encodeURL(url),使用这个方法,、
一是可以对url进行编码,就是把url中的中文转码成浏览器地址栏中%%什么的,如果url中没有中文,则什么也不干;
二就是我们说的,可以把sessionId加入到url中。
Android中的session机制
android中的session其实道理是一样的,只不过在处理方法上有所不同。理清一下思路:当客户端发送登录请求后,第一次肯定是不会有session的,到达服务器之后,服务器可以为这个特定的客户端创建session:
HttpSession session = request.getSession(true); //创建session
session.setAttribute("uid", user.getUid()); //session中放入id
上面true代表了如果已经创建了session了,则去找这个session,如果没有创建,就为其创建一个session,
第二句就是在该session中放入和该用户相关的信息。那么这个session就和这个用户一一对应,服务器就靠这个来识别用户身份。
其实前面服务器端和web应用都是一样的,但是在客户端:
因为android手机端在访问web服务器时,没有给http请求头部设置sessionID,而使用web浏览器作为客户端访问服务器时,在客户端每次发起请求的时候,都会将交互中的sessionID:JSESSIONID设置在Cookie头中携带过去,服务器根据这个sessionID获取对应的Session,而不是重新创建一个新Session(除了这个Session失效)。
以java.net.HttpURLConnection发起请求为例:
获取Cookie:
URL url = new URL(requrl);
HttpURLConnection con= (HttpURLConnection) url.openConnection();
// 取得sessionid.
String cookieval = con.getHeaderField("set-cookie");
String sessionid;
if(cookieval != null) {
sessionid = cookieval.substring(0, cookieval.indexOf(";"));
}
//sessionid值格式:JSESSIONID=AD5F5C9EEB16C71EC3725DBF209F6178,是键值对,不是单指值
发送设置cookie:
if(sessionid != null) {
con.setRequestProperty("cookie", sessionid);
}
这样的话就可以将服务器分配给客户端的sessionId取到了,在客户端发送请求的时候带上这个sessionid,服务器会根据这和sessionId自动搜索session,这样就保证了服务器和客户端在同一个会话中。
参考:http://blog.csdn.net/dacainiao007/article/details/9234585
http://my.oschina.net/janson2013/blog/111050
分享到:
相关推荐
在Android开发中,获取Web服务器端的Session并进行登录验证是一项常见的任务,特别是在构建混合式应用或者需要与Web服务紧密交互的应用中。本篇将详细阐述这个过程中的关键知识点。 一、理解Session Session是Web...
在Android开发中,当使用HttpURLConnection与Web服务器进行通信时,常常遇到的一个问题是无法正确保持session,导致每次请求都被服务器视为新的独立会话。这主要由于HTTP协议本身的无状态特性,以及Android客户端与...
当用户登录成功后,服务器会在内存中创建一个与用户相关的session对象,里面存储用户的登录信息。session通过一个唯一的session ID来标识,这个ID会被发送回客户端(通常是通过cookie),以便后续请求时客户端能够...
总结起来,SharePreferences是Android开发中存储轻量级偏好设置的重要工具,而JavaEE的session则是Web应用中实现会话跟踪的核心机制。理解并熟练掌握这两种技术,对于进行Android和JavaEE开发至关重要。通过阅读博文...
本话题主要讨论如何在Android应用中获取并使用Web服务器端的Session来实现用户登录验证。Web服务器通常使用Session来跟踪用户的登录状态,而Android客户端需要适当地处理Session ID的传递,以保持会话的有效性。 ...
Session是Web应用程序中用于存储用户特定信息的一种机制,通常在服务器端保存。在ASP.NET中,Session是默认开启的,可以通过Session ID来唯一标识一个用户的会话。 以下是如何在Android客户端和ASP.NET服务端实现...
SharedPreferences提供了一种轻量级的键值对存储机制,适合保存用户的登录状态等非敏感信息。在用户成功登录后,我们将Session ID或Token保存到SharedPreferences中,例如: ```java SharedPreferences.Editor ...
总的来说,这个案例涵盖了Android应用中用户管理的核心功能,通过学习和实践,开发者可以深入理解Android UI设计、网络通信、数据存储以及安全性等方面的知识。对于初学者来说,这是一个很好的起点;对于有经验的...
在Android开发中,图片的上传和下载是常见的功能需求,特别是在社交、电商或者任何涉及到用户交互的应用中。本文将详细讲解如何在Android中实现图片的选取、上传至服务器以及从服务器下载图片,并将其存储到MySQL...
Hibernate的Session接口用于执行CRUD操作,例如,将接收到的文字信息保存到指定的表中。 8. **DB2数据库**:DB2是一款企业级的关系型数据库管理系统,支持多种平台。在SSH框架中,通过Hibernate的配置,我们可以...
1. **理解Session机制**: Session是一种服务器端存储用户状态的技术。当用户登录Web应用后,服务器会创建一个Session,并将用户的登录信息存储在该Session中。为了标识每个用户,服务器会给每个Session分配一个...
- 12306服务器返回的数据通常是JSON格式,使用Gson或Jackson库进行解析,获取登录结果和Session ID等关键信息。 5. **处理响应**: - 分析服务器返回的状态码和消息,判断登录是否成功。成功则保存Session ID,...
在Android开发中,Cookie是一种非常重要的机制,它用于在客户端(比如移动设备上的应用程序)和服务器之间维护状态信息。Cookie最初被设计为Web浏览器的一种功能,但随着时间的推移,它也被广泛应用于移动应用,特别...
3. 会话管理:登录成功后,生成Session或Token,保存在SharedPreferences中,后续请求时携带以验证用户身份。 【网络通信】 1. 如果音乐资源在线,需使用HttpURLConnection或OkHttp等库进行网络请求,下载音乐文件...
在用户登录后,服务器通常会在服务器端创建一个Session对象,存储用户的登录信息,然后将Session ID返回给客户端,客户端将其保存在Cookie中。后续的请求,客户端都会携带这个Session ID,服务器通过这个ID找到对应...
在本文中,我们将深入探讨如何使用Java在Android平台上实现模拟登录知乎并抓取用户信息的过程。这个过程涉及网络请求、HTTP协议、数据解析以及JSON理解等多个关键知识点。 首先,我们需要了解的是Android的网络访问...
SharedPreferences提供了一个轻量级的键值对存储机制,适合保存用户的配置信息或简单数据,如登录状态和用户ID。 **SharedPreferences的使用步骤:** 1. 获取SharedPreferences实例:通常在需要使用...
我们需要将这些信息保存在Android的SharedPreferences或应用的内部存储中,以便后续请求时能再次发送给服务器,维持登录状态。 5. **用户界面**:在Android Studio中,使用XML布局文件设计登录界面,包括输入框、...
同时,为了优化用户体验,可以实现进度条或通知机制,让用户了解图片上传的状态。 总的来说,这个“Android C/S结构代码”项目展示了如何利用Apache Mina在Android应用中实现C/S架构,特别是图片的传输。通过学习这...
在Android应用开发中,"记住密码"和"自动登录"功能是提高用户体验的重要特性,而"注销"则是保障用户安全的必要操作。本篇将详细讲解如何在Android中实现这些功能,以及涉及到的相关知识点。 首先,我们要理解...