成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP轉譯成Servlet詳細過程

開發 后端
很多人都會認為JSP的執行性能會和Servlet相差很多,其實執行性能上的差別只在第一次的執行。本文講詳細的介紹JSP轉譯成Servlet的主要過程。

很多人都會認為JSP的執行性能會和Servlet相差很多,其實執行性能上的差別只在***次的執行。因為JSP在執行***次后,會被編譯成Servlet的類文件,即.class,當再重復調用執行時,就直接執行***次所產生的Servlet,而不再重新把JSP編譯成Servelt。

因此,除了***次的編譯會花較久的時間之外,之后JSP和Servlet的執行速度就幾乎相同了。Web容器處理JSP文件請求的執行過程主要包括以下4個部分:

1.客戶端發出Request請求

2.JSP Container 將JSP轉譯成Servlet的源代碼

3.將產生的Servlet源代碼經過編譯后,并加載到內存執行

4.把結果Response(響應)至客戶端

在執行JSP網頁時,通常可以分為兩個時期:轉譯時期(Translation Time)和請求時期(Request Time)。

◆轉譯時期:JSP網頁轉移成Servlet類。

◆請求時期:Servlet類執行后,響應結果至客戶端。

轉譯期間做了兩件事情:

◆轉譯時期:將JSP網頁轉移為Servlet源代碼 .java.

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

當JSP網頁在執行時,JSP Container會做檢查工作,如果發現JSP網頁有更新修改時,JSP Container才會再次編譯JSP成Servlet; 如果JSP沒有更新時,就直接執行前面所產生的Servlet。

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

當部署好 showdate.jsp之后,啟動Tomcat服務器。

1.在IE瀏覽器中輸入配置好的路徑 .... showdate.jsp 請求這個頁面。

2.JSP Container 即Tomcat 服務器會將 showdate.jsp 轉譯成 showdate_jsp.java 源文件。

3.同時將 showdate_jsp.java 源文件編譯成 showdate_jsp.class。

4.編譯執行showdate_jsp.class 類,處理請求,返回響應,容器將生成的頁面返回給客戶端顯示。

  1. (轉移成的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("<html>\r\n");      
  46.       out.write("<head>\r\n");      
  47.       out.write("<title>Show time</title>\r\n");      
  48.       out.write("</head>\r\n");      
  49.       out.write("<body> \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("</body>\r\n");      
  61.       out.write("</html>");      
  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.   }      

當JSP頁面被轉譯成Servlet時,內容主要包含三個部分:

  1. public void _jspInit(){ ..}       
  2. -- 當JSP網頁一開始執行時,***執行此方法,執行初始化工作     
  3. public void _jspDestory(){...} – JSP網頁***執行的方法     
  4. public void _jspService(HttpServletRequest request, HttpServletResponse response)     
  5.         throws java.io.IOException, ServletException { 

JSP網頁中最主要的程序都是在此執行,將showdate.jsp和showdate_jsp.java做一個簡單對比:

***部分:頁面屬性的對比

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

第二部分:HTML標簽

  1. <html>      
  2. <head>      
  3. <title>Show time</title>      
  4. </head>      
  5. ..      
  6. </html> 
  7.  
  8. out.write("\r\n");  
  9. out.write("<html>\r\n");  
  10. out.write("<head>\r\n");  
  11. out.write("<title>Show time</title>\r\n");  
  12. out.write("</head>\r\n");  
  13. out.write("<body> \r\n");  
  14. out.write("\tHello : \r\n");  
  15. out.write("\t");  
  16. //通過 out對象 向客戶端寫HTML標簽 

第三部分:聲明的對象

  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());    

第四部分:表達式

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

【編輯推薦】

  1. JSP動態網頁程序設計詳解
  2. PHP與JSP上演超詳細性能測試大PK
  3. 全面介紹ASP.NET和JSP技術 
責任編輯:王曉東 來源: JavaEye
相關推薦

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2009-08-10 09:19:28

Servlet JSP

2009-07-07 14:04:55

JSP入門

2009-07-06 15:03:53

JSP向Servlet

2009-07-09 10:49:56

Servlet和JSP

2009-07-06 15:34:56

JSP和Servlet

2009-06-25 14:26:07

JSPJavaBeanServlet

2009-07-03 14:16:30

JSP Servlet

2009-07-07 11:18:59

JSP Servlet

2009-07-07 13:42:57

Servlet JSP

2009-07-03 10:46:48

JSP ServletJavaBean

2009-08-20 17:35:47

Servlet和JSP

2009-07-08 09:22:03

Servlet和JSP

2009-07-06 09:49:26

Servlet JSP

2009-08-10 15:20:00

構建JSP Servl

2009-07-08 14:22:36

Servlet容器匹配過程

2009-07-08 15:25:56

Servlet和JSP

2009-07-07 13:29:33

Servlet和JSP

2009-07-06 17:11:38

Servlet文件上傳

2009-09-02 10:26:23

JSP和BEAN
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级在线 | a级片在线观看 | 99日韩| av在线播放不卡 | 日韩福利在线 | 国产ts人妖系列高潮 | 欧美久久国产精品 | 精品国产乱码久久久久久蜜退臀 | 日韩在线 | 成人国产一区二区三区精品麻豆 | www久久久 | 成人黄色电影在线观看 | 狠狠干天天干 | 在线看亚洲 | 福利网址| 日韩在线播放av | 欧美综合一区 | 狠狠干美女 | 91久久国产精品 | 久久精品二区 | 国产片侵犯亲女视频播放 | 99re热这里只有精品视频 | 欧美一级欧美三级在线观看 | 久久精品国产99国产精品 | 日韩久久久久 | 国产日韩欧美在线播放 | 成人三级影院 | 亚洲成人网在线观看 | 国产精品中文字幕在线观看 | 伊人精品在线视频 | 亚洲国产精品一区二区www | 国内精品伊人久久久久网站 | 成人3d动漫一区二区三区91 | 亚洲成人毛片 | 日本精品一区二区三区在线观看 | 一区亚洲 | 91精品国产欧美一区二区成人 | 夜久久 | 国产一级一级 | 国产欧美在线播放 | 福利精品 |