日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JSP轉(zhuǎn)譯成Servlet詳細(xì)過(guò)程

很多人都會(huì)認(rèn)為JSP的執(zhí)行性能會(huì)和Servlet相差很多,其實(shí)執(zhí)行性能上的差別只在***次的執(zhí)行。因?yàn)镴SP在執(zhí)行***次后,會(huì)被編譯成Servlet的類文件,即.class,當(dāng)再重復(fù)調(diào)用執(zhí)行時(shí),就直接執(zhí)行***次所產(chǎn)生的Servlet,而不再重新把JSP編譯成Servelt。

因此,除了***次的編譯會(huì)花較久的時(shí)間之外,之后JSP和Servlet的執(zhí)行速度就幾乎相同了。Web容器處理JSP文件請(qǐng)求的執(zhí)行過(guò)程主要包括以下4個(gè)部分:

1.客戶端發(fā)出Request請(qǐng)求

2.JSP Container 將JSP轉(zhuǎn)譯成Servlet的源代碼

3.將產(chǎn)生的Servlet源代碼經(jīng)過(guò)編譯后,并加載到內(nèi)存執(zhí)行

4.把結(jié)果Response(響應(yīng))至客戶端

在執(zhí)行JSP網(wǎng)頁(yè)時(shí),通??梢苑譃閮蓚€(gè)時(shí)期:轉(zhuǎn)譯時(shí)期(Translation Time)和請(qǐng)求時(shí)期(Request Time)。

◆轉(zhuǎn)譯時(shí)期:JSP網(wǎng)頁(yè)轉(zhuǎn)移成Servlet類。

◆請(qǐng)求時(shí)期:Servlet類執(zhí)行后,響應(yīng)結(jié)果至客戶端。

轉(zhuǎn)譯期間做了兩件事情:

◆轉(zhuǎn)譯時(shí)期:將JSP網(wǎng)頁(yè)轉(zhuǎn)移為Servlet源代碼 .java.

◆編譯時(shí)期:將Servlet 源代碼 .java編譯成 Servlet類 .class.

當(dāng)JSP網(wǎng)頁(yè)在執(zhí)行時(shí),JSP Container會(huì)做檢查工作,如果發(fā)現(xiàn)JSP網(wǎng)頁(yè)有更新修改時(shí),JSP Container才會(huì)再次編譯JSP成Servlet; 如果JSP沒(méi)有更新時(shí),就直接執(zhí)行前面所產(chǎn)生的Servlet。

 
 
 
  1. (showdate.jsp)     
  2. <%@ page language="java" contentType="text/html;charset=gb2312" import="java.text.*,java.util.*;"%>     
  3.      
  4.      
  5. Show time     
  6.      
  7.       
  8.      Hello :      
  9.      <%     
  10.          SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");     
  11.          String str = format.format(new Date());     
  12.       %>     
  13.       <%=str %>     
  14.      
  15.  

當(dāng)部署好 showdate.jsp之后,啟動(dòng)Tomcat服務(wù)器。

1.在IE瀏覽器中輸入配置好的路徑 .... showdate.jsp 請(qǐng)求這個(gè)頁(yè)面。

2.JSP Container 即Tomcat 服務(wù)器會(huì)將 showdate.jsp 轉(zhuǎn)譯成 showdate_jsp.java 源文件。

3.同時(shí)將 showdate_jsp.java 源文件編譯成 showdate_jsp.class。

4.編譯執(zhí)行showdate_jsp.class 類,處理請(qǐng)求,返回響應(yīng),容器將生成的頁(yè)面返回給客戶端顯示。

 
 
 
  1. (轉(zhuǎn)移成的java源文件  showdate_jsp.java)  
  2. package org.apache.jsp.ch04;      
  3.      
  4. import javax.servlet.*;      
  5. import javax.servlet.http.*;      
  6. import javax.servlet.jsp.*;      
  7. import java.text.*;      
  8. import java.util.*;;      
  9.      
  10. public final class showdate_jsp extends org.apache.jasper.runtime.HttpJspBase      
  11.     implements org.apache.jasper.runtime.JspSourceDependent {      
  12.      
  13.   private static java.util.List _jspx_dependants;      
  14.      
  15.   public Object getDependants() {      
  16.     return _jspx_dependants;      
  17.   }      
  18.      
  19.   public void _jspService(HttpServletRequest request, HttpServletResponse response)      
  20.         throws java.io.IOException, ServletException {      
  21.      
  22.     JspFactory _jspxFactory = null;      
  23.     PageContext pageContext = null;      
  24.     HttpSession session = null;      
  25.     ServletContext application = null;      
  26.     ServletConfig config = null;      
  27.     JspWriter out = null;      
  28.     Object page = this;      
  29.     JspWriter _jspx_out = null;      
  30.     PageContext _jspx_page_context = null;      
  31.      
  32.     try {      
  33.       _jspxFactory = JspFactory.getDefaultFactory();      
  34.       response.setContentType("text/html;charset=gb2312");      
  35.       pageContext = _jspxFactory.getPageContext(this, request, response,      
  36.                    null, true, 8192, true);      
  37.       _jspx_page_context = pageContext;      
  38.       application = pageContext.getServletContext();      
  39.       config = pageContext.getServletConfig();      
  40.       session = pageContext.getSession();      
  41.       out = pageContext.getOut();      
  42.       _jspx_out = out;      
  43.      
  44.       out.write("\r\n");      
  45.       out.write("\r\n");      
  46.       out.write("\r\n");      
  47.       out.write("Show time\r\n");      
  48.       out.write("\r\n");      
  49.       out.write(" \r\n");      
  50.       out.write("\tHello : \r\n");      
  51.       out.write("\t");      
  52.      
  53.          SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");      
  54.          String str = format.format(new Date());      
  55.      
  56.       out.write("\r\n");      
  57.       out.write("\t ");      
  58.       out.print(str );      
  59.       out.write("\r\n");      
  60.       out.write("\r\n");      
  61.       out.write("");      
  62.     } catch (Throwable t) {      
  63.      
  64.       if (!(t instanceof SkipPageException)){      
  65.         out = _jspx_out;      
  66.         if (out != null && out.getBufferSize() != 0)      
  67.           out.clearBuffer();      
  68.         if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);      
  69.       }      
  70.      
  71.     } finally {      
  72.      
  73.       if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);      
  74.     }      
  75.   }      

當(dāng)JSP頁(yè)面被轉(zhuǎn)譯成Servlet時(shí),內(nèi)容主要包含三個(gè)部分:

 
 
 
  1. public void _jspInit(){ ..}       
  2. -- 當(dāng)JSP網(wǎng)頁(yè)一開(kāi)始執(zhí)行時(shí),***執(zhí)行此方法,執(zhí)行初始化工作     
  3. public void _jspDestory(){...} – JSP網(wǎng)頁(yè)***執(zhí)行的方法     
  4. public void _jspService(HttpServletRequest request, HttpServletResponse response)     
  5.         throws java.io.IOException, ServletException { 

JSP網(wǎng)頁(yè)中最主要的程序都是在此執(zhí)行,將showdate.jsp和showdate_jsp.java做一個(gè)簡(jiǎn)單對(duì)比:

***部分:頁(yè)面屬性的對(duì)比

 
 
 
  1. <%@ page language="java" contentType="text/html;charset=gb2312" %> 
  2. response.setContentType("text/html;charset=gb2312");    
  3. //通過(guò) response響應(yīng)設(shè)置返回客戶端的頁(yè)面屬性 

第二部分:HTML標(biāo)簽

 
 
 
  1.       
  2.       
  3. Show time      
  4.       
  5. ..      
  6.  
  7.  
  8. out.write("\r\n");  
  9. out.write("\r\n");  
  10. out.write("\r\n");  
  11. out.write("Show time\r\n");  
  12. out.write("\r\n");  
  13. out.write(" \r\n");  
  14. out.write("\tHello : \r\n");  
  15. out.write("\t");  
  16. //通過(guò) out對(duì)象 向客戶端寫HTML標(biāo)簽 

第三部分:聲明的對(duì)象

 
 
 
  1. <%      
  2.          SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");      
  3.          String str = format.format(new Date());      
  4. %> 

在_jspService 方法中聲明的局部變量:

 
 
 
  1. SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");      
  2. String str = format.format(new Date());    

第四部分:表達(dá)式

 
 
 
  1. <%=str %>      
  2. out.print(str ); //寫即打印str變量的值 

新聞標(biāo)題:JSP轉(zhuǎn)譯成Servlet詳細(xì)過(guò)程
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/ccedhge.html