其中attr1和attr2表示指令中的屬性,通常我們將JSP指令寫在JSP文件的的最上方,但是這不是必須的。 在JSP文件中,任何指令都是可以重復(fù)的,例如在一個(gè)jsp頁(yè)面中可以存在三個(gè)page指令: ? <%@ page language=”java”%> ? <%@ page import=”java.util.*”%> ? <%@ page pageEncoding=”utf-8”%>"/> 九九国产手机视频在线观看,久久久久又大又湿又高潮,亚洲精品乱码久久久久蜜桃

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

全國(guó)咨詢/投訴熱線:400-618-4000

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

更新時(shí)間:2016年09月21日17時(shí)53分 來(lái)源:傳智播客JAVA培訓(xùn)學(xué)院 瀏覽次數(shù):

1.JSP指令

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

2.page指令

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

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

圖1-2 index.jsp頁(yè)面
(3)現(xiàn)在將該應(yīng)用發(fā)布到服務(wù)器中,然后啟動(dòng)服務(wù)器,在瀏覽器端訪問(wèn)index.jsp頁(yè)面,瀏覽器顯示結(jié)果如圖1-3所示:

圖1-3 瀏覽器顯示結(jié)果
由圖1-3可知,瀏覽器端并沒(méi)有出現(xiàn)亂碼,但是頁(yè)面的真實(shí)編碼和pageEncoding的值不一致為什么沒(méi)有出現(xiàn)亂碼呢?下面我們?cè)賮?lái)查看index.jsp頁(yè)面的真實(shí)編碼,如圖1-4所示:

圖1-4 真實(shí)編碼
由圖1-4可知,當(dāng)我們改變了pageEncoding屬性的值,頁(yè)面的真實(shí)編碼也會(huì)隨之改變,所以一般情況下出現(xiàn)亂碼不會(huì)是由pageEncoding屬性的設(shè)置導(dǎo)致的,但是如果選擇圖1-4中的【Other】單選框,那么對(duì)pageEncoding進(jìn)行設(shè)置就不會(huì)再使頁(yè)面的真實(shí)編碼隨之改變了。默認(rèn)情況下,page指令的pageEncoding的值是iso-8859-1,我們只需要將這個(gè)設(shè)置修改一下,那么以后新建的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()方法這里我們就不再多說(shuō),當(dāng)我們?cè)趈sp文件中提供了contentType屬性,那么jsp對(duì)應(yīng)的java文件中就會(huì)存在response.setContentType(“text/html;charset=ISO-8859-1”)這句代碼。
contentType屬性的默認(rèn)值就是“text/html; charset=ISO-8859-1”,但是我們知道iso-8859-1并不支持中文,所以我們需要將charset的值修改為“utf-8“。
2.3pageEncoding與contentType的區(qū)別與聯(lián)系
pageEncoding與contentType都是page指令的屬性,它們都是用來(lái)設(shè)置編碼,有如下聯(lián)系:
  • 如果這兩個(gè)屬性只提供了其中一個(gè),那么沒(méi)有提供的那個(gè)屬性的編碼值就是提供的這個(gè)屬性的編碼值,例如:在jsp頁(yè)面中設(shè)置了contentType=”text/html;charset=utf-8”,那么沒(méi)有設(shè)置的pageEncoding的值就為utf-8,反之亦然;
  • 如果兩個(gè)屬性都沒(méi)有提供,那么兩者的默認(rèn)編碼就是ISO-8859-1。
根據(jù)對(duì)這兩個(gè)屬性的講解,它們有如下區(qū)別:
  • pageEncoding是設(shè)置當(dāng)前頁(yè)面的編碼,該編碼是給服務(wù)器看的,可以讓服務(wù)器正確的將jsp文件翻譯成Java文件;
  • contentType有兩個(gè)作用:一是設(shè)置響應(yīng)字符流的編碼,二是設(shè)置Content-Type響應(yīng)頭,即通知瀏覽器使用什么編碼方式解碼響應(yīng)信息。

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://oisangadgets.com/javaee
0 分享到:
和我們?cè)诰€交談!