瀏覽器訪問 JSP 或 Servlet 卻彈出下載對話框,而非渲染頁面,核心原因是響應 Content-Type 設置錯誤或缺失,導致瀏覽器無法識別為 HTML 文檔。本文給出 JSP 與 Servlet 兩種場景的標準修正代碼。
Content-Type 判斷內容類型Content-Type 會導致瀏覽器按二進制流處理,觸發下載在頁面最頂端(任何輸出前)添加 page 指令:
<%@ page contentType="text/html;charset=UTF-8" %>
text/html 告知瀏覽器為 HTML 文檔charset=UTF-8 指定字符編碼,同時解決中文顯示問題在輸出內容前(獲取 Writer/OutputStream 前)設置:
response.setContentType("text/html;charset=UTF-8");
或分兩步:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
text/html; charset=gb2312 缺少引號、分號位置錯誤response.setCharacterEncoding("UTF-8") 不會自動添加 text/htmlcontentType="text/html;charset=UTF-8" 及 pageEncoding="UTF-8"response.setContentType("text/html;charset=UTF-8")web.xml mime-mapping 正確瀏覽器開發者工具 Network 面板查看響應頭:
Content-Type: text/html;charset=UTF-8 → 正確渲染
Content-Type: application/octet-stream 或無 → 觸發下載
正確設置 MIME 類型,是 Web 應用正常運行的基礎配置之一。