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的值設(shè)置上

          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信息設(shè)置為sessionId[0],就可以了。

           

          再服務(wù)器端的代碼時這樣:

           

           

          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>


          這樣再服務(wù)器端看到的session信息和session數(shù)據(jù)都在。

          比如兩次連接服務(wù)器端得到的結(jié)果都是:

          320C57C083E7F678ED14B8974732225E

          first_time:1311899387880

          320C57C083E7F678ED14B8974732225E

          first_time:1311899387880
          posted on 2011-08-11 09:22 墻頭草 閱讀(6190) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運專家
          主站蜘蛛池模板: 静乐县| 新建县| 冷水江市| 江津市| 新巴尔虎右旗| 航空| 卢龙县| 四子王旗| 会泽县| 肃宁县| 波密县| 榆林市| 吴川市| 大悟县| 漠河县| 六枝特区| 茂名市| 虎林市| 合水县| 蒙城县| 西贡区| 襄城县| 大庆市| 邵东县| 科技| 静安区| 丰都县| 彰化市| 峨边| 虎林市| 平阴县| 鹿邑县| 普安县| 府谷县| 白朗县| 林周县| 淮滨县| 昌邑市| 富裕县| 延边| 米泉市|