免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JSP 的技術原理
JSP 的注釋和聲明
JSP 腳本
JSP 的三個編譯指令
JSP 的七個處理指令
JSP 的九個內置對象
Servlet 介紹
到自定義標簽開發(fā)
使用Filter
使用Li stener
到JSP 2.0 的新特性
JSP是 JavaServerPage 的縮寫,是Servlet 的簡化。它是由Sun 公司提出的,并由許多公司參與制定的一種動態(tài)網頁標準。其主要特點是在HTML 頁面中加入Java代碼片段,或者使用各種JSP標簽,包括使用用戶標簽,構成JSP 網頁。早期使用 JSP 頁面的用戶非常廣泛,一個Web應用可以全部由JSP 頁面組成,只輔以少量的 JavaBean 即可。自 J2EE 標準出現(xiàn)以后,人們逐漸認識到使用JSP充當過多的角色是不合適的Q 因此, JSP 慢慢發(fā)展成學一的表現(xiàn)層技術,不再承擔業(yè)務邏輯組件及持久層組件的責任。
雖然有各種模板技術,但JSP還是最經典、應用最廣的表現(xiàn)層技術c
2.1 JSP 的技術原理
JSP 是 Servlet 的擴展,在沒有 JSP 之前,就已經出現(xiàn)了 Servlet 技術。 Servlet 是利用輸出流動態(tài)生成 HTML 頁面,包括每一個 HTML 標簽和每個在 HTML 頁面中出現(xiàn)的內容。
由于包括大量的 HTML 標簽、大量的靜態(tài)文本及格式等,導致 Servlet 的開發(fā)效率極為低下。所有的表現(xiàn)邏輯,包括布局、色彩及圖像等,都必須糯合在Java 代碼中,這的確讓人不勝其煩。 JSP 的出現(xiàn)彌補了這種不足, JSP 通過在標準的 HTML 頁面中插入Java 代碼,其靜態(tài)的部分無須 Java 程序控制,只有那些需要從數(shù)據(jù)庫讀取并根據(jù)程序動態(tài)生成信息時,才使用 Java 腳本控制。
從表面上看, JSP 頁面已經不再需要 Java 類,似乎完全脫離了 Java 面向對象的特征。事實上, JSP 是 Servlet 的一種特殊形式,每個 JSP 頁面就是一個 Se凹let 實例一-JSP 頁面由系統(tǒng)編譯成 Servlet, Se凹let 再負責響應用戶請求。 JSP 其實也是 Se凹let 的一種簡化,使用 JSP 時,其實還是使用 Se凹let,因為 Web 應用中的每個 JSP 頁面都會由 Se凹let 容器生成對應的 Servlet。對于 Tomcat 而言, JSP 頁面生成的 Se凹let 放在 work 路徑對應的Web 應用下。
看下面一個簡單的 JSP 頁面:
〈%for(inti = 0 ; i < 10; i++)
{
out.print1n(i) ;
%>
〈%}%〉
當啟動 Tomcat之后,可以在Tomcat 的 Catalina\localhost\jsptest'飛org飛apache\jsp 目錄下找到如下文件(假如Web應用名為jsptest,上面JSP頁的名為test1扣p):test1.jsp.java和 testtjsp.class。這兩個文件都是Tomcat 生成的, Tomcat根據(jù) JSP 頁面生成對應 Servlet的 Java文件及 class 文件。
下面是 test1.jsp.java文件的源代碼,這是一個特殊的Java類,是一個 Serlet類:
//JSP 頁面經過 Tomcat 編譯后默認的包
package org.apache.jsp;
import javax.serv1et.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
//繼承 HttpJspBase類,該類其實是個Servlet的子類
public final class testl_jsp extends org.apache.
jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent
private staticjava.utiI.Vector_jspx_dependants;
public java.util.List getDependants() {
return _jspx_dependants;
}
//用于響應用戶的方法
publicvoid_jspService(HttpServletRequestrequest,
HttpServletResponse response)
throws java.io.IOException, ServletException
//獲得頁面輸出流
JspFactory_j 日pxFactory= null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
//獲得頁面輸出流
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx-page_context = null;
//開始生成響應
try
_jspxFactory = JspFactory.getDefaultFactory();
//設置輸出的頁面格式
response.setContentType("text/html; charset=gb2312");
pageContext = _jspxFactory.getPageContext(this, request,
response, null, true, 8192, true);
_jspx-page_context = pageContext;
application = pageContext.getServletContext();
config =pageContext.getServletConfig();
session= pageContext.getSession();
//頁面輸出流
out =pageCo口text.getOut();
_jspx_out = out;
//輸出流,開始輸出頁面文襠
out.write("\r\nil) i
//下面輸出 HTML 標簽
out.write("4.0TransitionalllEN\">\r\nil) ;
out.write(" \r\丑n);
out.write(" \r\nn) ;
out.write("\r\n") ;
out.write("\r\nil) ;
out.write("\r\nil} ;
//頁面中的循環(huán),在此處循環(huán)輸出
for(int i = 0 ; i < 10; i++)
out.println(i);
out.write("\r\n") ;
out.write ("
\r\n");
out.write("\r\n");
out.write("c/BODY>\r\n);
out.write("c/HTML>\r\n");
out.write ("\r\n");
}
catch (Throwable t)
{
if(!(t instanceof SkipPageExceptio口))
{
out=_jspx_out;
if (out !=null&& out.getBufferSize()!=0)out.clearBuffer() ;
if (_jspx-page_context!=null)_jspx-page_context.
handlePageException(t);
}
finally
If(_jspxFactory != null)_jspxFactory.releasePageContext(_jspx_
page_context) ;]
}
}
即使讀者不了解上面提供的 Java 代碼,也依然不會影響 JSP 頁面的編寫,因為這都是由 Web 容器負責生成的。圖 2.1 顯示了 testl.jsp 的執(zhí)行效果。
根據(jù)圖 2.1 的執(zhí)行效果,再次對比 test1.jsp 和test1-.isp扣va 文件,可得到一個結論:該 JSP 頁面中的每個字符都由 test1-.isp.java 文件的輸出流生成。圖 2.2 顯示了 JSP 頁面的i作原理。
 
圖 2.1 testl.jsp的執(zhí)行效果
根據(jù)上面的 JSP 頁面i作原理圖,可以得到如下四個結論:
JSP文件必須在 JSP服務器內運行。
JSP 文件必須生成 Serlet才能執(zhí)行。
每個 JSP 頁面的第一個訪問者速度很慢,因為必須等待 JSP編譯成 Serleta
 
圖 2.2 JSP 頁面的i作原理
JSP 頁面的訪問者無須安裝任何客戶端,甚至不需要可以運行 Java 的運行環(huán)境,因為 JSP 頁面輸送到客戶端的是標準 HTML 頁面。JSP 的出現(xiàn),大大提高了 Java 動態(tài)網站的開發(fā)效率,曾一度風靡 JavaWeb 應用開發(fā)者。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
圖解JSP與Servlet的關系
Eclipse Tomcat Jasper 入門 - [Matrix - 與 Java 共舞]
初學 Java Web 開發(fā),請遠離各種框架,從 Servlet 開發(fā)
JSP的運行內幕
利用Java生成靜態(tài)HMTL頁面
Java中的JavaCore/HeapDump文件及其分析方法 – 碼農網
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服