日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

JSP知識匯總

 太極混元天尊 2018-06-22

本期小編將帶你走進JSP,學習到Java的前后端交互的時候,我們會接觸到JSP,今天我們來學習一下JSP的一些內容:

1 JSP的由來

1.1 為什么有JSP規(guī)范

Servlet技術產生以后,在使用時最麻煩的是使用大量的out.print語句輸出頁面。這樣的形式在系統(tǒng)變更、維護、預覽效果時都不能方便快捷的完成任務,于是推出JSP這種技術,用來將Servlet中負責顯示的語句抽取出來。

class xxxServlet{ ...service(){ ... out.println(''); ... out.println(''); ...

1.2什么是JSP

Sun公司制定的一種服務器端動態(tài)頁面技術的組件規(guī)范。

JSP是一個以“. jsp”為后綴的文件,在該文件中,主要是HTML和少量的Java代碼。JSP文件會被容器轉換成一個Servlet類,然后執(zhí)行。

< html=""> java代碼...
java代碼...

2. JSP編寫規(guī)范

2.1 如何編寫JSP

step1:寫一個以” .jsp”為后綴的文件

step2:在該文件中可以包含如下內容:

- HTML(CSS、JavaScript)- 注釋- Java代碼- 指令- 隱含對象

2.2 JSP頁面中的HTML 代碼

作用:控制頁面在瀏覽器中顯示的效果

轉譯成Servlet時的規(guī)則:成為Servlet中的service()方法的out.write語句

2.3 JSP頁面中的注釋

語法:

1)

HTML注釋,注釋中的內容如果包含Java代碼,這些Java代碼,會被忽略

2)<%-- 注釋內容 --%>

JSP特有的注釋,如果注釋的內容中出現(xiàn)Java代碼,會被忽略

2.4 JSP頁面中的Java代碼

JSP頁面中的Java代碼,包含以下三種:

  • JSP表達式
  • JSP小腳本
  • JSP聲明

編寫位置:頁面的任意位置

作用:控制頁面中可變內容的產生

2.5 JSP表達式

語法規(guī)則:<%= ... ... %>

合法內容:

變量、變量加運算符組合的表達式、有返回值的方法

轉譯成Servlet時的規(guī)則:

在service( )方法中用out.print語句輸出該變量、表達式、方法的值

Eg:

The square root of 5 is <%=Math.sqrt(5)%>

轉換成

out.write('

The square root of 5 is ');out.write(Math.sqrt(5));out.write('

');

2.6 JSP小腳本

語法規(guī)則:<% ... ... %>

合法內容:能夠寫在方法里的Java代碼片段都可以作為小腳本

轉移成Servlet時的規(guī)則:原封不動成為Servlet類的service( )方法里面的一段代碼

Eg:

<% String name = request.getParameter('name'); if(name!=null && !name.equals('')){%>

Your name is <%=name %>

<% }%>

轉換成如下代碼插入到service方法中

String name = request.getParameter('name'); if(name!=null && !name.equals('')){ out.write('

Your name is'); out.print(name); out.write('

');

前幾天有私信我要Java的學習資料,我連夜整理了一些有深度的Java教程和參考資料,從入門到高級的都有,文件已經打包好了,正在學習Java的同學可以免費下載學習學習。文件下載方式:點擊我的頭像,關注后私信回復'資料”即可下載。首先把代碼擼起來!首先把代碼擼起來!首先把代碼擼起來!重要的事說三遍,哈哈。 “編程是門手藝活”。什么意思?得練啊。

2.7 JSP聲明

語法聲明:<%! ... ... %>

合法內容:成員屬性或成員方法的聲明

轉譯成Servlet時的規(guī)則:成為JSP頁面轉譯成的Servlet類中成員屬性或成員方法

Eg:

<%! public String getResult(){ //... }%>

將代碼整體插入到Servlet類中

public class Index_JSP extends JSPBase{ public String getResult(){ //... } public void service()... }

2.8 JSP頁面中的指令

語法規(guī)則:<% @指令名 屬性=值 %>

常用指令:

  • page指令
  • include指令
  • taglib指令

作用:控制JSP 在轉譯成Servlet類時生成的內容

2.9 page指令

作用:用于導包、設置頁面屬性

Eg:

<%-- 導包 --><%@ page import='java.util.*' %><%@ page import='java.util.*,java.sql.*' %><%-- 設置response.setContentType()方法的參數值 --><%@ page contentType = 'image/gif' %><%-- 設置容器讀取該文件時的解碼 --><%@ page pageEncoding='UTF-8' %>

2.10 include指令

作用:在JSP頁面轉換成Servlet時,能夠將其他文件包含進來,可以包含JSP文件也可以是靜態(tài)的HTML文件。

通過該語句能方便的在每一個JSP頁面中包含導航欄、版權聲明、logo等

語法:

<%@ include file = 'url' %>

Eg:

<%@include file = 'header.html' %><%@include file = 'footer.html' %>

2.11 JSP頁面中的隱含對象

什么是隱含對象?

容器自動創(chuàng)建,在JSP文件中可以直接使用的對象

作用:JSP預先創(chuàng)建的這些對象可以簡化對HTTP請求,響應信息的訪問

JSP知識匯總

JSP知識匯總

3. JSP運行原理

3. 1 JSP是如何運行的

JSP知識匯總

3. 2 JSP是如何轉換成Java

JSP知識匯總

3. 3 如何將靜態(tài)頁面轉化成動態(tài)頁面

step1:拷貝靜態(tài)頁面代碼到JSP頁面

step2:添加page指令pageEncoding和contentType

step3:修改頁面內容與目標內容一致

step4:將需要動態(tài)生成的內容刪除,替換為Java代碼

4. 轉發(fā)

4. 1 什么是轉發(fā)

一個Web組件(Servlet/JSP)將未完成的處理通過容器轉交給另一個Web組件繼續(xù)完成

常見問題:一個Servlet獲得數據之后(比如通過調用dao),將這些數據轉發(fā)給一個JSP,由這個JSP來展現(xiàn)這些數據(比如,以表格的方式來展示)

4. 2 如何實現(xiàn)轉發(fā)

  • 1)綁定數據到request對象
  • 2)獲得轉發(fā)器
  • 3)轉發(fā)

4. 3 綁定數據到request對象

實現(xiàn)綁定

request.setAttribute(String name,Object obj);

name : 綁定名

obj : 綁定值

讀取綁定值

Object request.getAttribute(String name)

如果綁定名對應的值不存在,返回null

4. 4 獲得轉發(fā)器

RequestDispatcher rd = request.getRequestDispatcher(String path);

path:轉發(fā)的目的地,即將未完成的處理繼續(xù)下去的另一個組件,比如一個JSP文件

4. 5 轉發(fā)

實現(xiàn)轉發(fā):rd.forward(request,response);

通常情況下第2步和第3步合并為一行語句,如下:

request.getRequestDispatcher(path).forword(request,response);

4. 6 轉發(fā)的原理

JSP知識匯總

4. 7 轉發(fā)的特點

轉發(fā)以后,地址欄不會發(fā)生變化。原因是轉發(fā)的過程是發(fā)生在服務器內部的,瀏覽器并不知道。

轉發(fā)的目的地必須是同一個應用內部的某個地址

轉發(fā)所涉及的各個web組件會共享同一個request對象和response對象

注意:在forward之后的其他語句還會執(zhí)行嗎?

答:一定會執(zhí)行,只要不報異常。

4. 8 轉發(fā)和重定向的區(qū)別

  • 重定向是瀏覽器發(fā)送請求并收到響應以后再次向一個新地址發(fā)請求;轉發(fā)是服務器收到請求后為了完成響應收到新的地址
  • 重新定向中有兩次請求對象,不共享數據,轉發(fā)只產生一次請求對象且在組件間共享數據
  • 重定向后地址欄地址改變,而轉發(fā)則不會
  • 重定向的新地址可以是任意地址,轉發(fā)到的新地址必須是同一個應用內的某地址

JSP知識匯總

5 JSP開發(fā)常見問題

5.1 異常處理

1)編程式的異常處理

使用轉發(fā)跳轉到指定頁面進行提示說明

try{ //... ... }catch(Exception e){ request.getRequestDispatcher(url).forward(request,response);

2)容器中的聲明式處理

step1:將異常拋給容器,但底層的錯誤提示不要返回給用戶

注意:異常只允許拋service指定的異常,不能超出指定范圍使用如下寫法:throw new ServletException(e);

step2:在web.xml文件中配置錯誤處理頁面節(jié)點

java.servlet.ServletException /error.jsp

5.2 路徑問題

1)路徑使用

  • 鏈接地址
  • 表單提交
  • 重定向 response.sendRedirect(url)
  • 轉發(fā) request.getRequestDispatcher(url)

2)相對路徑

  • 從當前文件出發(fā)到達目標文件所經過的路徑叫做

    相對路徑

  • 書寫格式不以“ / ”開頭
  • 退至上一級目錄以“ . . / ”開頭

JSP知識匯總

3)絕對路徑

  • 以 ” / ” 開頭的路徑都是絕對路徑,不以當前文件的位置作為起- 始,而是以一個固定位置作為起始到達目標文件所經過的路徑
  • 這個固定的位置可能是應用名,也可能是應用名之后

JSP知識匯總

4)路徑的處理技巧

在使用絕對路徑時:

  • 鏈接地址、表單提交、重定向是從應用名開始寫
  • 轉發(fā) 是從應用名之后開始寫
  • 獲得應用的實際部署名稱可使用如下方法:
String request.getContextPath();

謝謝閱讀本文哦,如果喜歡本問可以收藏哦,讓我們一起學習進步!

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多