#JSP JSP全稱是Java Server Pages,它和Servlet技術同樣,都是SUN公司定義的一種用於開發動態Web資源的技術。 JSP的編寫就像編寫HTML同樣簡單,可是與HTML不一樣的是,在JSP中,能夠編寫Java代碼,而且容許使用request、response等web開發經常使用對象,實現與瀏覽器的交互。html
demo:在JSP中輸出當前時間java
###JSP調用和運行原理web
- 當你訪問web服務器中的JavaWeb應用時,若是訪問的不是一個Servlet,那麼都會訪問一個默認的Servlet,由這個默認的Servlet來定位資源。當服務器發現你請求是一個JSP時,web容器會把 jsp 翻譯成一個 Servlet,而後運行這個Servlet,再將結果返回給客戶端。
- 翻譯 jsp 的過程是由Tomcat來完成的,生成的 Servlet源文件會保存在 Tomcat服務器的 work 文件夾中。
- 查看翻譯後的Servlet的源碼就會發現,這個類的父類繼承了HttpServlet
- 對於請求的處理,查看翻譯後的Servlet源碼(service方法)就會發現,在service方法中,輸出了咱們定義的html代碼,而且Java代碼也在這裏運行。
- 在運行 service 方法時,該方法內部定義了不少局部變量,根據生成 Java 代碼的位置就能夠得知,這些變量和對象,能夠直接在 Java 代碼中使用,無需去建立。
###JSP最佳實踐express
###JSP語法編程
<%= 變量或表達式 %>
,舉例:當前時間:<%= new java.util.Date() %>
。<% java代碼 %>
<% %>
之中的狀況<%! java 代碼 %>
<%-- 註釋信息 --%>
<%@ 指令 屬性名="值" %>
,舉例:<%@ page contentType="text/html;charset=utf-8"%>
language = "java"
,指定頁面所嵌用的語言是Javaextends = "package.class "
,指定翻譯後的Servlet的父類(不要修改)import = "{ package.class | pageckage.* }, ..."
,在java代碼中須要使用的包或類(自動導入的包:java.lang.* ; javax.servlet.* ; javax.servlet.jsp.* ; javax.servlet.http.* ;)
能夠在一條page指令的import屬性中引入多個類或包,其中的每一個包或類之間使用逗號分隔。 也能夠分開寫多條,每條導入一個包或類。瀏覽器
session="true/false"
,指定翻譯後的Servlet是否默認建立Session對象,默認值是truebuffer="none | 8KB | sizeKB"
,指定JSP的緩衝大小,默認8kb。(在使用out對象寫數據的時候,不是直接寫給客戶端的,而是寫入緩衝區,緩衝區滿了纔會寫到客戶端)autoFlush = "true | false "
,緩衝區滿了,是否自動刷新。默認爲trueisThreadSafe = "true | false "
,指定JSP是否線程安全的。true表示非線程安全,false表示線程安全errorPage = "relative_url"
,指定JSP的錯誤處理頁面
- errorPage屬性的設置必須使用相對路徑,若是以「/」開頭,表示相對於當前WEB應用程序的根目錄(不是站點根目錄),不然,表示相對於當前頁面。
- 有時候錯誤提示頁面不必定會顯示,緣由是錯誤信息量過小,沒有達到緩衝區輸出的值(1024字節)。能夠設置瀏覽器(不可取),也能夠增長信息量
- 能夠在web.xml文件中使用
<error-page>
元素爲整個WEB應用程序設置錯誤處理頁面,其中<exception-type>
子元素指定異常類的徹底限定名,<location>
元素指定以"/"開頭的錯誤處理頁面的路徑- 使用
<error-page>
配置時,還能夠根據錯誤代碼數字來配置<error-code>
,配置404,500等- JSP中的屬性配置,優先級大於web.xml的配置
isErrorPage = "true | false"
,指定JSP是否錯誤處理頁面,默認false。若是是錯誤處理頁面,在翻譯成Servlet時,就能夠獲取封裝好的異常對象contentType = "mimeType [ ; charset = characterSet]" 如: " text/html ; charset = "UTF-8"
,告訴jsp引擎,該jsp的類型以及編碼pageEncoding = "characterSet"
,指定整個jsp的編碼isELIgnored = "true | false"
,指定該JSP是否忽略EL表達式,默認false。pageEncoding = "characterSet"
,通知JSP引擎用什麼編碼來翻譯JSP文件contentType
,通知翻譯後的Servlet用什麼類型和編碼來設置response,好讓瀏覽器正常顯示(若是設置了pageEncoding,這個設置能夠不寫,可是若是使用記事本編寫JSP,就須要再次設置)<%@ include file="relativeURL"%>
,其中的file屬性用於指定被引入文件的路徑。路徑以「/」開頭,表示表明當前web應用