JavaWeb階段總結(jié)

在學(xué)的web基礎(chǔ)階段的過程中,始終要放著三塊內(nèi)容.第一塊是瀏覽器,第二是服務(wù)器,第三是數(shù)據(jù)庫(kù).

瀏覽器部分

在瀏覽器部分,已經(jīng)學(xué)習(xí)了html,css,JavaScript和bootstrap

其中html提供頁(yè)面的展示功能,給整個(gè)網(wǎng)站提供基礎(chǔ)的架構(gòu).在學(xué)習(xí)html中最重要的部分是form表單

Css給頁(yè)面提供渲染的功能,讓網(wǎng)頁(yè)能夠更加的美觀漂亮.

JavaScript提供了整個(gè)網(wǎng)站的靈魂,控制網(wǎng)站的特效展示.

之后在瀏覽器部分學(xué)習(xí)了bootstrap,bootstrap這個(gè)框架集成了前面提到的html,css,和JavaScript.bootstrap主要是用來(lái)做響應(yīng)式頁(yè)面的,能夠根據(jù)當(dāng)前訪問的瀏覽器屏幕大小,來(lái)響應(yīng)不同格式的頁(yè)面.

MySQL數(shù)據(jù)庫(kù)部分

MySQL之單表

學(xué)完了瀏覽器部分,就開始學(xué)習(xí)數(shù)據(jù)庫(kù)部分,在學(xué)習(xí)mysql 的第一天,都是對(duì)單個(gè)表進(jìn)行一些操作

主要是對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表以及表中的記錄進(jìn)行的增刪改查.

其中,對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表的操作 用的是sql語(yǔ)句中的DDL數(shù)據(jù)定義語(yǔ)言. DDL數(shù)據(jù)定義語(yǔ)句的主要關(guān)鍵詞是create , drop 和alter

刪除數(shù)據(jù)庫(kù)表中的記錄,涉及到了 delete和truncate的區(qū)別. Detele刪除表中所有的記錄的語(yǔ)句是 detele from 表的名稱, 在表的名稱后面不寫任何的條件代表刪除表中的所有的數(shù)據(jù),delete它是一條記錄一條記錄的刪除,如果用delete來(lái)刪除表中的所有數(shù)據(jù)之前開啟了事務(wù),那么在刪除了數(shù)據(jù)之后,可以通過roll back 來(lái)回滾,把數(shù)據(jù)還原回來(lái). Delete是屬于DML數(shù)據(jù)操縱語(yǔ)句

truncate刪除表的格式 truncate table 表名 它是直接把一張表給干掉,重新創(chuàng)建一個(gè)和之前表的結(jié)構(gòu)一樣的表. Truncate屬于DDL數(shù)據(jù)定義語(yǔ)句,事務(wù)不能作用在DDL語(yǔ)句上.

sql語(yǔ)句的書寫順序,SFWGHO
select from where group having order 的縮寫

提到sql語(yǔ)句的書寫語(yǔ)句,就要說說sql語(yǔ)句的解析順序 f...w...g...h...s...o

from 首先被解析是因?yàn)?首先要確定從哪些表中查詢數(shù)據(jù),先要把表找到

Where 第二個(gè)被解析是因?yàn)橐Y選數(shù)據(jù)庫(kù)表中哪些行的數(shù)據(jù)

Group by 是要對(duì)篩選的數(shù)據(jù)進(jìn)行分組

Having 是對(duì)分組后的數(shù)再次進(jìn)行篩選

select,要篩選數(shù)據(jù)庫(kù)表中哪些列的數(shù)據(jù)

最后是order by 把篩選的數(shù)據(jù)進(jìn)行排序

MySQL之多表

接著在學(xué)習(xí)mysql的第二天學(xué)了多表的設(shè)計(jì)原則和多表的查詢

多表的設(shè)計(jì)原則,

如果是一對(duì)多的關(guān)系,先建立一表,再建立多表,多表中的外鍵為一表的主鍵

如果是多對(duì)多的關(guān)系,那么就要建立一張中間表,這個(gè)中間表至少要有兩個(gè)字段,這兩個(gè)字段分別為兩個(gè)多表的主鍵.建立中間表的原因是,可以把多對(duì)多的表關(guān)系,變成兩個(gè)一對(duì)多

如果一對(duì)一的關(guān)系,可以認(rèn)為是一對(duì)多的特殊情況,可以把一對(duì)一的兩個(gè)表,合并為一張表

接著是多表的查詢

多表查詢的使用場(chǎng)景是,想要查詢的數(shù)據(jù)的結(jié)果,涉及到多張表中的時(shí)候

多表查詢的基礎(chǔ)是交叉查詢,也叫笛卡爾積,它是多張表的無(wú)條件聯(lián)合查詢, 是多表查詢的基礎(chǔ).

多表查詢分為內(nèi)連接查詢,外連接查詢和子查詢

其中,內(nèi)連接查詢 相當(dāng)于高中學(xué)的集合,取兩個(gè)集合的交集

內(nèi)連接查詢分為隱式的連接查詢和顯示的內(nèi)連接查詢

接著是外連接查詢,外連接查詢的使用場(chǎng)景是當(dāng)你無(wú)論如何都要顯示其中一個(gè)表的所有數(shù)據(jù)以及兩個(gè)表中滿足條件的數(shù)據(jù)的時(shí)候,就會(huì)用到外連接查詢.

例如一個(gè)應(yīng)用場(chǎng)景是,員工表和部門表,有個(gè)部門沒有員工,但是要統(tǒng)計(jì)所有部門員工的人數(shù).

最后是子查詢,子查詢的本質(zhì)就是sql語(yǔ)句的嵌套,一個(gè)表查詢的結(jié)果作為了另外一個(gè)查詢的條件.在實(shí)際的開發(fā)中,如果查詢的結(jié)果能夠用多表查詢實(shí)現(xiàn),就不推薦子查詢,因?yàn)樽硬樵兊男阅軟]有多表查詢的性能好.

數(shù)據(jù)庫(kù)之JDBC

學(xué)完了mysql之后,接著學(xué)習(xí)了jdbc,之所以要學(xué)習(xí)jdbc,是因?yàn)榍懊嫣岬降娜髩K內(nèi)容,瀏覽器,服務(wù)器和數(shù)據(jù)庫(kù). 前面講的是瀏覽器和數(shù)據(jù)庫(kù)部分 ,那么服務(wù)器就要作為中間的橋梁,來(lái)和瀏覽器和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的交互. 數(shù)據(jù)庫(kù)和服務(wù)器進(jìn)行連接的橋梁就是我們學(xué)的JDBC技術(shù).通過Java語(yǔ)言來(lái)操作數(shù)據(jù)庫(kù).在學(xué)JDBC的第一天,主要是用JDBC原生的方式來(lái)操作數(shù)據(jù)庫(kù),首先需要加載mysql的驅(qū)動(dòng),獲取與數(shù)據(jù)庫(kù)的連接,再獲取執(zhí)行SQL語(yǔ)句的對(duì)象,接著編寫sql語(yǔ)句,執(zhí)行sql之后.獲得了一個(gè)ResultSet結(jié)果集,需要遍歷結(jié)果集才能看到查詢的結(jié)果,最后是釋放資源.

步驟非常的繁瑣,因此在第二天學(xué)習(xí)了DBUtils這個(gè)工具類庫(kù).

使用這個(gè)工具類,實(shí)現(xiàn)了用兩行代碼就能完成對(duì)數(shù)據(jù)庫(kù)的增刪改查,DBUtils的本質(zhì)是對(duì)JDBC的封裝,我們后面要學(xué)的hibernate框架和mybatis框架,他們的本質(zhì)也是對(duì)JDBC的封裝,這兩個(gè)框架也是用來(lái)操作數(shù)據(jù)庫(kù),完成對(duì)數(shù)據(jù)的增刪改查.

要使用DBUtils就需要獲取數(shù)據(jù)源DataSource,因此學(xué)習(xí)了C3P0連接池.通過new 一個(gè)ComboPooledDataSource()對(duì)象來(lái)獲取數(shù)據(jù)源.

服務(wù)器端技術(shù)

之后就是學(xué)的服務(wù)器端的技術(shù).

服務(wù)器端的核心技術(shù)有servlet request response

前面提到服務(wù)器和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的交互用到的是JDBC技術(shù). 那么瀏覽器和服務(wù)器進(jìn)行數(shù)據(jù)的交互,就要用到request 和response對(duì)象.瀏覽器向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求的數(shù)據(jù)就都會(huì)封裝到request對(duì)象中.服務(wù)器向?yàn)g覽器響應(yīng),響應(yīng)的數(shù)據(jù)就封裝到了response對(duì)象中.

Request和response都是服務(wù)器端創(chuàng)建好的,傳遞給servlet程序.servlet是一種動(dòng)態(tài)的web技術(shù),動(dòng)態(tài)的web技術(shù)是指訪問同一個(gè)網(wǎng)站,在不同時(shí)間訪問這個(gè)網(wǎng)站,或者不同的用戶訪問這個(gè)網(wǎng)站,網(wǎng)頁(yè)所顯示的內(nèi)容是不一樣的.

Request和response涉及到了請(qǐng)求轉(zhuǎn)發(fā)和重定向這兩個(gè)知識(shí)點(diǎn)

首先請(qǐng)求轉(zhuǎn)發(fā)調(diào)用的是request.getRequestDispatcher("/login.jsp").forward(request, response);

后面的.forward容易忘記,如果沒有寫.forward,就無(wú)法跳轉(zhuǎn)頁(yè)面

重定向調(diào)用的是response.sendRedirect("/login_web/success.jsp");

請(qǐng)求轉(zhuǎn)發(fā)的里面的路徑是寫給服務(wù)器用的,因此路徑的第一個(gè)斜杠就代表的是當(dāng)前的項(xiàng)目,在路徑里面就不用寫項(xiàng)目的名稱了,如果在請(qǐng)求轉(zhuǎn)發(fā)的路徑里面寫了項(xiàng)目的名稱,就會(huì)導(dǎo)致在頁(yè)面跳轉(zhuǎn)的時(shí)候,瀏覽器的地址欄上,會(huì)出現(xiàn)兩次項(xiàng)目的路徑,會(huì)報(bào)404的錯(cuò)誤

重定向里面的路徑是寫給瀏覽器用的, 路徑的第一個(gè)斜杠就代表的是主機(jī)名,所以需要在路徑里面寫項(xiàng)目的名稱.

之后學(xué)習(xí)了jsp,它的本質(zhì)為servlet.但是在jsp上能夠?qū)慗ava代碼和html代碼,還有學(xué)習(xí)的EL表達(dá)式和JSTL讓Java代碼在jsp中寫得更加簡(jiǎn)潔,可讀性更強(qiáng).

學(xué)了jsp技術(shù)之后,學(xué)了會(huì)話技術(shù)Cookie和Session.

會(huì)話技術(shù),就是用戶打開瀏覽器,訪問不同的資源直到用戶關(guān)閉瀏覽器,這整個(gè)過程,被認(rèn)為是一次會(huì)話.會(huì)話技術(shù)的作用是保存用戶在訪問資源的時(shí)候產(chǎn)生的一些數(shù)據(jù).

比如說記錄用戶上次訪問時(shí)間,用的是Cookie,例如做的登錄案例,記住用戶名功能也是用Cookie

校驗(yàn)驗(yàn)證碼的功能是把隨機(jī)生成的驗(yàn)證碼存儲(chǔ)在Session 中.

登錄成功的頁(yè)面,獲取用戶的名稱,用的也是Session.

Cookie的注意事項(xiàng):

  • 第一是Cookie不能跨瀏覽器

  • 第二是Cookie不支持中文,在new Cookie的時(shí)候,在構(gòu)造方法里面的name 和value不能寫中文.

學(xué)了Cookie之后,學(xué)了session, session它是基于cookie的,服務(wù)器的response對(duì)象調(diào)用addCookie()方法,給瀏覽器回寫了session的id.

Session和Servlet一樣都是域?qū)ο?都有他們的生命周期.

生命周期指的是一個(gè)對(duì)象從創(chuàng)建到銷毀的過程..

  • Servlet的生命周期: 當(dāng)客戶端第一次訪問該Servlet的時(shí)候才會(huì)創(chuàng)建一個(gè)Servlet的對(duì)象,那么Servlet中的init方法就會(huì)執(zhí)行(init只會(huì)執(zhí)行一次).任何一次從客戶端發(fā)送的請(qǐng)求,那么服務(wù)器創(chuàng)建一個(gè)新的線程執(zhí)行Servlet中service方法為這次請(qǐng)求服務(wù).service方法的內(nèi)部根據(jù)請(qǐng)求的方式的不同調(diào)用不同doXXX的方法.當(dāng)Servlet從服務(wù)器中移除或者關(guān)閉服務(wù)器的時(shí)候,Servlet對(duì)象就會(huì)被銷毀.destroy的方法就會(huì)執(zhí)行,垃圾回收就會(huì)將Servlet對(duì)象回收掉芬膝。

  • Session的生命周期今天上午學(xué)了: 當(dāng)?shù)谝淮握{(diào)用request.getSession()的時(shí)候,創(chuàng)建session,或者 訪問jsp頁(yè)面的也會(huì)創(chuàng)建Session,因?yàn)閖sp頁(yè)面里面有9九大內(nèi)置對(duì)象.包含了session

銷毀session的三種情況:

  • 第一種是服務(wù)器的非正常關(guān)閉,比如說點(diǎn)擊控制臺(tái)的紅色按鈕強(qiáng)制關(guān)機(jī).

  • 第二種是session超時(shí)了. 默認(rèn)情況下是30分鐘.

  • 第三種情況是手動(dòng)的銷毀session,也是我們?cè)诘卿洶咐杏玫姆椒ㄕ{(diào)用Session.invalidate();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忆首,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子你雌,更是在濱河造成了極大的恐慌吼鱼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祖凫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酬凳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門惠况,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宁仔,你說我怎么就攤上這事稠屠。” “怎么了翎苫?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵权埠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我拉队,道長(zhǎng)弊知,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任粱快,我火速辦了婚禮秩彤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘事哭。我一直安慰自己漫雷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布鳍咱。 她就那樣靜靜地躺著降盹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谤辜。 梳的紋絲不亂的頭發(fā)上蓄坏,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音丑念,去河邊找鬼涡戳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛脯倚,可吹牛的內(nèi)容都是我干的渔彰。 我是一名探鬼主播嵌屎,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恍涂!你這毒婦竟也來(lái)了宝惰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤再沧,失蹤者是張志新(化名)和其女友劉穎尼夺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體产园,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汞斧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了什燕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粘勒。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屎即,靈堂內(nèi)的尸體忽然破棺而出庙睡,到底是詐尸還是另有隱情,我是刑警寧澤技俐,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布乘陪,位于F島的核電站,受9級(jí)特大地震影響雕擂,放射性物質(zhì)發(fā)生泄漏啡邑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一井赌、第九天 我趴在偏房一處隱蔽的房頂上張望谤逼。 院中可真熱鬧,春花似錦仇穗、人聲如沸流部。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枝冀。三九已至,卻和暖如春耘子,著一層夾襖步出監(jiān)牢的瞬間果漾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工谷誓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跨晴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓片林,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子费封,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,814評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法焕妙,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法弓摘,繼承相關(guān)的語(yǔ)法焚鹊,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • 1. 工作:上線earth的首頁(yè)更新的搜索功能韧献。 注意點(diǎn)擊一個(gè)時(shí)在下面列表不顯示同樣的字符末患。 2. 制作了周一到周...
    尛雅閱讀 133評(píng)論 0 1
  • 《當(dāng)幸福來(lái)敲門》中的主人公Chris去面試時(shí)璧针,沒有西裝革履,因?yàn)閯倧谋O(jiān)獄出來(lái)渊啰,衣服臟兮兮的探橱。當(dāng)面試官問他,一個(gè)面試...
    慧眼識(shí)人才_(tái)陳慧閱讀 181評(píng)論 0 0
  • 那是星期二的中午绘证,我和同學(xué)一起去吃飯隧膏。他們邊吃邊聊,而我也早已習(xí)慣當(dāng)聽眾了嚷那,只是時(shí)不時(shí)說上兩句胞枕。 作為課代表的我,...
    李藝然閱讀 180評(píng)論 0 0