2020-03-22

jsp入門 & MVC

(一)JSP的概述

一、什么是JSP

? ? JSP:JavaServer Pages(Java服務(wù)器頁(yè)面)兜看,其實(shí)就是在HTML中嵌入Java代碼

二钥组、為什么學(xué)習(xí)JSP

SUN公司提供了動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù):Servlet,Servlet自身有一些缺點(diǎn)绑谣,SUN公司發(fā)現(xiàn)了這些問(wèn)題党窜,就推出了一個(gè)新的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)JSP

Servlet的缺點(diǎn):

? ? Servlet需要進(jìn)行配置,不方便維護(hù)

? ? Servlet很難向網(wǎng)頁(yè)中輸出HTML頁(yè)面內(nèi)容

(二)JSP的運(yùn)行原理

一借宵、JSP的簡(jiǎn)單使用

1幌衣、創(chuàng)建一個(gè)JSP頁(yè)面

2、運(yùn)行JSP(JSP需要發(fā)布到服務(wù)器中才能運(yùn)行)

發(fā)布項(xiàng)目到Tomcat中

? ? 訪問(wèn)JSP頁(yè)面

http://localhost:8080/web02/demo1/demo1.jsp

二、JSP的運(yùn)行原理

JSP的運(yùn)行原理分析

JSP文件會(huì)翻譯成Java文件豁护,將這個(gè)Java文件編譯生成class文件哼凯,再運(yùn)行class文件

(三)JSP的腳本元素

一、JSP的腳本元素概述

什么是JSP的腳本元素

JSP=HTML+Java代碼+JSP自身的東西

JSP的腳本元素就是在JSP中嵌入Java代碼

二楚里、JSP的腳本元素的分類

1断部、聲明標(biāo)簽

(1)語(yǔ)法:

<%! 變量或方法聲明 %>

寫(xiě)在這個(gè)腳本中的代碼,會(huì)被翻譯成Servlet內(nèi)部的成員變量班缎、或成員方法

(2)用法:

? ? <%!

? ? ? ? //聲明變量

? ? ? ? int i = 3;

%>

2蝴光、表達(dá)式標(biāo)簽

(1)語(yǔ)法:

<%= 表達(dá)式 %>

寫(xiě)在這個(gè)腳本中的代碼,會(huì)被翻譯成方法內(nèi)部的out.print();當(dāng)中的內(nèi)容

(2)用法:

<%= i %>

3达址、程序代碼標(biāo)簽

(1)語(yǔ)法:

<% 程序代碼 %>

寫(xiě)在這個(gè)腳本中的代碼蔑祟,會(huì)被翻譯成方法內(nèi)部的局部變量或方法內(nèi)部的代碼片段

(2)用法:

<%

//程序代碼

int x = 5;

%>

(四)JSP的開(kāi)發(fā)模式之MVC模式

一、JSP開(kāi)發(fā)模式

動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)模式的發(fā)展

(五)開(kāi)發(fā)中的路徑問(wèn)題

一沉唠、路徑問(wèn)題描述

什么時(shí)候會(huì)遇到路徑問(wèn)題

開(kāi)發(fā)中我們會(huì)提供一些頁(yè)面疆虚,在頁(yè)面中會(huì)提供鏈接或者表單,當(dāng)點(diǎn)擊鏈接或表單時(shí)右冻,需要進(jìn)行提交装蓬,提交到Servlet中,從頁(yè)面向Servlet發(fā)送請(qǐng)求的地址(路徑)應(yīng)該如何編寫(xiě)

二纱扭、路徑的分類

1牍帚、相對(duì)路徑

(1)相對(duì)路徑的寫(xiě)法:

相對(duì)路徑不是以/開(kāi)頭的

(2)相對(duì)路徑的使用:

1)在根路徑下的頁(yè)面訪問(wèn)Servlet

demo2.jsp的訪問(wèn)路徑:

? ? ? ? http://localhost:8080/web02/demo2.jsp

ServletDemo1的訪問(wèn)路徑:

? ? ? ? http://localhost:8080/web02/ServletDemo1

2)在某個(gè)目錄下的頁(yè)面訪問(wèn)Servlet

demo2.jsp的訪問(wèn)路徑:

? ? ? ? http://localhost:8080/web02/demo2/demo2.jsp

ServletDemo1的訪問(wèn)路徑(不變):

? ? ? ? http://localhost:8080/web02/ServletDemo1

2、絕對(duì)路徑

(1)絕對(duì)路徑的寫(xiě)法:

通常以/開(kāi)頭

使用絕對(duì)路徑乳蛾,就不需要關(guān)心當(dāng)前文件和要請(qǐng)求的文件之間的相對(duì)位置關(guān)系了

(2)注意:

絕對(duì)路徑分成服務(wù)器端路徑和客戶端路徑

客戶端路徑需要帶工程名

服務(wù)器端路徑不需要帶工程名

(六)案例需求介紹

一暗赶、案例需求描述

1、提供登錄頁(yè)面肃叶,用于用戶登錄(用戶名和密碼需要查詢數(shù)據(jù)庫(kù))

2蹂随、如果登錄失敗,需要回到登錄頁(yè)面(給出提示信息)

3因惭、如果登錄成功岳锁,頁(yè)面進(jìn)行跳轉(zhuǎn),在成功頁(yè)面上顯示登錄成功的總?cè)藬?shù)

二蹦魔、案例流程分析

(七)Request作為域?qū)ο蟠嫒?shù)據(jù)

一激率、Request作為域?qū)ο蟮腁PI

向Request域中保存數(shù)據(jù)

setAttribute(String name, Object o)

從Request域中獲取數(shù)據(jù)

getAttribute(String name)

從Request域中移除數(shù)據(jù)

removeAttribute(String name)

二、Request作為域?qū)ο蟮淖饔梅秶?br>

Request對(duì)象其實(shí)就是從客戶端瀏覽器勿决,向服務(wù)器發(fā)送的一次請(qǐng)求信息的封裝乒躺,那么實(shí)質(zhì)上向Request中所保存的數(shù)據(jù),有效期也是一次請(qǐng)求范圍

一次請(qǐng)求范圍:從客戶端瀏覽器向服務(wù)器發(fā)送一次請(qǐng)求低缩,服務(wù)器針對(duì)這次請(qǐng)求對(duì)瀏覽器作出響應(yīng)嘉冒,當(dāng)服務(wù)器作出響應(yīng)之后,請(qǐng)求對(duì)象就銷毀了,保存在其中的數(shù)據(jù)就無(wú)效了

(八)請(qǐng)求轉(zhuǎn)發(fā)和重定向完成頁(yè)面的跳轉(zhuǎn)

一讳推、請(qǐng)求轉(zhuǎn)發(fā)

1顶籽、請(qǐng)求轉(zhuǎn)發(fā)的寫(xiě)法

(1)通過(guò)ServletRequest對(duì)象獲得RequestDispatcher對(duì)象

getRequestDispatcher(String path)

(2)再根據(jù)RequestDispatcher中的方法進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)

forward(ServletRequest request, ServletResponse response)

2、請(qǐng)求轉(zhuǎn)發(fā)的代碼實(shí)現(xiàn)

3娜遵、請(qǐng)求轉(zhuǎn)發(fā)的效果(請(qǐng)求Servlet顯示JSP)

二蜕衡、重定向

1、重定向的寫(xiě)法

(1)通過(guò)HttpServletResponse對(duì)象中的方法實(shí)現(xiàn):

sendRedirect(String location)

2设拟、重定向的代碼實(shí)現(xiàn)

3、重定向的效果

三久脯、請(qǐng)求轉(zhuǎn)發(fā)和重定向的區(qū)別

1纳胧、請(qǐng)求轉(zhuǎn)發(fā)和重定向的原理

2、請(qǐng)求轉(zhuǎn)發(fā)和重定向區(qū)別總結(jié)

(1)請(qǐng)求轉(zhuǎn)發(fā)是一次請(qǐng)求一次響應(yīng)帘撰,而重定向是兩次請(qǐng)求兩次響應(yīng)

(2)請(qǐng)求轉(zhuǎn)發(fā)地址欄不會(huì)變化跑慕,重定向地址欄發(fā)生變化

(3)請(qǐng)求轉(zhuǎn)發(fā)路徑不帶工程名,重定向需要帶工程名路徑

(4)請(qǐng)求轉(zhuǎn)發(fā)只能在本網(wǎng)站內(nèi)部摧找,重定向可以定向到任何網(wǎng)站

3核行、代碼演示請(qǐng)求轉(zhuǎn)發(fā)和重定向區(qū)別

4、注意:如果需要使用Request進(jìn)行值傳遞蹬耘,需要通過(guò)請(qǐng)求轉(zhuǎn)發(fā)完成芝雪,如果頁(yè)面需要跳轉(zhuǎn)到其他網(wǎng)站,必須使用重定向

(九)案例準(zhǔn)備-MVC的準(zhǔn)備

一综苔、MVC如何在案例中應(yīng)用

二惩系、案例準(zhǔn)備-創(chuàng)建數(shù)據(jù)庫(kù)

1、創(chuàng)建數(shù)據(jù)庫(kù)

create database web02_login charset utf8;

use web02_login;

2如筛、建表語(yǔ)句

create table user(

uid int primary key auto_increment,

username varchar(20),

password varchar(20),

nickname varchar(20)

);

insert into user values(null, ‘zs’, ‘123’, ‘張三’);

insert into user values(null, ‘ls’, ‘123’, ‘李四’);

insert into user values(null, ‘ww’, ‘123’, ‘王五’);

三堡牡、案例準(zhǔn)備-項(xiàng)目環(huán)境搭建

1、項(xiàng)目環(huán)境搭建

(1)創(chuàng)建Web項(xiàng)目

(2)創(chuàng)建相關(guān)的包結(jié)構(gòu)

四杨刨、案例準(zhǔn)備-引入相關(guān)資源

1晤柄、引入相關(guān)的jar包:

? ? MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)包

? ? C3P0連接池所需jar包

? ? DBUtils開(kāi)發(fā)的jar包

2、引入C3P0配置文件

? ? 將配置文件放到工程的src下即可

3妖胀、引入JDBC開(kāi)發(fā)的工具類

五芥颈、案例準(zhǔn)備-創(chuàng)建登錄頁(yè)面

1、創(chuàng)建登錄頁(yè)面

2做粤、登錄頁(yè)面實(shí)現(xiàn)

(十)案例代碼-登錄代碼實(shí)現(xiàn)

一浇借、登錄代碼實(shí)現(xiàn)

1、登錄代碼實(shí)現(xiàn)流程

? ? 登錄頁(yè)面(login.jsp)→登錄的Servlet(LoginServlet)怕品,在這個(gè)Servlet中需要接收數(shù)據(jù)妇垢,將這個(gè)數(shù)據(jù)封裝到一個(gè)JavaBean中,調(diào)用另一個(gè)JavaBean處理數(shù)據(jù)(就是查詢數(shù)據(jù)庫(kù)),根據(jù)處理結(jié)果進(jìn)行頁(yè)面跳轉(zhuǎn)

2闯估、登錄代碼實(shí)現(xiàn)

第一步:在controller包下創(chuàng)建LoginServlet

第二步:在domain下創(chuàng)建一個(gè)User類

第三步:在model包下創(chuàng)建一個(gè)UserModel類

第四步:根據(jù)處理結(jié)果進(jìn)行頁(yè)面跳轉(zhuǎn)

3灼舍、登錄的Servlet的業(yè)務(wù)代碼

二、登錄代碼底層實(shí)現(xiàn)

處理數(shù)據(jù)部分的代碼

三涨薪、登錄代碼錯(cuò)誤信息的回顯

1骑素、錯(cuò)誤信息的回顯代碼

2、錯(cuò)誤信息顯示效果

四刚夺、記錄登錄成功人數(shù)分析

五献丑、記錄登錄成功人數(shù)代碼實(shí)現(xiàn)

1、完成初始化操作

? ? 在服務(wù)器啟動(dòng)的時(shí)候初始化一個(gè)值為0侠姑,將這個(gè)值存入到ServletContext域中

? ? 將這個(gè)Servlet配置成啟動(dòng)時(shí)加載

2创橄、記錄登錄成功的人數(shù)

3、在登錄成功頁(yè)面上顯示總?cè)藬?shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末莽红,一起剝皮案震驚了整個(gè)濱河市妥畏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌安吁,老刑警劉巖醉蚁,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鬼店,居然都是意外死亡网棍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門薪韩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)确沸,“玉大人,你說(shuō)我怎么就攤上這事俘陷÷奚樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拉盾,是天一觀的道長(zhǎng)桨菜。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捉偏,這世上最難降的妖魔是什么倒得? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮夭禽,結(jié)果婚禮上霞掺,老公的妹妹穿的比我還像新娘。我一直安慰自己讹躯,他們只是感情好菩彬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布缠劝。 她就那樣靜靜地躺著,像睡著了一般骗灶。 火紅的嫁衣襯著肌膚如雪惨恭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天耙旦,我揣著相機(jī)與錄音脱羡,去河邊找鬼。 笑死免都,一個(gè)胖子當(dāng)著我的面吹牛锉罐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琴昆,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼氓鄙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了业舍?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤升酣,失蹤者是張志新(化名)和其女友劉穎舷暮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體噩茄,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡下面,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绩聘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沥割。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凿菩,靈堂內(nèi)的尸體忽然破棺而出机杜,到底是詐尸還是另有隱情,我是刑警寧澤衅谷,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布椒拗,位于F島的核電站,受9級(jí)特大地震影響获黔,放射性物質(zhì)發(fā)生泄漏蚀苛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一玷氏、第九天 我趴在偏房一處隱蔽的房頂上張望堵未。 院中可真熱鬧,春花似錦盏触、人聲如沸渗蟹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拙徽。三九已至刨沦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膘怕,已是汗流浹背想诅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岛心,地道東北人来破。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忘古,于是被迫代替她去往敵國(guó)和親徘禁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

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

  • jsp入門 & MVC (一)JSP的概述 一髓堪、什么是JSP ...
    李霜_9191閱讀 258評(píng)論 0 0
  • (一)JSP的概述 一送朱、什么是JSP JSP:JavaServer Pages(Java服務(wù)器頁(yè)面),其實(shí)就是...
    友人Atx閱讀 142評(píng)論 0 0
  • jsp入門 & MVC (一)JSP的概述 一干旁、什么是JSP JSP:JavaServer Pages(Java...
    高海婁閱讀 242評(píng)論 0 0
  • 一驶沼、什么是JSP JSP:JavaServer Pages(Java服務(wù)器頁(yè)面),其實(shí)就是在HTML中嵌入Ja...
    提筆執(zhí)江山閱讀 82評(píng)論 0 0
  • 作業(yè): 一)JSP的概述 一争群、什么是JSPJSP:JavaServer Pages(Java服務(wù)器頁(yè)面)回怜,其實(shí)就是...
    常樂(lè)_b00d閱讀 323評(píng)論 0 0