今天是劉小愛自學Java的第92天。
感謝你的觀看,謝謝你。
話不多說,開始今天的學習:
首先聲明:jsp這個技術基本被淘汰了,不太重要,用到它的可能性很低,但是有些企業還是會用到的。
花一天時間對其做一個簡單的了解。
一、jsp概述
1jsp出現的原因
jsp這個技術的出現是為了解決一個什麼問題?
先看如下情況:
在Java代碼中,伺服器要響應一個HTML頁面給瀏覽器,需要將標籤拼接在代碼中。
這樣一頓操作下來就會顯得十分地繁瑣,操作麻煩不說,閱讀性還差。
那有沒有什麼方法解決這個問題呢?
jsp技術就應運而生了,在jsp文件中,既能寫Java代碼,又能寫HTML代碼,特別地厲害。
2jsp定義
JSP全名為Java Server Pages,翻譯為java伺服器頁面,其本質是一個簡化的Servlet。
它是由Sun公司倡導、許多公司參與一起建立的一種動態網頁技術標準。
大白話就是一個既能書寫Java代碼又能書寫HTML代碼的文件。
3jsp為什麼被淘汰了?
jsp被淘汰本身並不是因為技術落後的原因,它之所以被淘汰是因為行業趨勢。
現在強調前後端分離,前端寫前端的代碼,後端寫後端的代碼,沒有必要將前端和後端代碼融合在一起,所以jsp使用就受限了。
當然也並不是完全就沒人用了,只是用的少了。
二、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()。
三、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中,從而被頁面讀取到。
再次刷新時,用戶名和密碼會自動出現,就不用再次輸入用戶名和密碼了。
最後
謝謝你的觀看。
如果可以的話,麻煩幫忙點個讚,謝謝你