- JSP三大指令:
-
- page ------>最復雜的一個指令,屬性很多,常用的像import,language,pageEncoding等等
- include-------->靜態包含,一般在一個網站不同網頁上把相同的元素單獨寫在一個jsp中,其他頁面直接用該命令導入,能大大減少重復代碼提高訪問速度
- taglib --------->一般用於導入標簽庫,比如jsp的jstl標簽庫,使用之前必須有此標簽.
- JSP指令格式:
<%@page language="java" pageEncoding="utf-8"%>
以page指令為例,其他標簽類同,可以寫任意多個屬性,甚至不寫,習慣性放在jsp頁面最上方,但是並不是必須寫在頁頭,可以寫在jsp頁面任意位置.
- page常用屬性:
-
-
- pageEncoding: 指定當前jsp頁面的編碼,在服務器(如tomcat)要把jsp編譯成.java時需要使用pageEncoding
- contentType: 添加一個響應頭,比如contentType="text/html;charset=utf-8"
-
注意:如果這兩個標簽只設置了一個,另一個默認成已設置的那個,如果都沒設置,默認編碼是iso,
3.import: 用於導包,如import="java.util.*";可以出現多個import.
4.errorPage: 設置出錯時候的跳轉頁面,如errorPage="error.jsp"如果當前頁面出現異常,就轉發到error.jsp,注意是轉發,地址欄不會有變化.
這里拓展一下,web.xml配置錯誤頁面的知識,如果我們希望當出現比如404錯誤時,頁面能夠跳轉到我們自定義的jsp上去,應該這樣配置,在web.xml中添加:
<error-page>
<error-code>404</error-code>
<location>/myError404.jsp</location>
</error-page>
page中還有許多屬性,比如language,info,並沒有什么用處,至於其他的我貌似見都沒見過了,不再贅述.
- include指令: 靜態包含,把另一個頁面包含在當前頁面中
- 一個頁面包含另一個頁面,將兩個頁面合二為一,在什么時間合二為一的?頁面進行轉換Servlet的時候將兩者合二為一的。
這種方式有長處也有短處,第一點:雖然訪問兩個資源文件,但是只會生成一個Servlet,稱作靜態包含(只會生成一個Servlet,因為轉換的時候把其他網頁的信息加載進來了)。第二點:如果是Tomcat5.0,被包含頁面發生改變,包含頁面體現不出來。JavaEE的版本是隨着jsp版本和Servlet版本變化的,Tomcat版本越高,支持的Jsp和Servlet版本越高。Tomcat5.0以前被包含頁面發生改變,包含頁面體現不出來。//理解
所以在以前include指令一般不用,但是現在Tomcat6.0用,Tomcat6.0支持include指令。第三點:包含頁面可以訪問被包含頁面中的變量。在被包含頁面中聲明的變量在包含中頁面中是可以使用的。第四點:包含頁面無法向被包含頁面傳參。需要大量復用的東西需要專門生成一個頁面進行處理。
< %@ include file=”/b.jsp” %>
-
它是在jsp編譯成java文件時完成的,他們共同生成一個Java文件,一個.class文件, 引入的頁面與當前頁面融為一體,因為是編譯時期就和合並,所以 file的內容不能夠是變量.
在jsp中有一個動作標簽也是include,它指的是動態導入,在頁面請求時才合並,page的內容可以是變量.
<jsp:include page=”/b.jsp” flush=”true” />
- taglib: 導入標簽庫
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- prefix: 指定標簽庫在當前頁面中的前綴,由我們自定義即可.
- uri: 指定標簽庫的位置
