JSP入門必讀

來源:互聯網
上載者:User

標籤:輸出資料流   file   如何   ips   有一個   翻譯   exce   charset   att   

JSP基礎知識:轉自老師上課梳理的筆記,希望對大家有所協助。有什麼不妥當的地方還望大家批評指正。

特別適用於JSP入門的人員使用。1.JSP

[1] 簡介
1.1 HTML
    HTML擅長顯示一個靜態網頁,但是不能調用Java程式。
1.2 Servlet
    Servlet擅長調用Java程式和後台進行互動,但是它不擅長顯示一個完整的HTML頁面。
    我們希望建立一個新的技術 HTML + Servlet 強強聯合
   JSP全稱Java Server Pages,顧名思義就是運行中java伺服器中頁面,也就是在我們JavaWeb中的動態網頁面,其本質就是一個Servlet。
   JSP不能脫離伺服器運行。
  JSP = HTML + JAVA代碼
 平常開發中Servlet負責處理請求,JSP負責顯示頁面

注意:對於頁面的編碼問題,可以通過在Eclipse.ini檔案的最後添加-Dfile.encoding=utf-8來解決!

[2] 運行原理
  2.1 JSP的本質就是一個Servlet
  JSP的運行之前會先被Tomcat伺服器翻譯為.java檔案,然後在將.java文本編譯為.class檔案
 而我們在訪問jsp時,處理請求的就是那個翻譯後的類。

jsp --翻譯--> java --編譯--> class

2.2  我們需要去到鏡像伺服器中去尋找結果。
實際上最終翻譯為的java檔案就是一個Servlet。
1.繼承HttpJspBase這個類,而該類又繼承了HttpServlet
2.在總的web.xml檔案中,同樣發現了jsp相關的配置
由此證明jsp確實是一個Servlet。

[3] 基本文法
 學習jsp的基本文法主要就是學習伺服器是如何將一個JSP檔案翻譯為一個java檔案

3.1 模板元素
就是JSP中html代碼
模板元素的內容最終會作為out.write()的參數,最終在頁面中輸出
在HTML頁面中怎麼寫網頁,在JSP中就怎麼寫

3.2指令碼片段
<% %>
在指令碼片段中可以直接來編寫Java代碼
指令碼片段中的代碼會原封不動的複製到java檔案的service方法中的指定的位置
 在service方法中可以寫什麼在指令碼片段中就可以寫什麼
在jsp頁面可以有多個指令碼片段,但是多個指令碼片段之間要保證結構完整

3.3 運算式
<%= %>
jsp運算式用來向頁面中輸出一個對象
 jsp運算式中的內容最終會作為out.print()的參數輸出到頁面中
out.print()方法能接收什麼樣的參數,運算式中就可以寫什麼
而out.print()可以接收任意類型的參數,所以運算式中可以傳任意對象。


3.4 注釋
<%-- --%>
 jsp注釋中的內容不會被翻譯到jsp對應java檔案中

 在JSP中可以使用三種注釋
html注釋 java注釋 jsp注釋
<!-- 片段 --> //java注釋! <%-- --%>

- 三種注釋的可見範圍

                  

  jsp源碼 java源檔案 網頁源碼
html注釋   可見 可見 可見
java注釋     可見 可見 不可見
jsp注釋 可見 不可見 不可見




3.5 聲明
<%! %>
JSP聲明中的內容會直接寫到jsp對應的java類中。
 在類中可以寫什麼在聲明就可以寫什麼。可以定義屬性,可以定義方法。。
一般情況我們不會在jsp對應的類中寫東西,所以聲明基本不用,知道就行。

[4] JSP指令
4.1 格式:<%@指令名 屬性名稱1=”屬性值1” 屬性名稱2=”屬性值2” %>

4.2 page指令
 page 指令主要是告訴jsp引擎如何解析jsp檔案。
 可能會用到的屬性
 import 用來導包
 language指定jsp檔案被翻譯為哪種語言
該屬性只有一個值就是 java
- contentType 指定當前網頁的編碼
response.setContentType("text/html;charset=utf-8");
- 給瀏覽器看的
- pageEncoding 指定當前頁面的編碼,jsp引擎會根據該編碼解析jsp檔案
- 給伺服器看的
- errorPage 指定頁面出現錯誤以後轉寄到的頁面,這個屬性的地址不加項目名。
- isErrorPage 當前頁面是否為一個錯誤頁面,如果為true則可以在頁面中使用exception對象。

- 基本不使用的屬性
- autoFlush 是否自動重新整理緩衝,預設值是true,一般不去修改這個屬性
- buffer 緩衝的大小 預設8kb 一般不修改
- extends 指定jsp對應的java類所要基礎的父類。根本不用
- info 設定當前jsp的資訊,沒用
- isELIgnored 是否自動忽略EL運算式,預設為false,不忽略,一般不修改
- session 是否可以直接使用session對象,預設值為true,一般不修改


4.3  include指令
<%@ include file="" %>
靜態包含指令
 include指令主要用來將其他網頁包含進當前JSP頁面
 他會將被包含頁面原封不動複製到目標頁面的指定位置。
 它只會翻譯目標頁面,而不會翻譯被包含頁面
 比如 1.jsp include 2.jsp
 相當於將2.jsp複製進1.jsp的指定位置
 只會翻譯1.jsp,而不會翻譯2.jsp


[5] JSP動作標籤
 JSP動作標籤最終都會被翻譯為一套java代碼,在程式中執行。

<jsp:標籤名 屬性名稱="屬性值"></jsp:標籤名>

<jsp:forward page="target.jsp">
<jsp:param value="paramValue" name="paramName"/>
</jsp:forward>
 jsp:forward標籤作用就是轉寄請求!
 如果標籤中沒有子標籤,那麼標籤體不能出現任何內容
 可以標籤中使用jsp:param標籤向目標頁面傳遞請求參數。

<jsp:include page="target.jsp"></jsp:include>
 jsp:include 動態包含
 動態包含會為所有網頁都產生一個java檔案
 動態包含並不是直接將被包含頁面直接複製進目標頁面,而是通過如下代碼,將頁麵包含進當前頁
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/include/2.jsp", out, false);

[6] 隱含對象
 在JSP中一共有9個隱含對象,這個9個對象我可以在JSP中直接使用。
 因為在service方法已經對這個九個隱含對象進行聲明及賦值,所以可以在JSP中直接使用。


- pageContext
類型:PageContext
代表:當前頁面的上下文
作用:可以擷取到頁面中的其他隱含對象,同時它還是一個域對象。

- request
類型:HttpServletRequest
代表:請求
作用:可以擷取使用者發送的請求資訊,它也是一個域對象。

- session
類型:HttpSession
代表:當前會話
作用:可以作為域對象,用來共用資料。

- application
類型:ServletContext
代表:代表整個WEB應用
作用:是JavaWeb中最大的域對象。

- response
類型:HttpServletResponse
代表:響應
作用:向瀏覽器發送響應資訊

- out
類型:JspWriter
代表:輸出資料流
作用:可以向頁面輸出內容

- config
類型:ServletConfig
代表:當前JSP的配置資訊
作用:可以擷取到Servlet標籤中初始化參數

- page
類型:Object 在service方法中有如下代碼 Object page = this;
代表:代表當前JSP的對象
作用:

- exception
類型:Throwable
代表:異常資訊
作用:擷取頁面中的異常


在JavaWeb中一共有四個域對象pageContext 、request、session、application。
 在JSP中可以擷取全部四個域對象,而在Servlet中只能擷取到三個
 使用域對象有一個原則,能用小的就不用大的。
 域對象就是在不同的WEB資源之間共用資料的。這些不同的web資源主要指JSP和Servlet
 域對象都有的方法:
void setAttribute(String name , Object value) 向域中添加屬性
Object getAttribute(String name) 根據屬性名稱從域中擷取屬性
void removeAttribute(String name) 根據屬性名稱從域中移除屬性
 我們四個域對象分別有其不同的範圍:
pageContext
類型:PageContext
範圍:當前頁面,一旦切換頁面則域中的屬性丟失。
應用:用來向標籤中傳遞資料。

request
類型:HttpServletRequest
範圍:當前請求,一但發送多次請求則域中的屬性丟失。
應用:需要在一次請求中共用資料時。
區分:轉寄時可以在request域中共用屬性,而重新導向時不可以

session
類型:HttpSession
範圍:在一次會話中有效,會話就是一次開啟瀏覽器到關閉瀏覽器的過程。
應用:主要是登入這種操作
注意:不同的瀏覽器之間不共用工作階段。

application
類型:ServletContext
範圍:只要項目不卸載application中屬性就不丟失
應用:線上使用者

[6] JSP與Servlet分工
 JSP本質就是一個Servlet!!!
 曾經在Model1這個年代,在我們的項目中已經看不見Servlet,JSP已經完全代替了Servlet。
 JSP擅長顯示一個頁面,不擅長編寫Java代碼
 Servlet擅長編寫java代碼,而不擅長顯示頁面
 我們使用Servlet處理常式,而使用JSP顯示頁面。
>將servlet處理後的結果放入進域中,然後交給JSP顯示。





JSP入門必讀

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.