Java客户端通过HttpURLConnection连接Web服务器的Session保存问题

通过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

猜你喜欢

转载自awen7916.iteye.com/blog/2215325
今日推荐