JSP原理解析(一)

JSP難點解析(一)

1.JSP 是Java Server Pages的縮寫,可別誤以爲是java script page的縮寫,它是一種動態網頁開發技術。是java代碼與HTML的結合。
寫法爲:<% 代碼片段 %>
不過還有另外一種寫法

<jsp:scriptlet>
   代碼片段
</jsp:scriptlet>

第一種方法舉例爲:

當遇到這種表達式時:寫法一
<% for (int i=1;i<=6;i++){
 out.print("<h"+i+">你笑起來真好看</h"+i+">");
 }%>

寫法二:
<% for (int i=1;i<=6;i++){
%>
<h<%=i%>>你笑起來真好看</h<%=i%>>
  <% 
  }
  %>

那麼上面代碼執行完呈現的效果是怎樣的呢!如下圖所示

在這裏插入圖片描述
此時應該有所疑惑,爲什麼在jsp中寫完,他會直接呈現效果呢,他的原理是什麼?

該步驟表明了 Web 服務器是如何使用JSP來創建網頁的:

1.首先你的瀏覽器發送一個 HTTP 請求給服務器。
2. Web 服務器識別出這是一個對 JSP 網頁的請求,並且將該請求傳遞給 JSP 引擎。通過使用 URL或者 .jsp 文件來完成。
3.JSP 引擎從磁盤中載入 JSP 文件,然後將它們轉化爲 Servlet。這種轉化只是簡單地將所有模板文本改用 println() 語句,並且將所有的 JSP 元素轉化成 Java 代碼。
4.JSP 引擎將 Servlet 編譯成可執行類,並且將原始請求傳遞給 Servlet 引擎。
5.Web 服務器的某組件將會調用 Servlet 引擎,然後載入並執行 Servlet 類。在執行過程中,Servlet 產生 HTML 格式的輸出並將其內嵌於 HTTP response 中上交給 Web 服務器。
6.Web 服務器以靜態 HTML 網頁的形式將 HTTP response 返回到您的瀏覽器中。

最終,Web 瀏覽器處理 HTTP response 中動態產生的HTML網頁,就好像在處理靜態網頁一樣。
以上提及到的步驟可以用下圖來表示:
在這裏插入圖片描述從index.jsp進行編譯後,會形成index_jsp.java源碼和index_jsp.class字節碼兩個文件,接下來繼續刨根問底,那麼我們怎麼去查找這些源碼呢?
(1)首先你將index.jsp文件部署到D:\tomcat\apache-tomcat-9.0.24-windows-x64\apache-tomcat-9.0.24\webapps\manager中
(2)部署完之後進行編譯
(3)編譯完之後到D:\tomcat\apache-tomcat-9.0.24-windows-x64\apache-tomcat-9.0.24\work\Catalina\localhost\ROOT\org\apache\jsp(root根目錄下去查找你的源文件和字節碼文件)如下圖所示:
在這裏插入圖片描述
然後點擊查看源碼如下:它大致所有的java代碼經過解析都會成這種狀態。

org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatDocUrl}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null));
      out.write("deployer-howto.html\">Deployer</a></li>\r\n");
      out.write("                        </ul>\r\n");
      out.write("                    </div>\r\n");
      out.write("                </div>\r\n");
      out.write("                <div class=\"col20\">\r\n");
      out.write("                    <div class=\"container\">\r\n");
      out.write("                        <h4>Other Documentation</h4>\r\n");
      out.write("                        <ul>\r\n");
      out.write("                            <li><a href=\"");
      out.write((java.lang.String) 

到了這裏估計大家都懂了,jsp就是如此這般神奇,下面兩幅圖也會幫助你解析:

打開tomcat的lib文件裏的jar包,查看即可。jsp的實現源於:

在這裏插入圖片描述
在這裏插入圖片描述
後續繼續解析,希望對大家理解有幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章