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 墻頭草 閱讀(6190) 評論(0)  編輯  收藏

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


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 铜山县| 乌拉特中旗| 封开县| 虹口区| 临沭县| 太湖县| 绥化市| 怀集县| 郧西县| 汝阳县| 海伦市| 柳林县| 格尔木市| 二手房| 昭苏县| 佛坪县| 怀宁县| 北京市| 兴山县| 嘉义市| 方正县| 洛隆县| 科尔| 安达市| 卫辉市| 西青区| 双牌县| 庆城县| 大化| 长春市| 辽中县| 巴东县| 新宾| 榆中县| 辽源市| 正定县| 康平县| 嘉义市| 雷山县| 新化县| 成安县|