HttpServletRequest的getInputStream方法與getReader方法的區別

轉自:http://aguang520.iteye.com/blog/794627

通過前面的學習,知道HttpServletRequest的作用是接受客戶端傳遞的數據,今天跟張老師學習了HttpServletRequest的getInputStream方法與getReader方法以及他們的區別,根據不同情況選擇對他們的使用,在張老師的Java基礎視頻中的學習中就知道了字符集編碼的重要性,這次還有重定向時getWriter()方法對網頁字符集編碼的影響,下面是今天學習的總結。

HttpServletRequest的getInputStream方法與getReader方法
1.getInputStream方法返回一個代表實體內容的輸入流對象,類型爲javax.servlet.ServletInputStream,可以讀取HTTP請求消息中的實體內容。如果實體內容中包含二進制數據,那麼就只能使用此方法返回的輸入流對象來讀取。
2getReader方法用於返回一個代表實體內容的BufferReader對象,返回的BufferReader對象將實體內容中的字節數據按照請求消息中指定的字符集編碼轉換成文本字符串。
3,當請求消息中的實體內容全部是文本數據,並且在Servlet程序中也需要以文本方式來處理這些內容時,適於使用getReader方法。如果Servlet程序不對他們進行處理,而只是存儲到服務器的文件系統或數據庫中,這適於使用 
getInputStream方法。
4對於要處理文件上傳的Servlet程序來說,只能調用getInputStream方法返回的ServletInputStream字節流對象去讀取實體內容,而不能調用getReader方法。因爲從ServletInputStream流對象中讀取的數據是每個字節的原始內容,而從BufferedReader流對象中讀取的數據是原始的內容按某種編碼轉換成的字符文本。

重定向時getWriter()方法對網頁字符集編碼的影響
   1.調用者程序中沒有使用PrintWriter out=response.getWriter();語句,被調用者程序中設置的字符集編碼將覆蓋調用者程序中設置的字符集編碼。
    2.調用者程序中使用類了PrintWriter out=response.getWriter();語句,被調用者程序中設置的字符集編碼將不再起作用。因爲只有在第一次調用當前HttpServletResponse對象的getWriter方法之前,調用那些設置字符集編碼的方法(即調用者程序使用的setContentType()方法),纔會對PrintWriter對象起作用,而在getWriter方法之後調用將對PrintWriter對象無效。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章