通过Java客户端访问Web时,session信息的保存问题。
通过浏览器访问Web,浏览器自动管理Http连接的的session信息,如果通过Java连接,比如HttpURLConnection,就需要程序自己管理session。
我们希望java客户端能像浏览器一样,每次请求都维持一个session。
具体做法时这样:
客户端代码:
import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; public class Client { public static void main(String[] args) throws IOException { URL url = new URL("http://localhost:8080/lbs_server/print_session.jsp"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setDoOutput(true); //第二次运行的时候,把上次读取的session的值设置上 conn.setRequestProperty("Cookie", "JSESSIONID=320C57C083E7F678ED14B8974732225E"); PrintWriter out = new PrintWriter(conn.getOutputStream()); String str = "url = " + url; System.out.println(""); out.println(str); out.flush(); BufferedReader in = null; in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String destStr = ""; String inputLin = ""; while((inputLin = in.readLine()) != null ){ destStr += inputLin; } System.out.println(destStr); //第一次运行的时候,记录下来session的值 String session_value = conn.getHeaderField("Set-Cookie"); String[] sessionId = session_value.split(";"); System.out.println(sessionId[0]); System.out.println("Session Value = " + session_value); } }
由于只是测试代码,只是示例一下。
第一次连接的时候获取session信息,取出sessionId[0]。再次连接的时候,将session信息设置为sessionId[0],就可以了。
再服务器端的代码时这样:
print_session.jsp
<body> <% System.out.println(session.getId()); if(session.getAttribute("first_time") == null ) session.setAttribute("first_time",System.currentTimeMillis()); System.out.println("first_time:" + (Long)(session.getAttribute("first_time")) ); %> </body>
这样再服务器端看到的session信息和session数据都在。
比如两次连接服务器端得到的结果都是:
320C57C083E7F678ED14B8974732225E
first_time:1311899387880
320C57C083E7F678ED14B8974732225E
first_time:1311899387880
相关推荐
在Android开发中,当使用HttpURLConnection与Web服务器进行通信时,常常遇到的一个问题是无法正确保持session,导致每次请求都被服务器视为新的独立会话。这主要由于HTTP协议本身的无状态特性,以及Android客户端与...
在用户登录成功后,服务器会返回一个Session ID,通常作为Cookie返回给客户端。客户端在后续的请求中需要带上这个Session ID,以表明其身份。 - 在Java中,可以使用`javax.servlet.http.HttpSession`接口来处理...
本示例主要讲解如何在Android客户端获取PHP Web服务器端的Session,并进行登录验证。这个过程涵盖了Android网络请求、PHP服务器端处理以及MySQL数据库操作等关键环节。 首先,我们从Android客户端开始。在Android中...
这个Java客户端程序就是为了解决这个问题,它能自动化这个过程,让用户无需手动登录。 首先,我们需要理解网络认证的基本流程。大多数校园网的认证系统采用Web-based的HTTP POST请求,用户信息(如用户名和密码)被...
本资源包含一个完整的Android应用源码,展示了如何通过Android客户端与Web服务器进行交互,实现一个基本的登录功能。这个功能的实现涵盖了服务端、数据库以及Android客户端三个主要部分。下面将详细阐述这些部分的...
本示例中的"利用JSON,通过Android客户端访问web服务器,实现一个登录功能"是一个典型的客户端-服务器通信场景,其中JSON(JavaScript Object Notation)作为数据交换格式。这里我们将详细讲解这一过程中的关键知识...
在Android客户端与服务器交互的过程中,登录功能是应用的基础部分,它允许用户验证身份并访问受保护的资源。在这个案例中,我们将深入探讨如何使用Android Studio作为客户端开发工具,MyEclipse作为服务器端开发环境...
10. **状态维护**:在某些场景下,如登录状态,客户端可能需要保存服务器返回的Session ID或Token,以便后续请求携带这些信息,维持用户会话。 综上所述,Android客户端与服务器的数据交互是一个涉及网络连接、请求...
服务器会将Session ID与用户的会话数据关联,并在后续请求中通过Cookie回传Session ID。客户端只需保持这个Cookie,服务器就能识别出同一用户的不同请求。 为了安全,登录信息通常需要加密传输。HTTPS是一种安全的...
扫描后,微信客户端会向服务器发送一个确认信号,服务器会返回一个会话状态,我们需要保存这个状态以便后续通信。 接下来,我们需要不断地轮询微信服务器,检查登录状态是否已经完成。一旦登录成功,服务器会返回一...
8. **状态管理**:为了跟踪用户的登录状态和个性化信息,Android客户端可能需要保存服务器返回的Token或Session ID,并在后续请求中携带,以维持会话状态。 9. **错误处理**:网络请求可能会遇到各种问题,如网络...
- 对于需要登录才能访问的页面,可能需要先模拟登录过程,这通常涉及发送登录请求,处理验证码,保存登录后的Session或Cookie。 综上所述,“MonitorWeixinBrowser.java”可能包含了上述部分或全部功能,通过编写...
这里的代码可能是用于建立一个Java客户端,使用telnet协议连接到Domino服务器,进行数据查询或者交互操作。TelnetApp.java可能就是一个实现此类功能的基础类,它允许远程登录并执行命令。 其次,"java实现URL带参数...
Tomcat是一款开源且免费的Web服务器,主要支持Java EE规范中的Servlet容器。它是Apache软件基金会的Jakarta项目的一部分。Tomcat能够处理HTTP协议,使得Java应用程序(如JSP和Servlet)能够在Web上运行。安装完成后...
例如,服务器端创建ServerSocket监听特定端口,客户端通过Socket连接到服务器,然后双方可以通过输入/输出流进行数据交换。 多线程在Java网络编程中扮演着重要角色。由于网络通信往往涉及异步操作,如等待客户端...
Tomcat是一款开源且免费的Web服务器,它是Apache软件基金会下的Jakarta项目的一部分,专门用于运行Java应用程序,尤其是Servlet和JSP。Tomcat实现了Java EE(现在称为Jakarta EE)中的Web应用服务器部分,特别是...
2. **Servlet开发**:(day04)Servlet开发.ppt - Servlet是Java Web应用程序中的核心组件,用于处理来自客户端的请求并返回响应。这部分可能涉及Servlet生命周期、服务方法、过滤器、监听器等知识点。 3. **...
在Java Web开发中,实现QQ第三方登录是一种常见的用户授权方式,可以方便用户使用QQ账号快速注册...通过这个Demo,开发者可以学习到如何将QQ登录集成到Java Web应用中,提升用户体验,同时掌握OAuth2.0协议的实战应用。
// 打开连接,注意这里使用的是HttpsURLConnection,不是HttpURLConnection HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); // 设置连接参数,如超时时间 connection....
6. **HTTP缓存**:介绍HTTP缓存机制,如何在Java客户端实现缓存策略以提高性能。 7. **网络爬虫开发**:通过实例演示如何编写Java网络爬虫,处理网页解析(可能涉及HTML解析库如Jsoup)、数据提取、反爬虫策略等。 ...