jsp技術被淘汰了?那還要不要學它?

今天是劉小愛自學Java的第92天。html

感謝你的觀看,謝謝你。前端

話很少說,開始今天的學習:java

首先聲明:jsp這個技術基本被淘汰了,不過重要,用到它的可能性很低,可是有些企業仍是會用到的。web

花一天時間對其作一個簡單的瞭解。後端

1、jsp概述

1jsp出現的緣由瀏覽器

jsp這個技術的出現是爲了解決一個什麼問題?服務器

先看以下狀況:cookie

在Java代碼中,服務器要響應一個HTML頁面給瀏覽器,須要將標籤拼接在代碼中。session

這樣一頓操做下來就會顯得十分地繁瑣,操做麻煩不說,閱讀性還差。app

那有沒有什麼方法解決這個問題呢?

jsp技術就應運而生了,在jsp文件中,既能寫Java代碼,又能寫HTML代碼,特別地厲害。

2jsp定義

JSP全名爲Java Server Pages,翻譯爲java服務器頁面,其本質是一個簡化的Servlet。

它是由Sun公司倡導、許多公司參與一塊兒創建的一種動態網頁技術標準。

大白話就是一個既能書寫Java代碼又能書寫HTML代碼的文件。

3jsp爲何被淘汰了?

jsp被淘汰自己並非由於技術落後的緣由,它之因此被淘汰是由於行業趨勢。

如今強調先後端分離,前端寫前端的代碼,後端寫後端的代碼,沒有必要將前端和後端代碼融合在一塊兒,因此jsp使用就受限了。

固然也並非徹底就沒人用了,只是用的少了。

2、jsp語法

1在jsp中書寫代碼

①註釋格式

在jsp中的註釋格式爲:<%--註釋--%>

②Java代碼編寫

格式爲:<%Java代碼%>,在該格式裏面就能編寫Java代碼。

這樣編寫之後,在瀏覽器上輸入對應的路徑,就能發現能用Java語法在瀏覽器上輸入內容了。

以上也就完成了在jsp文件中寫Java代碼了。

2jsp執行流程

jsp文件爲什麼能夠寫Java代碼,其底層是怎麼樣的一個執行流程呢?畫圖講解:

①瀏覽器訪問demo01.jsp

根據對應的路徑來訪問jsp文件,該jsp文件會被轉化成兩個文件:

demo01_jsp.java和demo01_jsp.class。

這兩個文件對於Java開發者來講簡直不要太熟悉了:一個是Java源碼文件,一個是其對應的字節碼文件。

也就是說jsp文件其實底層被轉換成了Java文件,再執行的Java代碼。

②關於轉換後的Java源碼

打開對應的Java源碼文件,固然上圖中我只截圖了一部分作一個說明,其實源碼遠不止這麼點。

從截圖中的部分代碼能夠看出:

  • <%%>中的代碼被直接解析成java代碼。

  • html部分都被out.write("")方法以字符串的形式拼接,而後響應給瀏覽器。

繞來繞去其實仍是拼接,和最早開始的方法同樣,只不過說jsp中拼接被封裝了,不用咱們寫。

3三種書寫Java代碼的方式

①腳本聲明

格式:<%! 書寫Java代碼 %>

中間有一個感嘆號,這裏面也是能夠編寫Java代碼的。

查看其對應的Java源碼文件,會發現這塊代碼對應於源碼中的成員變量和成員方法

②腳本片斷

格式:<%書寫Java代碼 %>

它比①就少了一個感嘆號,其對應的是源碼中_jspService方法的Java代碼。

在Java中,方法裏面是不能定義一個新的方法的,因此方法定義只能用①的格式來編寫。

③腳本表達式

格式:<%="表達式" %>

其對應的Java代碼就是out.print()。

3、EL表達式

EL表達式就是專門來取代上面三種格式中③腳本表達式的。

格式爲:${str}。其就至關於<%=str%>,其中str爲一個變量。

1四大域對象

根據其範圍從小到大排列:

  • page域:只能在當前頁面有效。
  • request域:只在一次請求或請求域中有效。
  • session域:一次會話(一次或屢次請求和響應)過程當中有效。
  • application域:整個項目過程當中都有效。

2從四大域對象中取值

①設定域對象的值

使用的方法都是setAttribute()方法,參數以鍵值對的方式存值,

②普通方式取值

以page域對象爲例,其格式爲:

${pageScope.pageKey}

pageKey爲page域對象對應的key,使用這種方式就能取出域對象中的值了。

③簡寫方式取值

以page域對象爲例,格式爲:${pageKey}

將pageScope簡化了,直接就是一個key。

可是這樣就會有一個問題,key可能會重複。

畢竟key是人爲命名的,page域對象中的key和request域對象中的key可能同樣。

若是key重複了,會按照從小到大逐級查找。

3從Cookie中取值

①保存Cookie到瀏覽器

在LoginServlet中保存兩個Cookie到瀏覽器:

  • usernameCookie:名爲username,值爲請求中的數據,即登陸界面輸入的用戶名。
  • passwordCookie:名爲password,值爲請求中的數據,也就是登陸界面輸入的密碼。

②取出Cookie對應的值

以usernameCookie爲例,這個Cookie中的key爲usename,根據key來取值。

格式爲:${cookie.username.value}

這樣作有什麼好處?作一個測試:

在第一次登陸輸入用戶名和密碼後,其數據會被保存在cookie中,從而被頁面讀取到。

再次刷新時,用戶名和密碼會自動出現,就不用再次輸入用戶名和密碼了。

最後

謝謝你的觀看。

若是能夠的話,麻煩幫忙點個贊,謝謝你。

本文使用 mdnice 排版

相關文章
相關標籤/搜索