其中attr1和attr2表示指令中的屬性,通常我們將JSP指令寫在JSP文件的的最上方,但是這不是必須的。 在JSP文件中,任何指令都是可以重復的,例如在一個jsp頁面中可以存在三個page指令: ? <%@ page language=”java”%> ? <%@ page import=”java.util.*”%> ? <%@ page pageEncoding=”utf-8”%>"/> 国产精品户外野外,榴莲视频大全在线观看免费,日本日本乱码伦视频在线

教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JAVA培訓之pageEncoding與contentType的區(qū)別

更新時間:2016年09月21日17時53分 來源:傳智播客JAVA培訓學院 瀏覽次數:

1.JSP指令

JSP中有三大指令,分別是以下三個:
  • page
  • include
  • taglib
其中這三個指令中,page是最復雜的,后面我們會詳細講解;include指令表示靜態(tài)包含,我們之前學習的請求包含屬于動態(tài)包含;taglib指令是用來導入標簽庫,后面會學習一些標簽庫,在這里只做簡單介紹。
JSP指令的格式如下:
<%@指令名 attr1=”” attr2=””%>
其中attr1和attr2表示指令中的屬性,通常我們將JSP指令寫在JSP文件的的最上方,但是這不是必須的。
在JSP文件中,任何指令都是可以重復的,例如在一個jsp頁面中可以存在三個page指令:
  • <%@ page language=”java”%>
  • <%@ page import=”java.util.*”%>
  • <%@ page pageEncoding=”utf-8”%>

2.page指令

page指令是最常用的指令,也是屬性最多的指令。并且它的這些屬性都是可選的屬性而不是必須的屬性,例如<%@page%>,沒有給出任何屬性也是可以的。
2.1pageEncoding屬性
在jsp文件中有如下page指令:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
其中pageEncoding屬性的值是UTF-8,該屬性的作用是:指定當前jsp頁面的編碼。這個編碼是給服務器看的,服務器需要知道當前頁面的編碼,否則服務器無法正確的把jsp翻譯成Java文件。所以說這個編碼只要和頁面的真實編碼保持一致,在瀏覽器端就不會出現亂碼??梢酝ㄟ^在myeclipse中,在jsp文件上點擊右鍵,選擇【Properties】選項查看和設置當前頁面的真實編碼。例如:
(1)在一個web工程中,當前index.jsp頁面的真實編碼是utf-8,如圖1-1所示:

圖1-1 頁面編碼
(2)圖1-1中,index.jsp頁面的真實編碼是utf-8,現在在index.jsp頁面中寫入中文“我是不是亂碼”,然后將頁面的page指令中的pageEncoding屬性的值設置為“gbk”,如圖1-2所示:

圖1-2 index.jsp頁面
(3)現在將該應用發(fā)布到服務器中,然后啟動服務器,在瀏覽器端訪問index.jsp頁面,瀏覽器顯示結果如圖1-3所示:

圖1-3 瀏覽器顯示結果
由圖1-3可知,瀏覽器端并沒有出現亂碼,但是頁面的真實編碼和pageEncoding的值不一致為什么沒有出現亂碼呢?下面我們再來查看index.jsp頁面的真實編碼,如圖1-4所示:

圖1-4 真實編碼
由圖1-4可知,當我們改變了pageEncoding屬性的值,頁面的真實編碼也會隨之改變,所以一般情況下出現亂碼不會是由pageEncoding屬性的設置導致的,但是如果選擇圖1-4中的【Other】單選框,那么對pageEncoding進行設置就不會再使頁面的真實編碼隨之改變了。默認情況下,page指令的pageEncoding的值是iso-8859-1,我們只需要將這個設置修改一下,那么以后新建的jsp文件中的pageEncoding的值就不再是iso-8859-1。
2.2contentType屬性
在jsp文件中有如下指令:
<%@page language="java" import="java.util.*"  contentType="text/html; charset=ISO-8859-1"%>
其中contentType屬性的作用等同于response.setContentType(“text/html;charset=ISO-8859-1”)的作用。response的setContentType()方法這里我們就不再多說,當我們在jsp文件中提供了contentType屬性,那么jsp對應的java文件中就會存在response.setContentType(“text/html;charset=ISO-8859-1”)這句代碼。
contentType屬性的默認值就是“text/html; charset=ISO-8859-1”,但是我們知道iso-8859-1并不支持中文,所以我們需要將charset的值修改為“utf-8“。
2.3pageEncoding與contentType的區(qū)別與聯系
pageEncoding與contentType都是page指令的屬性,它們都是用來設置編碼,有如下聯系:
  • 如果這兩個屬性只提供了其中一個,那么沒有提供的那個屬性的編碼值就是提供的這個屬性的編碼值,例如:在jsp頁面中設置了contentType=”text/html;charset=utf-8”,那么沒有設置的pageEncoding的值就為utf-8,反之亦然;
  • 如果兩個屬性都沒有提供,那么兩者的默認編碼就是ISO-8859-1。
根據對這兩個屬性的講解,它們有如下區(qū)別:
  • pageEncoding是設置當前頁面的編碼,該編碼是給服務器看的,可以讓服務器正確的將jsp文件翻譯成Java文件;
  • contentType有兩個作用:一是設置響應字符流的編碼,二是設置Content-Type響應頭,即通知瀏覽器使用什么編碼方式解碼響應信息。

本文版權歸傳智播客Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://metathetuscanyresort.com/javaee
0 分享到:
和我們在線交談!