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)  編輯  收藏

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


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 丰原市| 鞍山市| 定兴县| 潮安县| 伽师县| 辽宁省| 马鞍山市| 宜兰市| 波密县| 万全县| 梁山县| 海城市| 卓资县| 宝兴县| 梁河县| 进贤县| 顺昌县| 平和县| 定襄县| 黄大仙区| 焉耆| 大渡口区| 融水| 建昌县| 大洼县| 元谋县| 五家渠市| 武穴市| 常山县| 通江县| 蓝田县| 怀远县| 措美县| 淳安县| 吉木萨尔县| 开阳县| 崇文区| 醴陵市| 防城港市| 嘉峪关市| 二连浩特市|