小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JSP知識匯總

 太極混元天尊 2018-06-22

本期小編將帶你走進(jìn)JSP,學(xué)習(xí)到Java的前后端交互的時(shí)候,我們會接觸到JSP,今天我們來學(xué)習(xí)一下JSP的一些內(nèi)容:

1 JSP的由來

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

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

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

1.2什么是JSP

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

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

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

2. JSP編寫規(guī)范

2.1 如何編寫JSP

step1:寫一個(gè)以” .jsp”為后綴的文件

step2:在該文件中可以包含如下內(nèi)容:

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

2.2 JSP頁面中的HTML 代碼

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

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

2.3 JSP頁面中的注釋

語法:

1)

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

2)<%-- 注釋內(nèi)容 --%>

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

2.4 JSP頁面中的Java代碼

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

  • JSP表達(dá)式
  • JSP小腳本
  • JSP聲明

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

作用:控制頁面中可變內(nèi)容的產(chǎn)生

2.5 JSP表達(dá)式

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

合法內(nèi)容:

變量、變量加運(yùn)算符組合的表達(dá)式、有返回值的方法

轉(zhuǎn)譯成Servlet時(shí)的規(guī)則:

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

Eg:

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

轉(zhuǎn)換成

out.write('

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

');

2.6 JSP小腳本

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

合法內(nèi)容:能夠?qū)懺诜椒ɡ锏腏ava代碼片段都可以作為小腳本

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

Eg:

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

Your name is <%=name %>

<% }%>

轉(zhuǎn)換成如下代碼插入到service方法中

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

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

');

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

2.7 JSP聲明

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

合法內(nèi)容:成員屬性或成員方法的聲明

轉(zhuǎn)譯成Servlet時(shí)的規(guī)則:成為JSP頁面轉(zhuǎn)譯成的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 在轉(zhuǎn)譯成Servlet類時(shí)生成的內(nèi)容

2.9 page指令

作用:用于導(dǎo)包、設(shè)置頁面屬性

Eg:

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

2.10 include指令

作用:在JSP頁面轉(zhuǎn)換成Servlet時(shí),能夠?qū)⑵渌募M(jìn)來,可以包含JSP文件也可以是靜態(tài)的HTML文件。

通過該語句能方便的在每一個(gè)JSP頁面中包含導(dǎo)航欄、版權(quán)聲明、logo等

語法:

<%@ include file = 'url' %>

Eg:

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

2.11 JSP頁面中的隱含對象

什么是隱含對象?

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

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

JSP知識匯總

JSP知識匯總

3. JSP運(yùn)行原理

3. 1 JSP是如何運(yùn)行的

JSP知識匯總

3. 2 JSP是如何轉(zhuǎn)換成Java

JSP知識匯總

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

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

step2:添加page指令pageEncoding和contentType

step3:修改頁面內(nèi)容與目標(biāo)內(nèi)容一致

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

4. 轉(zhuǎn)發(fā)

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

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

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

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

  • 1)綁定數(shù)據(jù)到request對象
  • 2)獲得轉(zhuǎn)發(fā)器
  • 3)轉(zhuǎn)發(fā)

4. 3 綁定數(shù)據(jù)到request對象

實(shí)現(xiàn)綁定

request.setAttribute(String name,Object obj);

name : 綁定名

obj : 綁定值

讀取綁定值

Object request.getAttribute(String name)

如果綁定名對應(yīng)的值不存在,返回null

4. 4 獲得轉(zhuǎn)發(fā)器

RequestDispatcher rd = request.getRequestDispatcher(String path);

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

4. 5 轉(zhuǎn)發(fā)

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

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

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

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

JSP知識匯總

4. 7 轉(zhuǎn)發(fā)的特點(diǎn)

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

轉(zhuǎn)發(fā)的目的地必須是同一個(gè)應(yīng)用內(nèi)部的某個(gè)地址

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

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

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

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

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

JSP知識匯總

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

5.1 異常處理

1)編程式的異常處理

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

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

2)容器中的聲明式處理

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

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

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

java.servlet.ServletException /error.jsp

5.2 路徑問題

1)路徑使用

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

2)相對路徑

  • 從當(dāng)前文件出發(fā)到達(dá)目標(biāo)文件所經(jīng)過的路徑叫做

    相對路徑

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

JSP知識匯總

3)絕對路徑

  • 以 ” / ” 開頭的路徑都是絕對路徑,不以當(dāng)前文件的位置作為起- 始,而是以一個(gè)固定位置作為起始到達(dá)目標(biāo)文件所經(jīng)過的路徑
  • 這個(gè)固定的位置可能是應(yīng)用名,也可能是應(yīng)用名之后

JSP知識匯總

4)路徑的處理技巧

在使用絕對路徑時(shí):

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

謝謝閱讀本文哦,如果喜歡本問可以收藏哦,讓我們一起學(xué)習(xí)進(jìn)步!

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多