1. 程式人生 > >Servlet解決輸出內容的亂碼問題

Servlet解決輸出內容的亂碼問題

Servlet執行的步驟

Servlet作為Web伺服器的補充功能在執行時需要受到Servlet容器的管理,其執行的流程如下:

  1. 瀏覽器依據IP建立與容器的連線
  2. 瀏覽器將請求資料打包
  3. 容器解析請求資料包,封裝request和response物件
  4. 容器依據請求資源路徑找到Servlet建立物件
  5. 容器將request和response物件作為引數傳入service方法,並呼叫
  6. 容器將響應資料打包發給瀏覽器
  7. 瀏覽器取出結果,生成頁面

解決輸出內容的亂碼問題

在service()方法中第一行的位置上新增如下程式碼

response.setContentType("text/html;charset=utf-8")

其中charset可以使用其他支援中文的字符集,如GBK。setContentType()有兩個作用:

  1. 通知容器,在呼叫out.println方法輸出時,使用指定的字符集
  2. 生成一個訊息頭(content-type),通知瀏覽器,伺服器返回的資料型別和字符集

使用該段程式碼修改預設的編碼方式時,一定要保證在呼叫print之前編寫,所以該段程式碼儘量放在service方法的第一行的位置。在charset之前使用的是分號隔開,如果寫錯,則會出現儲存檔案的介面,原因是瀏覽器不能識別訊息頭的值,於是讓使用者來處理