jsp与安卓客户端建立会话(利用session)

安卓应用常常遇到要保持用户登录状态的情况,这个时候就可以用session解决。客户端第一次访问服务器时,服务器端会自动给用户设置一个session值,这个值存在响应头的cookie中,客户端获取这个值后保存下来,再次访问服务器时把它添加到请求头中,服务器就能根据session的值识别用户的身份了。
用jsp写web应用的时候,session的处理非常简单,直接用session.setAttribute()设置session的属性,然后用session.getAttribute()获取已设置的属性;而前端网页则不需要考虑session的设置,有关session的操作都是自动完成的。这是因为一般的浏览器都支持cookie,会自动保存cookie并在下一次访问同一网站时把它提交过去。但是安卓端并没有自带这个“保存-提交”的功能,需要我们手动添加。
举一个简单的例子:

//服务器端jsp代码(test.jsp):
  <%
    String param = request.getParameter("param");
    if (param == null) param = "";
    if(session.isNew()){
        session.setAttribute("param",param);
    }
    else {
        out.print(session.getAttribute("param"));
    }
  %>

客户端第一次访问该页面时,服务器会设置session并添加属性“param”,再次访问时,则会根据用户的session把属性“param”的值打印出来。
以下是安卓客户端的代码:

String session;
//...
URL url = new URL("http://xxxxx?param=xxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5000);  

//重点
session = conn.getHeaderField("set-cookie"); //在响应头中获取session
if (session != null){
    session = session.substring(0,session.indexOf(";"));
}
else conn.addRequestProperty("Cookie",session); //在请求头里设置session

BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String str;
while((str = reader.readLine())!= null){
    sb.append(str);
}
result = sb.toString();
System.out.println(result);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值