天是劉小愛自學Java的第92天。
感謝你的觀看,謝謝你。
話不多說,開始今天的學習:
首先聲明:jsp這個技術基本被淘汰了,不太重要,用到它的可能性很低,但是有些企業還是會用到的。
花一天時間對其做一個簡單的了解。
1jsp出現的原因
jsp這個技術的出現是為了解決一個什么問題?
先看如下情況:
在Java代碼中,服務器要響應一個HTML頁面給瀏覽器,需要將標簽拼接在代碼中。
這樣一頓操作下來就會顯得十分地繁瑣,操作麻煩不說,閱讀性還差。
那有沒有什么方法解決這個問題呢?
jsp技術就應運而生了,在jsp文件中,既能寫Java代碼,又能寫HTML代碼,特別地厲害。
2jsp定義
JSP全名為Java Server Pages,翻譯為java服務器頁面,其本質是一個簡化的Servlet。
它是由Sun公司倡導、許多公司參與一起建立的一種動態網頁技術標準。
大白話就是一個既能書寫Java代碼又能書寫HTML代碼的文件。
3jsp為什么被淘汰了?
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源碼文件,當然上圖中我只截圖了一部分做一個說明,其實源碼遠不止這么點。
從截圖中的部分代碼可以看出:
繞來繞去其實還是拼接,和最先開始的方法一樣,只不過說jsp中拼接被封裝了,不用我們寫。
3三種書寫Java代碼的方式
①腳本聲明
格式:<%! 書寫Java代碼 %>
中間有一個感嘆號,這里面也是可以編寫Java代碼的。
查看其對應的Java源碼文件,會發現這塊代碼對應于源碼中的成員變量和成員方法
②腳本片段
格式:<%書寫Java代碼 %>
它比①就少了一個感嘆號,其對應的是源碼中_jspService方法的Java代碼。
在Java中,方法里面是不能定義一個新的方法的,所以方法定義只能用①的格式來編寫。
③腳本表達式
格式:<%="表達式" %>
其對應的Java代碼就是out.print()。
EL表達式就是專門來取代上面三種格式中③腳本表達式的。
格式為:${str}。其就相當于<%=str%>,其中str為一個變量。
1四大域對象
根據其范圍從小到大排列:
2從四大域對象中取值
①設定域對象的值
使用的方法都是setAttribute()方法,參數以鍵值對的方式存值,
②普通方式取值
以page域對象為例,其格式為:
${pageScope.pageKey}
pageKey為page域對象對應的key,使用這種方式就能取出域對象中的值了。
③簡寫方式取值
以page域對象為例,格式為:${pageKey}
將pageScope簡化了,直接就是一個key。
但是這樣就會有一個問題,key可能會重復。
畢竟key是人為命名的,page域對象中的key和request域對象中的key可能一樣。
如果key重復了,會按照從小到大逐級查找。
3從Cookie中取值
①保存Cookie到瀏覽器
在LoginServlet中保存兩個Cookie到瀏覽器:
②取出Cookie對應的值
以usernameCookie為例,這個Cookie中的key為usename,根據key來取值。
格式為:${cookie.username.value}
這樣做有什么好處?做一個測試:
在第一次登錄輸入用戶名和密碼后,其數據會被保存在cookie中,從而被頁面讀取到。
再次刷新時,用戶名和密碼會自動出現,就不用再次輸入用戶名和密碼了。
謝謝你的觀看。
如果可以的話,麻煩幫忙點個贊,謝謝你。
向對象是程序中一個重要的思想,就是程序中所有的操作都是通過對象完成的。
舉例來說:
一切操作都要通過對象,也就是所謂的面向對象,那么對象到底是什么呢?這就要先說到程序是什么,計算機程序的本質就是對現實事物的抽象,抽象的反義詞是具體,比如:照片是對一個具體的人的抽象,汽車模型是對具體汽車的抽象等等。程序也是對事物的抽象,在程序中我們可以表示一個人、一條狗、一把槍、一顆子彈等等所有的事物。一個事物到了程序中就變成了一個對象。
在程序中所有的對象都被分成了兩個部分數據和功能,以人為例,人的姓名、性別、年齡、身高、體重等屬于數據,人可以說話、走路、吃飯、睡覺這些屬于人的功能。數據在對象中被稱為性,而功能就被稱為方法。所以簡而言之,在程序中一切皆是對象
想要面向對象和操作對象,首先便要先擁有對象,所以接下來就是怎么創建對象
要想面向對象,操作對象,首先便要擁有對象,那么下一個問題就是如何創建對象。要創建對象,必須要先定義類,所謂的類可以理解為對象的模型,程序中可以根據類創建指定類型的對象,舉例來說:可以通過Person類來創建人的對象,通過Dog類創建狗的對象,通過Car類來創建汽車的對象,不同的類可以用來創建不同的對象。
分析:看看字面量創建對象和new Object創建對象兩種方式,其實字面量創建對象的本質就是new Object創建對象
// 字面量創建對象
const person2={name: '張三', age: 10}
console.log(person2) // { name: '林三心', age: 10 }
本質是
// new Object創建對象
const person2=new Object()
person2.name='張三'
person2.age=10
console.log(person2) // { name: '張三', age: 10 }
因為構造函數的prototype和其實例的_proto_是指向同一個地方的,所以我們來驗證一下
const person2={name: '張三', age: 10}
const person3=new Object()
person3.name="張三"
person3.age=10
person3._proto==Object.prototype // true
person2._proto==Object.prototype //true
其中new操作符都做了什么呢?
//1.聲明構造函數
function Student(name, age, sex) {
//1.隱式的創建了一個空對象,讓this指向這個空對象
//this=new Object();
//2.執行構造函數中代碼(添加屬性和方法)
//添加屬性
this.name=name;
this.age=age;
this.sex=sex;
//添加方法
this.study=function () {
console.log("good good study,day day up!!!,好好學習,天天自閉");
}
//4.隱式的返回創建好的對象
//return this
}
var s2=new Student("曾慶文",18,"女");
console.log(s2); // {name: "曾慶文", age: 18, sex: "女", study: ?}
乎每個互聯網企業都需要Web前端工程師,需求量大、薪資高,自然吸引了很多人加入。很多想要通過Web前端培訓學習的人會擔憂,武漢Web前端培訓課程怎么樣?都能學到些什么?下面,千鋒武漢Web前端培訓學員就分享自己在武漢Web前端培訓學習的親身經歷。
從一個懵懵懂懂,四處碰壁的迷茫少年,一個月以前我走進了千鋒武漢Web前端培訓。這里的學習氛圍,授課老師和管理制度都讓我受益匪淺,好似又回到了上學時代。來到這里學習了一個多月了,讓我覺得這里就是一個溫馨的大家庭。
我作為一個菜鳥,頭一次接觸程序代碼。剛開始學習的時候完全是手足無措,總是比別人慢半拍,后來隨著不斷的理解,我也慢慢融入了學習之中,現在想想來到千鋒武漢Web前端培訓學習還是蠻有趣的。
第一階段我們主要學習了HTML與CSS。說實話不學不知道,學了嚇一跳。原來如今網絡上眼花繚亂的網頁都是用代碼寫出來的。一張張圖片、各種動畫及效果,簡直令我大開眼界。我們在陳老師的教導下,從一開始的畫色塊,慢慢的組建框架,加上各種點擊效果,一步一步的創建一個網頁。這里面離不開老師細心地教授,當然也有我們各自付出的汗水。老實說學習了CSS我更進一步的理解了細心地重要性,往往寫錯一個單詞,甚至一個字母都是致命的錯誤,有句話說的妙,細節決定成敗是準沒錯的。
回頭想想,在千鋒武漢Web前端培訓班這一個多月里我確實進步了不少,無論是態度還是自我約束。當然這些都離不開我的選擇,走進了千鋒就沒想過要回頭,所以在接下來的學習中我會加油,決不給自己留遺憾。也希望千鋒的學員們共同努力,朝著自己的夢想加油!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。