java 序列化的做用

public class Test {

    public static String requestUrl = "http://localhost/SpringMvc/test.do";
    public static void main(String[] args) {
        TestVo test = new TestVo();
        test.setName("baichuanyu");
        test.setAge(20);
        HttpURLConnection httpUrlConn = null;
        InputStream inputStream = null;
        InputStreamReader inputStreamReader = null;
        BufferedReader bufferedReader = null;
        ObjectOutputStream oos = null;
        StringBuffer buffer = new StringBuffer();
        try
        {
          URL url = new URL(requestUrl);
          httpUrlConn = (HttpURLConnection)url.openConnection();
          // 設置content_type=SERIALIZED_OBJECT
          // 若是不設此項,在傳送序列化對象時,當WEB服務默認的不是這種類型時可能拋java.io.EOFException
          httpUrlConn.setRequestProperty("Content-Type","application/x-java-serialized-object");
          httpUrlConn.setConnectTimeout(10000);
          httpUrlConn.setReadTimeout(10000);
          // 設置是否向httpUrlConn輸出,由於是post請求,參數要放在http正文內,所以須要設爲true, 默認狀況下是false
          httpUrlConn.setDoOutput(true);
          // 設置是否從httpUrlConn讀入,默認狀況下是true
          httpUrlConn.setDoInput(true);
          // 不使用緩存   
          httpUrlConn.setUseCaches(false);

          // 設置請求方式,默認是GET
          httpUrlConn.setRequestMethod("POST");
          httpUrlConn.connect();

          if (test != null)
          {
            // 此處getOutputStream會隱含的進行connect,即:如同調用上面的connect()方法,   
            // 因此在開發中不調用上述的connect()也能夠,不過建議最好顯式調用
            // write object(impl Serializable) using ObjectOutputStream
            oos = new ObjectOutputStream(httpUrlConn.getOutputStream());
            oos.writeObject(test);
            oos.flush();
            // outputStream不是一個網絡流,充其量是個字符串流,往裏面寫入的東西不會當即發送到網絡, 
            // 而是存在於內存緩衝區中,待outputStream流關閉時,根據輸入的內容生成http正文。因此這裏的close是必須的
            oos.close();
          }
          // 將返回的輸入流轉換成字符串
          // 不管是post仍是get,http請求實際上直到HttpURLConnection的getInputStream()這個函數裏面才正式發送出去
          inputStream = httpUrlConn.getInputStream();//注意,實際發送請求的代碼段就在這裏 
          inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
          bufferedReader = new BufferedReader(inputStreamReader);

          String str = null;
          while ((str = bufferedReader.readLine()) != null)
          {
            buffer.append(str);
          }
        }
        catch (Exception e)
        {
          System.out.println(e);
        }
        finally
        {
          try
          {
              bufferedReader.close();
              inputStreamReader.close();
              inputStream.close();
              oos.close();
            if (httpUrlConn != null)
            {
              httpUrlConn.disconnect();
            }
          }
          catch (Exception e)
          {
          }
        }
        
        
    }
}

網絡傳輸:經過推送改變網站中好比map中存儲的對象 java

@RequestMapping(value = "/test", method = RequestMethod.POST)  
    public void javaSerialize(HttpServletResponse response,HttpServletRequest request) {
        try {
            ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
            TestVo user = (TestVo) ois.readObject();
            System.out.println(user.getName()+":"+user.getAge());
            map.put("user", user);
            PrintWriter w = response.getWriter();
                    w.print("已收到");
                    w.flush();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } 
相關文章
相關標籤/搜索