Servlet-Jsp

来源:http://www.cnblogs.com/kingofkai/archive/2016/09/14/5870859.html
-Advertisement-
Play Games

Jsp實際就是Servlet。 我們訪問Http://localhost:8080/Web/index.jsp的流程: 1 【jsp文件名】.jsp轉義為【jsp文件名_jsp】.java,文件存儲在Tomcat下的Work目錄下的org的apache的jsp文件中。 2 編譯jsp文件名_jsp. ...


  Jsp實際就是Servlet。


  我們訪問Http://localhost:8080/Web/index.jsp的流程:

  1 【jsp文件名】.jsp轉義為【jsp文件名_jsp】.java,文件存儲在Tomcat下的Work目錄下的org的apache的jsp文件中。
  2 編譯jsp文件名_jsp.java為.class文件,文件存儲位置和【jsp文件名_jsp】.java位置相同。
  3 JVM執行.class文件。

 

   查看轉義後的.java文件:

   public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase

   而HttpJspBase又繼承了HttpServlet,可見生成的.java文件是個Servlet類。

   疑問:

   我們在<%中使用的對象%>來源於哪裡呢?

   解決:查看源代碼

   final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

   這裡面的對象是我們編寫jsp頁面的時候使用的對象。

  

   Jasper:解析JSP的引擎

  Jasper是tomcat中使用的JSP引擎,在Tomcat 6中使用的是Jasper 2,相對於原來的版本作了不少的改進,比如:JSP的標簽緩衝池、後臺編譯、頁面改變時自動重新編譯、Eclipse中JDT編譯等等。

  在Tomcat中可以通過配置 CATALINA_HOME/conf/web.xml 中的內容,配置Jasper的選項:

     <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

  Tomcat下的Work工作目錄:(這裡只是我至今發現的功能,可能還有其它功能)

  1 存放.jsp文件轉義的.java文件和.class文件。

  2 當伺服器停止時,存放位於HttpSession中的對象的序列化文件,用於伺服器開啟時重新讀入到記憶體中。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、多線程基礎 編寫線程程式主要是構造線程類。構造線程類的方式主要有兩種,一種是通過構造類java.lang.Thread的子類,另一種是通過構造方法實現介面java.lang.Runnable的類。因為類java.lang.Thread實際上也是實現了介面java.lang.Runnable的類, ...
  • 一般面試中java Exception(runtimeException )是必會被問到的問題 常見的異常列出四五種,是基本要求。更多的。。。。需要註意積累了 常見的幾種如下: NullPointerException - 空指針引用異常ClassCastException - 類型強制轉換異常。I ...
  • Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in or ...
  • 此類中實現了從crx文件獲取擴展的Appid、獲取manifest.json文件內容、將crx文件轉換為一般zip文件 ...
  • session跨頁面後session消失? session的存儲要註意的點: session文件存儲的內容格式如下: 從圖片中我們可以讀出一些session信息:例如 存在一個session為error,其值為空;還存在一個session為:step,其值為0,等等信息。 現在我們已經知道sessi ...
  • 安裝Eclipse插件——Buildship 什麼是Buildship? Buildship能方便我們通過Eclipse IDE創建和導入Gradle工程,同時還能執行Gradle任務。 Eclipse上安裝Buildship 建議直接去Eclipse market處下載,簡單方便,如下圖: Bui ...
  • 引用計數技術及智能指針的簡單實現 基礎對象類 class Point { public: Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) { } int getX() const { return x; } int getY() const ...
  • 題目鏈接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作為一個生活散漫的人,小Z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小Z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命……具體來說 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...