posts - 241,  comments - 116,  trackbacks - 0
          通過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
          posted on 2011-08-11 09:22 墻頭草 閱讀(6194) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 孟州市| 奎屯市| 阿拉善盟| 吉林省| 嘉义市| 湘乡市| 辛集市| 静安区| 肇源县| 东平县| 巴东县| 读书| 图木舒克市| 钦州市| 兴仁县| 阆中市| 华坪县| 栖霞市| 涟水县| 乌什县| 葵青区| 大英县| 嫩江县| 安康市| 阜阳市| 湟中县| 诸暨市| 尖扎县| 祁门县| 元阳县| 虹口区| 乐山市| 平凉市| 诸城市| 饶平县| 偏关县| 东方市| 鸡泽县| 商都县| 丹江口市| 万年县|