jsp基礎知識(1),jsp基礎知識
1.JSP全稱是Java Server Pages,它和servle技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。
2.JSP技術也是一種動態web資源的開發技術
因為JSP技術允許在頁面中嵌套java代碼,以產生動態資料,並且web伺服器在執行jsp時,web伺服器會傳遞web開發相關的對象給jsp,jsp通過這些對象,可以與瀏覽器進行互動,所以jsp當然也是一種動態web資源開發技術。
3.JSP和Servlet的比較
本人是先學Servlet的,Servlet感覺就是在寫純粹的java代碼,而jsp中既可以寫java代碼又可以寫 指令碼語言。很大程度上jsp和servlet是很相似的,只不過jsp站的更高,將很多servlet的操作給封裝起來了。不管是JSP還是Servlet,雖然都可以用於開發動態web資源。但由於這2門技術各自的特點,在長期的軟體實踐中,人們逐漸把servlet作為web應用中的控制器組件來使用,而把JSP技術作為資料顯示模板來使用。
4.JSP的原理圖:
原理解釋:
(1)Web容器根據用戶端訪問的資源類別(Web容器會根據資源的第一行代碼確定),如果你訪問的是JSP資源,就交由JSP引擎處理如果訪問的是Servlet資源,就交由Servlet引擎處理
(2)如果是JSP資源,JSP引擎會將其翻譯成Servlet資源,傳入相關的對象,如果是靜態資源,以out.write()形式輸出,如果是動態資源,以out.print()形式輸出。(這個查看C:\apache-tomcat-7.0.22-windows-x86\apache-tomcat-7.0.22\work\Catalina\localhost下的對應工程檔案的原始碼就可以看出來)
(3)當JSP引擎在翻譯正確後,將其輸出給Servlet引擎,當作Servlet處理。
(4)如果再次訪問同一個jspname.jsp檔案,翻譯工作依然進行,Servlet引擎工作可以減化,所以這是為會麼第N次較第1次快的原因
5. JSP文法
(1)JSP模版元素
模版元素就是HTML中的靜態內容,即<body>,<table>,<form>等在html中用到的標籤
(2)JSP運算式
a>文法:<%="字串變數或運算式"%>
b>結束無分號
c>預設輸出到瀏覽器
(3)JSP指令碼片斷
a>文法:<% ...java代碼; %>
b>指令碼片斷中的注釋符號與java代碼一致
c>多個JSP指令碼片斷中定義的變數,本質是_jspService()方法中的局部變數,可以訪問
注意:JSP修改後,無需重新部署,直接重新整理,Web容器會自動比較新舊二個版本JSP
(4)JSP聲明
a>文法:<%! ...java代碼 %>
b>JSP聲明的變數或方法,會成為Servlet的執行個體變數或執行個體方法或普通方法
c>JSP指令碼片斷中不能定義局部方法,方法只能定義在JSP聲明中
5)JSP注釋
a>文法:<%-- 注釋的內容 --%>
b>對於HTML注釋來說,JSP引擎會將其翻譯成servlet內容,
對於JSP注釋來說,JSP引擎不會將其翻譯成servlet內容
所以綜合上述,對於注釋應該優先考慮用jsp的注釋方式。
c>注釋不能嵌套使用
6)JSP指令
a>指令是程式員控制JSP引擎做什麼的依據
b>有三類:
page
include
tablib
c>page指令的屬性有
language="指明JSP支援的語言,預設為java語言"
import="當前JSP頁面中,需要匯入的包,其中import可以寫多次"
session="true表示需要伺服器建立session/false不需要伺服器建立session",預設true
buffer="none|8kb|sizekb"JSP輸出使用的緩衝大小,預設8kb
autoFlush="true表示當緩衝滿時,web容器是自動重新整理到用戶端/false需要手工重新整理到用戶端",預設true
isThreadSafe="true表示web伺服器確保安全執行緒/false不確保安全執行緒",預設true
info="text"表示jsp的相關描述資訊,可以通過getServletInfo()取得該jsp的資訊
errorPage="當前jsp頁面出錯後,轉寄到的目標頁面"
isErrorPage="true"(當某個jsp頁面有該屬性時,web容器會自動建立exception對象
上述異常處理屬於局部異常處理
在web.xml檔案:
<error-page>
<error-code>500</error-code>
<location>/error_500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/error_500.jsp</location>
</error-page>
這個設定檔代碼說明了,當出現了代號為500的瀏覽器異常時, 此時頁面會跳轉到error_500.jsp的頁面中,如果出現NumberFormatException異常時,頁面也會跳轉到error_500.jsp上,至於具體跳轉到那個頁面上可以隨意的修改<location>的參數值就可,這種體現了在設定檔中處理異常的的方式,算是一種全域的異常處理。
如果全域中有code又有type,此時二者同時顯示
當全域和局部異常同時出現時,局部異常優先
a)JSP頁面的中文採用UTF-8方式編碼
b)JSP儲存時採用UTF-8方式編碼
c)指示瀏覽器以UTF-8方式查看
contentType="text/html;charset=UTF-8"
isELIgnored="false表法JSP引擎不忽略EL運算式語言/true表法JSP引擎忽略EL運算式語言"
jsp基礎知識
<%@ %> 這個屬於指令元素,它指定有關頁面的資訊。不如你要匯入一個JSTL庫的時候就要用到。如你要用一個EL的函數 fn:escapeXml() ,這是要聲明<%@ taglib prefix="fn" uri="java.sun.com/jsp/jstl/core"%>
<%! %>,<% %>是用來在JSP頁面中添加小段代碼的 比如Java代碼
<% %> 這個可以頁面中加入整個的代碼塊。
<%! %>這個是用來聲明的,這個不建議使用
還有一個<% = %>這個是用來添加一個運算式的 可以獲得其中的結果 比如<%= 1+1 %>
jsp基礎知識
這句不算jsp中的內容。
這是jsp輸出的內容,屬於html結構。
<form 是表單
action是動作
?act=up是提交的地址,假如你的網頁的是127.0.0.1
那麼這裡的提交地址便是127.0.0.1/?act=up
method是方式 post是代表post提交方式。除此之外,還有get提交方式。
get的提交方式是把參數放在url地址中,而post是放在http的header中。