1. 程式人生 > 實用技巧 >Servelet------14 response 響應物件獲取位元組流

Servelet------14 response 響應物件獲取位元組流

response響應物件也為我們提供了位元組輸出流,位元組輸出流可以輸出任意的資料,接下來我們來進行簡單的演示。

程式碼:

@WebServlet("/servlet01")
public class Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //獲取位元組輸出流
        ServletOutputStream os = response.getOutputStream();
        
//寫出資料 os.write("你好".getBytes()); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }

結果:

可以看出我們將字串轉變成位元組陣列後輸出瀏覽器,並沒有產生亂碼,說明瀏覽器和字串的獲取字元陣列的編解碼方式是相同的:

我們知道瀏覽器的編解碼格式在預設情況下適合作業系統預設相同的,在中國也就是gbk,其實字串的獲取位元組陣列的方法的編碼格式也是和當前作業系統的編解碼格式

相同的。

我們可以將字串獲得位元組陣列的編碼格式修改成utf-8,然後進行輸出,不出意外會亂碼:

@WebServlet("/servlet01")
public class Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //獲取位元組輸出流
        ServletOutputStream os = response.getOutputStream();
        
//寫出資料 os.write("你好".getBytes("utf-8")); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }

結果:

解決辦法就是告訴瀏覽器該怎麼解碼:

@WebServlet("/servlet01")
public class Servlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //獲取位元組輸出流
        ServletOutputStream os = response.getOutputStream();
        //寫出資料
        os.write("你好".getBytes("utf-8"));
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

結果: