1、什麼是JSP?html
HTML+Java代碼+jsp標籤=jsp。java
在靜態頁面上添加動態信息就能夠了,若是是Servlet還須要一行一行的輸出。服務器
一般在前臺開發人員給出靜態頁面後,後臺開發人員只須要在靜態頁面上添加信息便可,而不用再使用Sevlet一行一行的去輸出了。jsp
2、JSP的真身:Servletide
當客戶請求的是JSP頁面的時候,服務器會查看JSP對應的Servlet是否存在,若是存在,那麼直接調用Sevlet的service()方法來處理請求。若是不存在,那麼服務器會先把JSP編譯成.java文件,而後再把.java文件編譯成.class文件,而後調用service()方法。當這個jsp頁面,第二次處理請求時,就直接調用真身的sercie()方法了。spa
JSP是servlet,JSP與咱們編寫的Servlet有什麼不一樣呢?一般咱們編寫的Servlet就不要輸出HTML代碼了,而是轉發到JSP頁面。htm
即Servlet再也不負責顯示頁面,而由JSP來完成。Servlet專一於控制層的內容。blog
在"真身"中,全部的靜態內容會被輸出。例如<html>是靜態內容,它對應"真身"中的out.write("<html>");ip
3、JSP的腳本元素
ci
JSP中的Java代碼塊就是最多見的動態信息,它分爲三種:
<%...%>:代碼片斷。代碼片斷會原模原樣的出如今「真身」中,不會有變更。正常的Java代碼均可以在代碼片斷中出現。
<%=...%>:表達式。表達式會在「真身」中輸出,例如:<%=a%>,對應真身中的out.print(a)。只能出現變量、常量,以及有返回值的方法調用,而不能出現分號!即在out.println()的合法參數均可以。
<%=a%>對應out.print(a);
<%="a"%>對應out.print("a");
<%=fun()%>對應out.print("fun()");
<%=a;%>對應out.print(a;);出錯
<%=System.out.print("hello")%>對應out.print("System.out.print("hello")"),出錯。
<%!...%> :聲明。聲明對應「真身」中的屬性和方法。
4、EL
JSP2.0要把HTML和CSS分離、要把HTML和JavaScript分離、要把Java代碼塊替換成標籤。標籤的好處就是非Java人員均可以使用。
JSP2.0--純標籤頁面,即:不包括<%...%>、<%=...%>、<%!...%>
EL(Expression Language)是一門表達式語言,它杜繼英<%=...%>。咱們知道在JSP頁面中,表達式會被輸出,因此EL表達式也會被輸出。
EL表達式的格式::${...},例如${1+2}。