Servlet與JSP學習筆記(三)JSP

概述:

JSP并沒有取代Servlet,是對Servlet的補充

JSP實質(zhì)是Servlet

JSP的頁面不需要編譯

可用任何文本編寫,后綴.jsp

在JSP容器中運行(Servlet是JSP容器,Tomcat是Servlet/JSP容器)

首次請求JSP,Servlet/JSP容器做兩件事:

????????1:JSP轉(zhuǎn)換為JSP實現(xiàn)類,該類是Servlet類

????????2:編譯該Servlet類

編寫JSP頁面:JSP語法 + Servlet API

與Servlet不同:JSP不需要在部署描述符中標注,或不需要映射成URL,可在瀏覽器中直接輸入頁面路徑調(diào)用

一、注釋(comment):

分兩種:

1: JSP備注:

注明該頁面的作用,不會發(fā)送至瀏覽器, 不能嵌套

以<%--開頭, 以--%>結束,<%--jsp comment--%>

2: HTML/XHTML備注:

JSP容器不處理,而是將其發(fā)送至瀏覽器

結束

用于標識JSP頁面

用于處理帶有很多JSP片段(fragment)的應用,通過查看瀏覽器HTML源代碼,可獲取某個HTML代碼生成了哪些JSP和片段

二、隱式對象(implicit Object):

不用創(chuàng)建,直接只用:

分別對應于Servlet中的相應對象:

request? --------? HttpServletRequest

response? -------? HttpServletResponse

out? -------------? JspWriter

session ---------? HttpSession

application ------? ServletContext

config? ----------? ServletConfig

pageContext ----? PageContext

page? ------------? HttpJspPage

exception? ------- Throwable? ? ? ?

三、三個句法元素:

1、指令(directive):

第一個JSP句法元素,指示JSP容器如何將JSP頁面轉(zhuǎn)換成Servlet的命令

page指令:

<%@page? attribute1="value1"? attribute2="value2"? ....%>

如:<%@page? import="java.util.ArrayList,java.util.Date"? session="false"? buffer="16KB"? contentType="text/html" ......%>

page可以放到JSP中任意地方

page可以多次出現(xiàn),但是值必須一致(import,contentType,encoding除外,import是作用疊加,contentType和encoding必須放在開頭,java發(fā)送內(nèi)容之前)

include指令:

將另一個文件的內(nèi)容放到當前JSP頁面中

多個JSP頁面公用的部分可以做成include文件

<%@? include? file="url" %>,url若以“/”開頭,表示絕對路徑,若沒有則表示相對路徑

include的文件擴展名:.jspf(表示JSP的fragment或者JSP segment)

2、腳本元素(scripting element):

是JSP的第二種句法,將Java代碼合并成一個JSP頁面

分三種:

Scriptlet:

是Java代碼塊,<%開頭,%>結尾

前一個Scriplet定義的變量,在后面的Scriplet中是可見

聲明:

聲明在JSP中使用的變量、方法

格式:<%!開頭, %>結尾

可放在JSP頁面的人和位置

同一個JSP可以有多個聲明

可以在聲明里,覆蓋JSP實現(xiàn)類的方法,比如jspInit, jspDestroy

表達式:

其運算結果自動填入out.print方法中被打印出來

格式:<%=開頭,%>結尾

比如:Today is <%= java.util.Calendar.getInstance().getTime() %>

等價于:Today is <%? out.print(java.util.Calendar.getInstance().getTime());? %>

3、動作(action):

第三種句法,被編譯成執(zhí)行某個操作的Java代碼

useBean動作:

將創(chuàng)建一個與某個Java對象相關的腳本變量

很容易將表現(xiàn)邏輯與業(yè)務邏輯分離

EL表達式出現(xiàn)后,useBean不常用了

如:創(chuàng)建一個Date實例,并與腳本變量today關聯(lián),之后用在一個表達式中

<%=today %>

setProperty 和 getProperty動作:

setProperty:在Java 對象中保存一個屬性

getProperty:獲取一個Java對象的屬性

如:頁面保存并輸出Customer實例的name屬性

Customer Name:

include動作:

此動作用于動態(tài)包含另一個資源、JSP頁面、一個Servlet、靜態(tài)的HTML頁面

include指令與include動作區(qū)別:

區(qū)別1:

include指令發(fā)生在頁面轉(zhuǎn)換時,JSP容器將頁面轉(zhuǎn)換成對應的Servlet實例時

include動作發(fā)生在請求時,可以傳遞參數(shù)

區(qū)別2:

include指令:被包含文件擴展名不重要

include動作:文件擴展名必須時.jsp,如果是jspf會被當作靜態(tài)文件處理

如:


forward動作:

將當前頁面跳轉(zhuǎn)到另一個不同的資源

如:將當前頁面跳到login.jsp


錯誤處理動作:

可以利用try語句處理Java代碼

也可以指定錯誤頁面

如:

errorHandler.jsp

<%@page isErrorPage="true" %>

An Error has occurred.

<% out.println(exception.toString()); %>

buggy.jsp:

<%@page errorPage="errorHandler.jsp" %>

<% Integer.parseInt("Throw me"); %>

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術一樣都是sun公司定...
    yjaal閱讀 3,845評論 5 99
  • Part 1 @Description:Report of Servlet Basic, Part 1 @Date...
    susu2016閱讀 714評論 0 3
  • Jsp技術總結 1. 什么是JSP JSP即Java Server Pages,它和servlet技術一樣...
    91數(shù)據(jù)閱讀 1,804評論 0 18
  • JSP總結(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    91數(shù)據(jù)閱讀 3,645評論 0 13
  • 每次就是莫名很喪,特別是在對LZF這個事情上,時而看到希望,時而覺得沒希望,時而覺得只要堅持就可以,時而覺得有可能...
    沒事的呀閱讀 242評論 0 0

友情鏈接更多精彩內(nèi)容