jsp(web做業)

一:jsp簡介html

SP即Java Server Pages,它和servlet技術同樣,都是sun公司定義的一種用於開發動態web資源的技術。該技術的最大特色在於:寫JSP就像寫html,但它相比html而言,html只能爲用戶提供靜態數據,而JSP技術容許在頁面中嵌套java代碼,爲用戶提供動態數據。java

二:jsp原理web

. JSP原理
1) web服務器是如何調用並執行一個JSP頁面的?
        服務器首先將JSP翻譯爲一個Servlet,翻譯事後的Servlet能夠在\tomcat主目錄\work\Catalina\localhost\工程名\org\apache\jsp目錄下查看,這是服務器的工做目錄。打開相應的Servlet能夠看到,翻譯事後的servlet繼承了org.apache.jasper.runtime.HttpJspBase,而HttpJspBase繼承了HttpSerrvlet。說到這裏,咱們就明白了,其實JSP就是一個Servlet,訪問jsp即訪問一個Servlet。apache

2) JSP頁面中的html排版標籤是如何被髮送到客戶端的以及java代碼服務器是如何執行的?
        繼續瀏覽JSP翻譯事後的Servlet,裏面有個service方法_jspService(request, response),在該方法中能夠看到,JSP中的全部內容都會翻譯到service方法中,html代碼會經過out輸出,就像學習JSP以前,在Servlet中用out輸出html語句同樣,java部分代碼會原封不動的搬到service方法中。tomcat

三:jsp指令服務器

1)page指令:session

         page指令用於定義JSP頁面的各類屬性,不管page指令出如今JSP頁面中的什麼地方,它的做用都是整個JSP頁面。爲了保持程序的可讀性,page指令最好放在整個JSP頁面的起始位置。例子:<%@page contentType= "text/html;charset=utf-8" %>app

2)include指令:jsp

靜態引入:<%@include file="路徑名">學習

動態引入:<jsp:include page="路徑名" />

四. JSP運行原理和9大隱式對象
        由上文可知:每一個JSP頁面在第一次被訪問時,web容器都會把請求交給JSP引擎(即一個java程序)去處理。JSP引擎現將JSP翻譯成一個_jspServlet(實質上也是一個Servlet),而後按照Servlet的調用方式進行調用。因爲JSP第一次訪問時會翻譯成Servlet,因此第一次訪問一般會比較慢,但第二次訪問,JSP引擎若是發現JSP沒有變化,就再也不翻譯,而是直接調用,因此程序的執行效率不會受到影響。
        JSP引擎在調用JSP對應的_jspServlet時,會傳遞或建立9個與web開發相關的對象供_jspServlet使用。JSP技術的設計者爲便於開發人員在編寫JSP頁面時得到這些web對象的引用,特地定義了9個相應的變量,開發人員在JSP頁面中經過這些變量就能夠快速得到這9大對象的引用,9大隱式對象是哪些以及各自的做用是什麼?

request://就是Servlet裏的request
response: //就是Servlet裏的response
session: //就是Servlet裏的session
application: //就是servlet裏的servletContext
config: //就是Servlet裏的servletConfig
page: //就是Servlet本身
exception: //異常,只有errorPage纔有
out//JSP頁面輸出
pageContext:<span style="font-family:Microsoft YaHei;">//</span>pageContext對象是JSP技術中最重要的一個對象,它表明JSP頁面的運行環境

pageContext對象是JSP技術中最重要的一個對象,它表明JSP頁面的運行環境,這個對象不只封裝了對其它8大隱式對象的引用,它自身仍是一個域對象,能夠用來保存數據。而且,這個對象還封裝了web開發中常常涉及到的一些經常使用操做,例如引入和跳轉其它資源、檢索其它域對象中的屬性等。

getException<span style="font-family:Microsoft YaHei;">()  //</span>方法返回exception隱式對象
getPage<span style="font-family:Microsoft YaHei;">()  //</span>方法返回page隱式對象
getRequest()  //方法返回request隱式對象
getResponse()  //方法返回response隱式對象
getgetServletContext()  //方法返回application隱式對象
getServletConfig()  //方法返回config隱式對象
getSession()  //方法返回session隱式對象
getOut()  //方法返回out隱式對象
相關文章
相關標籤/搜索