tomcat處理jsp頁面的流程

--菜鳥學習jsp之Tomcat處理jsp頁面的流程:

   客戶請求*.jsp文件,服務器找到此*.jsp文件先將他翻譯成*.java文件然此*.java文件編譯成*.class文件,最後運行此*.class文件並且拼接成對應的jsp文件響應給客戶。

    在jsp中所有的java代碼必須出現在scriptlet標籤內即:<%! %>、<%%>和<%=%>,其實他們的作用就是告訴服務器如何去翻譯jsp中的java。對於任何一個jsp文件會被服務器翻譯成如下格式java文件(其中很多的初始化等代碼沒有寫):

 

 

public final class jspDemo1_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

 

  public void _jspInit() {
      }

  public void _jspDestroy() {
  }

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

  }
}

        很明顯服務器將一個jsp文件翻譯成了一個java類,並且自動生成了三個方法,第一個是初始化用的,第二個是在服務器關閉或者jsp內容改變時執行的,第三個就是對客戶的響應時執行的。此三個方法都可以直接在jsp文件中進行重寫,但是必須寫在<%!%>之中,可見此標籤就是告訴服務器他裏面的內容都是類的屬性,學習過java的都知道一個對於一個類他的屬性有:成員變量、成員方法、內部類、代碼塊等,所以在寫jsp代碼時如果要定義這些內容就應該用<%!%>標籤指定。

      當然一般情況下在一個jsp頁面中很少去重寫這些方法,都是直接寫代碼,上面說過對客戶的響應服務器會調用_jspService方法所以jsp中需要在響應期間執行的代碼都必須寫在<%%>標籤中,可見此標籤法所有內容都會被服務器翻譯成jspService方法的內容,這也是爲什麼在<%%>標籤中不能定義方法、類、代碼塊原因(如果你還不知道爲什麼就先學習下java中方法定義的規則),因此在<%%>標籤中一般定義:局部變量、語句等.

      要想將對用戶的響應顯示在頁面上,就必須使用jspWriter的對象out他是一個輸出流,他的作用就是向頁面輸出內容具體的實現是out.writer("")或者out.print("");所以標籤<%=%>會被翻譯成此輸出語句,同時他也是被放到了_jspService方法中。

      最後總結下:在學jsp的過程中不必深究如上代碼,只要知道這三個標籤幹什麼用就行了,正確使用就行了。其實在真正的開放中在jsp中出現的會全部是標籤,因爲所有的代碼都由一個一個的標籤去表示,這些標籤會告訴服務器該如何去生成代碼。

    以上只是本菜鳥的學習體會,各位大蝦多多指點!

 

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