程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Servlet學習筆記(七)—— JSP概述

Servlet學習筆記(七)—— JSP概述

編輯:關於JSP

Servlet學習筆記(七)—— JSP概述


1.Servlet兩個缺陷: ①所有HTML標簽必須包在Java字符串中,使得發送HTTP響應十分繁瑣; ②所有文本和HTML標簽都必須進行硬編碼,即使對表示層做極其微小的修改,也需要重新編譯。
2.注釋: (1)JSP備注:<% %>,不會發送到浏覽器,不能嵌套 (2)HTML備注:,不被容器處理,直接發送到浏覽器,用途之一是標識JSP頁面。在處理帶有許多JSP片段的應用程序時,開發者通過查看HTML源代碼,可以輕松查出某個HTML代碼部分生成了那個JSP頁面。
3.隱式對象: 對象 類型 request javax.servlet.http.HttpServletRequest response javax.servlet.http.HttpServletResponse out javax.servlet.jsp.JspWriter session javax.servlet.http.HttpSession application javax.servlet.ServletContext config javax.servlet.ServletConfig pageContext javax.servlet.jsp.PageContext page javax.servlet.jsp.HttpjspPage exception java.lang.Throwable out類似於HttpServletResponse中調用 page對象表示當前的JSP頁面 getWriter()之後得到的java.io.PrintWriter
4.三個句法元素: (1)指令directive:指示JSP轉換器應該如何將某JSP頁面轉換為Servlet ①page:就當前JSP頁面的某些方面對JSP轉換器提出指示 。page指令可以出現在頁面的任何位置。只是當它包含contentType或者pageEncoding屬性時,必須放在所有模板數據之前,並且是在利用Java 代碼發送任何內容之前。這是因為必須在發送任何內容之前設置內容類型和字符編碼。 ②include:將另一個文件的內容放在當前的JSP頁面中。文件擴展名.jspf (2)腳本元素scripting:將Java代碼和比高成一個JSP頁面 ①Scriplet:在一個Scriplet中定義的變量,對於它後面的其他Scriplet也是可見的 ②聲明:能在JSP頁面使用的變量和方法 ③表達式:Today is <%= java.util.Calendar.getInstance().getTime() %> 表達式後面不需要分號 關閉腳本元素:隨著Expression Language的發展,建議利用EL來訪問服務器端的對象,而不是在JSP頁面中編寫Java代碼。因此,原本開啟的腳本元素,可以在部署描述符的中定義一個scripting-invalid元素,將它關閉,例如: *.jsp <scripting-invalid>true</scripting-invalid> (3)動作action:被編譯成執行某個動作的Java代碼 ①useBean:創建一個與某個Java對象相關的腳本變量,將表現邏輯與業務邏輯分開 ②setProperty與getProperty:保存與獲取一個java對象中的一個屬性 ③include動作: include指令和include動作的區別: include指令是在頁面轉換時使用,比如JSP容器將頁面轉換成一個生成的Servlet的時候;include動作是在發生請求的時候使用。 可以通過include動作傳遞參數,但是include指令不可以。 使用include指令時,被包含資源的文件擴展名並不重要;使用include動作時,文件擴展名必須是jsp ④forward:將當前頁面跳轉到另一個不同的資源 forword與redirect的區別: http://zhulin902.iteye.com/blog/939049 http://www.Bkjia.com/kf/201109/105650.html
5.錯誤處理: (1)用try語句處理Java代碼 (2)指定一個頁面,讓它在應用程序遇到未捕捉的異常時顯示出來。 利用page指令的isErrorPage屬性,就可以把一個JSP頁面變成一個錯誤處理頁面 6.概述: (1)Jsp頁面也是一個Servlet,但簡單的多: ①不需要編譯JSP頁面; ②*.jsp為擴展名的文本文件,可以用任意文本編輯器編寫。 (2)JSP頁面在JSP容器中運行,Servlet容器一般也是JSP容器。Tomcat就是一個Servlet/JSP容器。 (3)第一次請求一個JSP頁面時,容器所做的兩件事: ①將JSP頁面轉換車一個JSP頁面實現類,即一個實現javax.servlet.jsp.JspPage或者javax.servlet.jsp.HttpjspPage接口的Java類。JspPage是javax.servlet.Servlet的子接口,所以每個Jsp頁面都編程一個Servlet。 ②轉換成功,容器編譯Servlet類,加載和實例化Java字節碼,執行它通常對Servlet所做的生命周期操作。 (4)對於同一個JSP頁面的後續請求,容器會查看這個JSP頁面自從最後一次轉換以來是否被修改過。如果修改過,就會重新轉換、編譯、執行;若沒有,則執行內存中已經存在的Servlet。所以,第一次掉一個JSP頁面的時間比後續請求都更長。解決這個問題的措施: ①配置應用程序,在應用程序啟動而不是初始請求的時候,調用所有的JSP頁面進行轉換編譯。 ②預先編譯JSP頁面,並將它們以Servlet的方式進行部署。 (5)JSP API的4個包: ①javax.servlet.jsp ②javax.servlet.jsp.target ③javax.el ④javax.servlet.jsp.el (6)JSP 頁面包含句法元素和模板數據: ①<% 和%>就是句法元素,HTML標簽和文本就是模板數據。 (7)JSP不需要在部署描述符中進行標注,或者映射成一個URL
(8)添加完一個新的JSP頁面不需要重啟Tomcat 7.如何查看JSP轉譯成servlet後的源代碼? 在eclipse的工作區\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\(項目名)\org\apache\jsp這裡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved