最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

項(xiàng)目分工和制作方法,易買網(wǎng),規(guī)格說(shuō)明書 ,STRUTS2,正則表達(dá)式老師答案【詩(shī)書畫唱】

2021-05-07 15:12 作者:詩(shī)書畫唱  | 我要投稿

目錄:

Java Web小組項(xiàng)目:網(wǎng)上商城項(xiàng)目個(gè)人制作過(guò)程

個(gè)人想法

先要把數(shù)據(jù)庫(kù)寫好

先做出標(biāo)準(zhǔn)的,再做出創(chuàng)新的


20210111_STRUTS2AJAX支持的作業(yè)(因?yàn)楸容^基礎(chǔ)簡(jiǎn)單,所以這些是留給讀者的作業(yè))


正則表達(dá)式題目和個(gè)人或老師給出的答案


表單自動(dòng)提交和ajax方式提交作業(yè)


反射作業(yè)


STRUTS2基本配置作業(yè)


注解作業(yè)


STRUTS2分模塊和包配置方法作業(yè)


STRUTS2action配置作業(yè)


STRUTS2通配符配置和servletAPI調(diào)用方法作業(yè)


STRUTS2result配置和類型轉(zhuǎn)換作業(yè)


STRUTS2附件上傳和下載的作業(yè)


自己多BaseDao萬(wàn)能Dao的機(jī)智改進(jìn),變得更通用


Java web易買網(wǎng)項(xiàng)目要求,個(gè)人的合作分工等的經(jīng)驗(yàn)技巧分享,網(wǎng)上商城系統(tǒng)

項(xiàng)目要求


個(gè)人的合作分工等的經(jīng)驗(yàn)技巧分享


網(wǎng)上商城系統(tǒng)需求分析規(guī)格說(shuō)明書?


Java web 作業(yè):實(shí)現(xiàn)萬(wàn)能DAO中的修改和刪除功能,商品模塊的增刪改查

Java Web小組項(xiàng)目:網(wǎng)上商城項(xiàng)目個(gè)人制作過(guò)程

個(gè)人想法

做出很多版本,版本越多越好,之后選其中的好的版本給別人看,可以把所有版本綜合成一個(gè)版本。先做出框架,骨架,之后填充。無(wú)論什么事情,想做好都要先把骨架做好,之后填充。


做事一步一步地記錄,截圖到專欄,讓自己的思路更加的清晰等。




先要把數(shù)據(jù)庫(kù)寫好


先要把數(shù)據(jù)庫(kù)寫好(個(gè)人的經(jīng)驗(yàn),先根據(jù)圖析,大致地設(shè)表,我認(rèn)為表的數(shù)量越少越好,可以把2張表的內(nèi)容合在一列,之后寫代碼會(huì)很輕松,之后可能根據(jù)需求變多而給表添加或修改列名等內(nèi)容):



先做出標(biāo)準(zhǔn)的,再做出創(chuàng)新的

先做出標(biāo)準(zhǔn)的,再做出創(chuàng)新的。學(xué)會(huì)復(fù)制一些為自己所用,節(jié)省時(shí)間,但不可以抄襲,要有自己的創(chuàng)新,原創(chuàng)。用上一些別人的設(shè)計(jì),設(shè)置等。很多設(shè)計(jì)等可以純?cè)瓌?chuàng),其他的大家都在復(fù)制的公用部分可以復(fù)制等等。





____


20210111_STRUTS2AJAX支持的作業(yè)(因?yàn)楸容^基礎(chǔ)簡(jiǎn)單,所以這些是留給讀者的作業(yè))

創(chuàng)建Book表,包含有id,name(名字),author(作者),content(內(nèi)容)四個(gè)屬性。

在這個(gè)表中插入至少五條數(shù)據(jù)。

使用MVC模式實(shí)現(xiàn)頁(yè)面一打開,將所有的書名拼接成一個(gè)下拉框

要求使用json-plugin.jar包實(shí)現(xiàn)。

bean

dao

action




正則表達(dá)式題目和個(gè)人或老師給出的答案


1、判斷一個(gè)五位數(shù)字是否是回文數(shù)字。(子表達(dá)式,捕獲,反向引用)12321 56965


2、用js寫一個(gè)函數(shù),判斷字符串是否是這樣組成的:第一個(gè)必須是字母,后面可以是字母、數(shù)字、下劃線,總長(zhǎng)度為5-20。如果符合條件返回1,否則返回0。函數(shù)原型:function checkString(str)



3、以下函數(shù)的功能是查詢?yōu)g覽器url中字符串參數(shù),請(qǐng)補(bǔ)全代碼

function parseQueryString(name) {

? ? var regexS = "[\\?&]" + name + "=([^&#]*)";

? ? var regx = new RegExp(regexS);

? ? var rs = regx.exec(http://localhost:8080/demo/?act=admin&pwd=123);

? ? if(rs == null) {

? ? ? ? return “”;

? ? }else{

? ? ? ? return ______________;??

? ? }

}

4、用正則表達(dá)式實(shí)現(xiàn)JS變量命名規(guī)則


5、“我的銀行賬號(hào)是xxxxx,我的電話號(hào)碼是0731-888888”,將這段文本中的區(qū)號(hào)提取出來(lái)。

6、從一段文本中找到身份證號(hào)碼,然后將生日提取出來(lái)。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

//判斷一個(gè)五位數(shù)是否是回文數(shù)字

var num = '12341';

//方法一

//獲取首位和末尾的數(shù)字

var n1 = num.charAt(0);

//alert(n1);

var n2 = num.charAt(num.length - 1);

//alert(n2);

var n3 = num.charAt(1);

var n4 = num.charAt(num.length - 2);

if(n1 == n2 && n3 == n4) {

//alert('是回文數(shù)字');

} else {

//alert('不是回文數(shù)字')

}

//方法二:正則表達(dá)式實(shí)現(xiàn)

//找出字符串中出現(xiàn)的四個(gè)連續(xù)的相同的字母

//var reg2 = /([a-zA-Z])\1{3}/;

//alert(reg2.test('1onennncp'));

var reg1 = /(\d)(\d)\d\2\1/;

//alert(reg1.test(num));

//輸入任意位數(shù)的數(shù)字,判斷它是否是一個(gè)回文數(shù)字


//第一個(gè)必須是字母,后面可以是字母、數(shù)字、下劃線,

//總長(zhǎng)度為5-20。如果符合條件返回1,否則返回0。

function checkString(str){

//var reg = /^[a-zA-Z]\w{4,19}$/;

// if(reg.test(str)) {

// return 1;

// } else{

// return 0;

? ? ? ? ? ? ? ? return /^[a-zA-Z]\w{4,19}$/.test(str) ? 1 : 0;

}


//alert(checkString('a_33fnep666'));

//?act=admin,&pwd=123

function parseQueryString(name) {

//創(chuàng)建了一個(gè)正則表達(dá)式對(duì)象

? ? var regexS = "[\\?&]" + name + "=([^&#]*)";

? ? var regx = new RegExp(regexS);

? ? var rs = regx.exec('http://localhost:8080/demo/?act=admin&pwd=123&sex=男');

? ? if(rs == null) {

? ? ? ? return '';

? ? }else{

? ? ? ? return rs[1];

? ? }

}

//alert(parseQueryString('sex'));


//JS變量命名規(guī)則:必須以數(shù)字字母下劃線和$組成,不能以數(shù)字開頭

var reg2 = /^[a-zA-Z\$_][\w\$]*$/;


var s = '我的銀行賬號(hào)是xxxxx,我的電話號(hào)碼是0731-8888888';

var reg3 = /(0\d{3})\-\d{7}/;

var res = reg3.exec(s);

//console.log(res[1]);


var sr = '我的身份證號(hào)碼是430108198712310014。';

var reg4 = /\d{6}(\d{8})\d{4}/;

alert(reg4.exec(sr)[1]);

</script>

</head>

<body>


</body>

</html>







表單自動(dòng)提交和ajax方式提交作業(yè)

1、創(chuàng)建一個(gè)Product類,包含商品名稱,價(jià)格和id。

2、實(shí)現(xiàn)商品類的新增功能。要求使用兩種方式實(shí)現(xiàn):有頁(yè)面刷新(跳轉(zhuǎn)到新增成功頁(yè)面)和無(wú)頁(yè)面刷新(就彈出alert('新增成功'))。

必須將表單驗(yàn)證函數(shù)添加進(jìn)行,商品名稱的長(zhǎng)度在3到30之間。參數(shù)的傳遞使用jquery提供的serialize函數(shù)實(shí)現(xiàn)。



反射作業(yè)

熟悉通過(guò)反射技術(shù)創(chuàng)建對(duì)象,獲取field,method和constructor的方法,以及反射調(diào)用的方法。




STRUTS2基本配置作業(yè)


1、創(chuàng)建一個(gè)Action類,跳轉(zhuǎn)到login.jsp頁(yè)面

2、創(chuàng)建一個(gè)Action類,在后臺(tái)打印當(dāng)前時(shí)間。

3、創(chuàng)建一個(gè)Action類,跳轉(zhuǎn)到j(luò)sp頁(yè)面,在頁(yè)面顯示當(dāng)前時(shí)間。

4、創(chuàng)建一個(gè)Action類,在后臺(tái)打印隨機(jī)產(chǎn)生的數(shù)值。

5、創(chuàng)建一個(gè)Action類,跳轉(zhuǎn)到j(luò)sp頁(yè)面,在頁(yè)面隨機(jī)顯示一個(gè)數(shù)字。





注解作業(yè)

1、通過(guò)注解創(chuàng)建一套軍旗系統(tǒng)。工兵,排長(zhǎng),連長(zhǎng),營(yíng)長(zhǎng),團(tuán)長(zhǎng),旅長(zhǎng),師長(zhǎng),軍長(zhǎng),司令,軍旗,地雷

rank就是軍銜,remove為1表示可以移動(dòng),0不可以移動(dòng),2可以自由移動(dòng)

@Info(rank="1",remove="1")

public class Pz{

}

@Info(rank="2",remove="1")

public class Lz{

}


@Info(rank="999",remove="0")

public class dl{//地雷不可以移動(dòng)

}


2、通過(guò)注解來(lái)實(shí)現(xiàn)新增刪除功能,新增就照代碼敲一遍,自己再實(shí)現(xiàn)刪除功能。(選做)


STRUTS2分模塊和包配置方法作業(yè)


1、創(chuàng)建兩個(gè)項(xiàng)目,項(xiàng)目中包含學(xué)生stu模塊,科目sub模塊,請(qǐng)引入struts2項(xiàng)目的分模塊配置。(用兩種方法配置)

2、PPT后的兩道題:

在struts2框架中,配置一個(gè)命名空間(namespace屬性)為”/”的包(package)和一個(gè)命名空間為”test”的包。分別在兩個(gè)包下創(chuàng)建兩個(gè)不同的action,它們的name屬性都是testAC。

在瀏覽器中分別訪問(wèn)如下的地址,觀察調(diào)用哪個(gè)action。

1、http://localhost:8080/mypro/kkk/testAC.action

2、http://localhost:8080/mypro/test/testAC.action

3、http://localhost:8080/mypro/testAC.action

將第一個(gè)namespace的值“/”修改為“”再進(jìn)行調(diào)用。

STRUTS2action配置作業(yè)

1、在學(xué)生模塊中,創(chuàng)建一個(gè)StuAction,請(qǐng)?jiān)谶@個(gè)action中實(shí)現(xiàn)跳轉(zhuǎn)到學(xué)生新增頁(yè)面,學(xué)生修改頁(yè)面和學(xué)生列表頁(yè)面的功能。

2、在科目模塊中,創(chuàng)建一個(gè)SubjectAction,在這個(gè)action中實(shí)現(xiàn)跳轉(zhuǎn)到科目列表,科目新增和科目修改的功能。(實(shí)現(xiàn)Action接口)

3、在商品模塊中,創(chuàng)建一個(gè)ProductAction,在這個(gè)action中實(shí)現(xiàn)跳轉(zhuǎn)到管理頁(yè)面,新增,商品詳情頁(yè)面功能。(繼承ActionSupport類)

要求三種配置方法都使用上。




STRUTS2通配符配置和servletAPI調(diào)用方法作業(yè)


1、根據(jù)以下的通配符配置創(chuàng)建正確的action類(至少創(chuàng)建3個(gè)),并進(jìn)行跳轉(zhuǎn);

<action name="*_*" class="com.jy.action.{1}Action" method="{2}">

</action>

<action name="to*" class="com.jy.action.NaviAction" method="{1}">

? ? <result name="{1}">/{1}.jsp</result>

</action>

<action name="*_*Ac" class="com.jy.action.{1}Action" method="{2}">

? ? <result name="{1}">/{2}.jsp</result>

</action>


STRUTS2result配置和類型轉(zhuǎn)換作業(yè)


1、創(chuàng)建一個(gè)jsp頁(yè)面,輸入框中輸入網(wǎng)址例如baidu,點(diǎn)擊跳轉(zhuǎn)按鈕后能夠跳轉(zhuǎn)到輸入的網(wǎng)頁(yè)去,要求使用struts2的action實(shí)現(xiàn)。

2、使用struts2框架實(shí)現(xiàn)登錄功能,不用連接數(shù)據(jù)庫(kù),要求不能出現(xiàn)request和response對(duì)象。




STRUTS2附件上傳和下載的作業(yè)



1、實(shí)現(xiàn)注冊(cè)功能,要求輸入用戶名和密碼以及上傳一張照片。

創(chuàng)建一個(gè)User表,包含act,pwd和img(存放圖片路徑)屬性

注冊(cè)成功以后,能夠?qū)①~號(hào)密碼和圖片路徑存放到數(shù)據(jù)庫(kù)中,而且在跳轉(zhuǎn)到的頁(yè)面中顯示賬號(hào)和個(gè)人頭像。

2、按照課堂代碼,實(shí)現(xiàn)附件下載功能,





自己多BaseDao萬(wàn)能Dao的機(jī)智改進(jìn),變得更通用




Java web易買網(wǎng)項(xiàng)目要求,個(gè)人的合作分工等的經(jīng)驗(yàn)技巧分享,網(wǎng)上商城系統(tǒng)


項(xiàng)目要求

1、要求有一條完整的業(yè)務(wù)線:

注冊(cè)-登錄-瀏覽商品-加入購(gòu)物車-結(jié)算下訂單-付款-評(píng)價(jià)

2、項(xiàng)目答辯時(shí)必須要有PPT。

3、每個(gè)人都要寫代碼。每個(gè)人都要分一個(gè)模塊。

4、界面可以自己手寫,也可以去網(wǎng)站下載一個(gè)模板。





個(gè)人的合作分工等的經(jīng)驗(yàn)技巧分享


建一個(gè)“項(xiàng)目組”的QQ群,自己?jiǎn)柦M員會(huì)什么,擅長(zhǎng)什么,然后分配事情給組員。如果是寫后臺(tái),因?yàn)橐颓芭_(tái)代碼連接,所以可以HTML等部分寫出必要的就可以,別的組員寫好JS,HTML等很美觀的界面,功能等后,我就讓其發(fā)QQ群,復(fù)制和改部分代碼到j(luò)sp部分等中。

界面美化的話,可以到https://www.17sucai.com/找,可仿寫起中的源文件代碼等或有自己的靈感,創(chuàng)意且有好思路地寫。寫項(xiàng)目的話每個(gè)組員最好都把全部都做完,然后再進(jìn)行整合,進(jìn)行優(yōu)劣對(duì)比,留下優(yōu),有些覺得太多了,那么就只能分工。







網(wǎng)上商城系統(tǒng)需求分析規(guī)格說(shuō)明書?






Java web 作業(yè):實(shí)現(xiàn)萬(wàn)能DAO中的修改和刪除功能,商品模塊的增刪改查


實(shí)現(xiàn)萬(wàn)能DAO中的修改和刪除功能(選做)

實(shí)現(xiàn)一個(gè)商品模塊的增刪改查的功能,要求寫在一個(gè)servlet中。必須要連接數(shù)據(jù)(必做)





一、頁(yè)面跳轉(zhuǎn)方式

二、傳參方式


在頁(yè)面中需要輸入日期框的時(shí)候,我們不能夠直接寫三個(gè)文本輸入框,可以使用腳本文件(從網(wǎng)上面下載)來(lái)引入一個(gè)日期框(JS文件)

在eclipse項(xiàng)目中使用日期框:

1、將日期腳本文件拷貝到工程WebContent目錄下(可以創(chuàng)建子文件夾)

2、創(chuàng)建jsp頁(yè)面,在頁(yè)面中引入日期腳本文件

"3、在頁(yè)面中編寫如下的代碼:

<input type=""text"" readonly?

? ? ? ? ? ? onclick=""new Calendar().show(this);"" />"


頁(yè)面跳轉(zhuǎn)的方式有兩種:

1、轉(zhuǎn)發(fā)

2、重定向

"區(qū)別:

1、瀏覽器地址欄顯示的最后的地址不同,轉(zhuǎn)發(fā)就顯示前面的請(qǐng)求的地址,而重定向會(huì)顯示最后跳轉(zhuǎn)的頁(yè)面的地址

2、轉(zhuǎn)發(fā)就是一次請(qǐng)求,重定向是兩次請(qǐng)求"

3、重定向可以跳轉(zhuǎn)到項(xiàng)目外面的頁(yè)面去

項(xiàng)目中一般建議使用轉(zhuǎn)發(fā)方式跳轉(zhuǎn)


JS代碼中優(yōu)先使用單引號(hào)


傳參方式:

"1、瀏覽器地址欄中直接傳入

http://localhost:8888/j190802/demo.jsp?act=admin&pwd=123&sex=男"

2、表單提交


一、getParameter和getAttribute的區(qū)別。

二、四大作用域:pageContext,request,session,application

三、EL表達(dá)式


getAttribute和setAttribute方法

getParameter和getAttribute的區(qū)別:

1、getParameter返回值是String,getAttribute返回值是Object

2、getParameter方法是一個(gè)單身狗,沒有對(duì)應(yīng)的setParameter方法

如果調(diào)用setAttribute方法,后面的程序中就必定會(huì)調(diào)用getAttribute方法

3、getParameter的使用場(chǎng)景:表單提交時(shí)獲取數(shù)據(jù),url路徑中夾帶的參數(shù)

getAttribute的使用場(chǎng)景:頁(yè)面轉(zhuǎn)發(fā)時(shí)調(diào)用。


pageContext,session和application跟request和response一樣,可以直接拿過(guò)來(lái)使用

"pageContext,request,session以及application叫jsp頁(yè)面的四大作用域,指的就是你放在這些對(duì)象中的變量在哪個(gè)范圍內(nèi)有效。

四大作用域?qū)ο蠖加衧etAttribute方法和getAttribute方法。"

pageContext:表示放在這個(gè)對(duì)象中(調(diào)用setAttribute方法)的變量在本JSP頁(yè)面有效

request:表示放在同一次請(qǐng)求中的變量有效

session:表示同一次會(huì)話中的變量有效

application:只要不重啟服務(wù)器,放在里面的變量就會(huì)一直有效


request:當(dāng)進(jìn)行頁(yè)面轉(zhuǎn)發(fā)時(shí)傳遞參數(shù)

session:當(dāng)實(shí)現(xiàn)購(gòu)物車功能時(shí)就需要使用session


購(gòu)物車:需要訪問(wèn)很多的頁(yè)面和發(fā)送很多的搜索請(qǐng)求,購(gòu)物車中的數(shù)據(jù)必須要一直有效。





一、作業(yè)講解

二、EL表達(dá)式


EL表達(dá)式就是JSP中的一種特有的語(yǔ)言,可以簡(jiǎn)化我們的java代碼。

EL表達(dá)式寫法:${表達(dá)式},注意:{}中間只能是表達(dá)式,不能是語(yǔ)句

EL表達(dá)式有兩種運(yùn)算符:.和[](JS對(duì)象的運(yùn)算符)

EL表達(dá)式可以寫在JSP頁(yè)面的任何地方


"EL表達(dá)式中的變量的顯示過(guò)程:會(huì)依次從pageContext,request,session以及

applicaion四個(gè)作用域中找這個(gè)變量,一旦找到了就返回這個(gè)值,如果四個(gè)作用域都找不到,就顯示為""""(不是顯示為null)"


一、EL表達(dá)式顯示map和list中的值。

二、通過(guò)EL表達(dá)式加載表單數(shù)據(jù),修改數(shù)據(jù)時(shí)使用


${}中比較兩個(gè)字符串是否相等,可以使用==也可以使用eq

${message == "success" ? "登錄成功" : "登錄失敗"}

${message eq "success" ? "登錄成功" : "登錄失敗"}


復(fù)習(xí)三大容器:List,Map,Set

List,Map和Set都是接口,所以不能夠直接new出來(lái)的

List最常用的實(shí)現(xiàn)類:ArrayList

Map最常用的實(shí)現(xiàn)類:HashMap

Set最常用的實(shí)現(xiàn)類:HashSet


一、EL表達(dá)式中的范圍變量

二、表單提交后的EL表達(dá)式

三、EL表達(dá)式

如果是通過(guò)表單方式提交的數(shù)據(jù),那么通過(guò)EL表達(dá)式獲取就必須使用param隱式對(duì)象

EL表達(dá)式中的范圍變量:

pageContext:pagescope

request:requestscope

session:sessionscope

application:applicationscope

上面四個(gè)scope變量都是用來(lái)替換getAttribute方法的

而param隱式對(duì)象就是用來(lái)替換getParameter方法的


讀取數(shù)據(jù)庫(kù)中的表中的數(shù)據(jù),將這些數(shù)據(jù)組裝成一個(gè)下拉框。

1、創(chuàng)建表eduinfo

2、在java代碼中創(chuàng)建一個(gè)這個(gè)表對(duì)應(yīng)的javabean,它的名字跟你的表名是一樣的Eduinfo

3、根據(jù)eduinfo表中的列來(lái)創(chuàng)建Eduinfo類的屬性,你的表中有幾個(gè)列javabean中就有一個(gè)屬性,而且屬性名要跟表的列名一致。

4、創(chuàng)建表對(duì)應(yīng)的數(shù)據(jù)訪問(wèn)類(dao),EduinfoDao


一、登錄功能


知道實(shí)現(xiàn)一個(gè)功能的步驟

1、在mysql數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表user,表結(jié)構(gòu):id,act,pwd

"2、搭建項(xiàng)目,需要?jiǎng)?chuàng)建一些包:

com.jy.bean:com/jy/bean,對(duì)應(yīng)每個(gè)表中的一條數(shù)據(jù)的,你有幾個(gè)表就創(chuàng)建一個(gè)bean

com.jy.dao:com/jy/dao,負(fù)責(zé)對(duì)表進(jìn)行增刪改查的,你有一個(gè)表就創(chuàng)建一個(gè)dao"

"com.jy是怎么來(lái)的:根據(jù)你所在的公司的網(wǎng)址來(lái)確定,www.jy.com,你的包名就將網(wǎng)址

倒過(guò)來(lái)寫就可以了com.jy"

"3、將數(shù)據(jù)庫(kù)的配置文件db.properties放到src目錄下,同時(shí)將數(shù)據(jù)庫(kù)的驅(qū)動(dòng)包拷貝到

工程的lib目錄下。將數(shù)據(jù)庫(kù)連接工具類拷貝到工程目錄下"

4、創(chuàng)建login.jsp頁(yè)面

"5、設(shè)計(jì)登錄的action即doLogin.jsp頁(yè)面,因?yàn)檫@個(gè)頁(yè)面沒有需要展示的東西,所以

我們將它的所有的html代碼都刪除。然后將doLogin.jsp的相對(duì)路徑寫到表單的actiion屬性中。"

6、實(shí)現(xiàn)登錄的業(yè)務(wù),編寫登錄的代碼


在項(xiàng)目中,一個(gè)方法的功能越簡(jiǎn)單越單一就越能夠復(fù)用


二、登錄注冊(cè)功能:驗(yàn)證碼,人臉識(shí)別,短信驗(yàn)證

普通的注冊(cè):輸入賬號(hào)密碼(輸入兩次),生日,學(xué)歷,愛好等

1、創(chuàng)建reg.jsp頁(yè)面

2、設(shè)計(jì)一個(gè)業(yè)務(wù)處理頁(yè)面doReg.jsp,將表單中的action設(shè)置為這個(gè)業(yè)務(wù)處理頁(yè)面

3、表單驗(yàn)證,保證用戶輸入的數(shù)據(jù)是正確的,不會(huì)破壞后臺(tái)的數(shù)據(jù)庫(kù)中的數(shù)據(jù)


一、HTTP協(xié)議

二、servlet


HTTP協(xié)議:超文本傳輸協(xié)議,文本代表字符串的意思,超文本代表圖片,音頻和視頻

游戲的鼻祖:泥巴游戲mud,它是一個(gè)純的文字游戲。

"網(wǎng)絡(luò)上面發(fā)送這些超文本時(shí),就必須要遵守一定的規(guī)則,這樣其他的人才能夠接收到

的超文本內(nèi)容,這個(gè)規(guī)則就叫超文本傳輸協(xié)議"

Javaweb就遵循HTTP協(xié)議

HTTP協(xié)議有兩個(gè)非常重要的請(qǐng)求方式:get請(qǐng)求方式和post請(qǐng)求方式

"404:找不到你需要的資源(jsp頁(yè)面,html頁(yè)面以及servlet),訪問(wèn)路徑如果不會(huì)就

會(huì)報(bào)這個(gè)錯(cuò)誤"

500:表示后臺(tái)代碼出現(xiàn)了錯(cuò)誤(java代碼)

200:表示請(qǐng)求成功了


"Servlet:由java代碼編寫的一個(gè)小服務(wù)程序,它的作用非常的廣泛,可以實(shí)現(xiàn)非常多

的功能,登錄注冊(cè)增刪改查,附件上傳下載,導(dǎo)出excel文件,servlet其實(shí)就是一個(gè)java類。"

"使用servlet:servlet雖然是一個(gè)java類,但是不能夠直接運(yùn)行。它必須啟動(dòng)tomcat服

務(wù)器以后才能運(yùn)行。"

創(chuàng)建一個(gè)servlet,運(yùn)行它的時(shí)候在后臺(tái)打印Hello world.

1、創(chuàng)建一個(gè)java類,讓它繼承HttpServlet類,重寫doGet和doPost方法。

2、打開web.xml配置文件,對(duì)servlet進(jìn)行配置。


快捷配置一個(gè)servlet:


當(dāng)你在瀏覽器地址欄直接輸入一個(gè)servlet的訪問(wèn)路徑時(shí),調(diào)用的是doGet方法

當(dāng)在表單中運(yùn)行一個(gè)servlet時(shí),會(huì)根據(jù)表單的method屬性來(lái)決定是調(diào)用doPost方法還是doGet方法。

post提交方式提交表單數(shù)據(jù)時(shí),提交的數(shù)據(jù)不會(huì)顯示在瀏覽器地址欄中

get提交方式提交表單數(shù)據(jù)時(shí),提交的數(shù)據(jù)會(huì)顯示在瀏覽器地址欄中。

post提交方式比較安全的。

get提交方式提交的數(shù)據(jù)量比較小

post提交方式提交的數(shù)據(jù)量比較大


一、servlet生命周期

二、init和destroy

三、loadonstartup servlet

四、servlet頁(yè)面跳轉(zhuǎn)方式


創(chuàng)建servlet的方式:

1、創(chuàng)建一個(gè)java類,讓他繼承HttpServlet,然后在web.xml中添加一段配置代碼。

2、new servlet就可以創(chuàng)建出來(lái)


在項(xiàng)目中,創(chuàng)建servlet實(shí)例的時(shí)機(jī):

"1、當(dāng)項(xiàng)目啟動(dòng)以后的第一個(gè)用戶請(qǐng)求這個(gè)servlet時(shí),就會(huì)new出一個(gè)servlet實(shí)例,

當(dāng)這個(gè)用戶使用完以后,servlet實(shí)例不會(huì)消失,會(huì)一直保存在項(xiàng)目中,當(dāng)下一次有用戶再次請(qǐng)求這個(gè)servlet的時(shí)候,就不會(huì)再new這個(gè)servlet,會(huì)直接使用前面保存在項(xiàng)目中的servlet實(shí)例。"

2、隨著項(xiàng)目啟動(dòng),會(huì)自動(dòng)的創(chuàng)建servlet


"第二個(gè)用戶也是訪問(wèn)這個(gè)servlet,不會(huì)再new出一個(gè)servlet實(shí)例了,它會(huì)直接使用第

一次new出來(lái)的servlet實(shí)例"

loadonstartup servlet:隨著項(xiàng)目的啟動(dòng)會(huì)自動(dòng)運(yùn)行的


通過(guò)servlet來(lái)進(jìn)行頁(yè)面跳轉(zhuǎn):

創(chuàng)建一個(gè)LoginServlet,運(yùn)行這個(gè)servlet以后能夠跳轉(zhuǎn)到login.jsp頁(yè)面


jsp頁(yè)面每一個(gè)頁(yè)面其實(shí)都是一個(gè)servlet

jsp頁(yè)面轉(zhuǎn)換成servlet類以后的源代碼可以在tomcat服務(wù)器中的work目錄下找到


jsp頁(yè)面:在html代碼中寫java代碼

servlet:在java代碼中寫html代碼


實(shí)現(xiàn)重名驗(yàn)證


一、隱藏表單域

二、servlet中傳遞參數(shù)的方法

三、servlet中的四大作用域

四、jsp和servlet之間的關(guān)系(代碼塊)


jsp就是一個(gè)servlet,jsp頁(yè)面專門負(fù)責(zé)展示內(nèi)容,servlet專門用來(lái)做業(yè)務(wù)處理。

login.jsp:顯示登錄頁(yè)面

doLogin.jsp:必須使用servlet來(lái)代替了,專門用來(lái)處理登錄業(yè)務(wù)邏輯的


<%%>中的代碼其實(shí)就是寫在service方法中的代碼

<%=%>中的代碼也是寫在service方法中的代碼,就是一個(gè)打印變量的語(yǔ)句

<%!%>中的代碼其實(shí)就是servlet的成員屬性

<%----%>


1、url傳參方式:通過(guò)在訪問(wèn)地址后面添加上?和&方法

訪問(wèn)地址:http://localhost:8888/j190802/ps?act=admin&pwd=123

2、表單傳參方式:通過(guò)表單的action屬性調(diào)用servlet進(jìn)行傳參


隱藏表單域:

"當(dāng)我們修改數(shù)據(jù)時(shí),id是不能夠修改。id是不應(yīng)該顯示在頁(yè)面上,但是修改數(shù)據(jù)提交

表單時(shí)又需要這個(gè)id值。"


一、servlet中的四大作用域

二、購(gòu)物車功能實(shí)現(xiàn)


幸存者偏差


jsp頁(yè)面有四大作用域:pageContext,request,session,application

jsp就是一個(gè)servlet,所以servlet中肯定也有四大作用域


pageContext在servlet中就相當(dāng)于this

request就是方法的參數(shù),兩者一樣

session在servlet中通過(guò)request.getSession()的方法獲取

application在servlet中通過(guò)this.getServletContext()的方法獲取


實(shí)現(xiàn)購(gòu)物車功能

"登錄網(wǎng)站,打開商品列表界面,選擇你喜歡的商品進(jìn)行瀏覽(看很多頁(yè)面),一旦發(fā)現(xiàn)

喜歡的商品,就要將商品放入到購(gòu)物車中。購(gòu)物車中的數(shù)據(jù)還在一直存在"

"要發(fā)送很多的請(qǐng)求,最好將購(gòu)物車中的商品放到session中,這樣的話不管你發(fā)送多少

次請(qǐng)求,購(gòu)物車中的數(shù)據(jù)都不會(huì)消失掉。"

怎樣存放商品:商品的詳細(xì)信息(訂單對(duì)象),商品數(shù)量,最終選擇使用map來(lái)存放數(shù)據(jù)

List,Set,Map


一、實(shí)現(xiàn)個(gè)人游戲管理系統(tǒng)

1、創(chuàng)建表:每個(gè)表應(yīng)該有一個(gè)與業(yè)務(wù)無(wú)關(guān)的主鍵(int類型)

2、項(xiàng)目的準(zhǔn)備工作:導(dǎo)入mysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng)包和db.properties文件(src目錄下)

"3、搭建一下項(xiàng)目的框架:項(xiàng)目中的代碼不是寫在一個(gè)類里面運(yùn)行就可以了,我們應(yīng)該

把代碼有條理的把它寫在不同的java類中,讓他們一起工作。"

簡(jiǎn)單分層處理:

com.jy.bean:存放表對(duì)應(yīng)的數(shù)據(jù)模型的。每個(gè)表都對(duì)應(yīng)一個(gè)bean類

com.jy.dao:用來(lái)對(duì)表進(jìn)行增刪改查的類。每個(gè)表都對(duì)應(yīng)個(gè)dao類

com.jy.controller:就是存放servlet的。

com.jy.utils:存放項(xiàng)目中的一些常用工具類的,創(chuàng)建數(shù)據(jù)庫(kù)的連接工具類

4、寫界面:創(chuàng)建游戲管理查詢界面,游戲列表界面和游戲新增界面

5、實(shí)現(xiàn)按鈕的跳轉(zhuǎn)頁(yè)面的功能,具體的查詢新增功能暫時(shí)不需要實(shí)現(xiàn)

6、編寫后臺(tái)業(yè)務(wù)代碼


jsp頁(yè)面只負(fù)責(zé)做展示,盡量不要把業(yè)務(wù)代碼寫在jsp頁(yè)面上。


一、正則表達(dá)式

JS和JAVA等多種語(yǔ)言中都可以使用正則表達(dá)式,而且語(yǔ)法規(guī)則都一樣

正則表達(dá)式中的特殊字符:

?:表示出現(xiàn)的次數(shù)是1或者0,+:出現(xiàn)的次數(shù)不能為0,*:可以出現(xiàn)任意多次

^以什么開頭,$以什么結(jié)尾

.表示換行符\n以外的任何字符

正則表達(dá)式中的元字符


一、過(guò)濾器

javaweb中,除了servlet以外,還有一些比較重要的組件filter,listener

servlet:java小服務(wù)程序

filter:過(guò)濾器

listener:監(jiān)聽器

javaweb的三大組件,他們都是一個(gè)java類。


登錄就直接看到個(gè)人中心頁(yè)面。在訪問(wèn)這個(gè)頁(yè)面之前,需要檢查你是否有登錄?


請(qǐng)求regServ之前,會(huì)先執(zhí)行過(guò)濾器中的代碼。


第一個(gè)過(guò)濾器FirstFilter

第二個(gè)過(guò)濾器SecondFilter


FirstFilter中的doFilter方法中的代碼

SecondFilter中的doFilter方法中的代碼

regServ中的代碼

SecondFilter中doFilter方法中的代碼

FirstFilter中doFilter方法中的代碼


創(chuàng)建登錄的servlet,創(chuàng)建一個(gè)注冊(cè)的servlet,創(chuàng)建一個(gè)index.jsp頁(yè)面

請(qǐng)創(chuàng)建一個(gè)過(guò)濾器,當(dāng)執(zhí)行登錄的servlet時(shí),才運(yùn)行過(guò)濾器中的代碼。

請(qǐng)創(chuàng)建另外一個(gè)過(guò)濾器,當(dāng)執(zhí)行jsp頁(yè)面時(shí)才會(huì)運(yùn)行過(guò)濾器中的代碼。


進(jìn)行匹配,如果servlet的url路徑跟Filter中的路徑匹配,就會(huì)執(zhí)行這個(gè)過(guò)濾器中的代碼

過(guò)濾器的url路徑匹配:

1、/*運(yùn)行項(xiàng)目中的任何servlet和jsp頁(yè)面都會(huì)執(zhí)行對(duì)應(yīng)的filter

2、*.jsp運(yùn)行項(xiàng)目中的任何jsp頁(yè)面都會(huì)執(zhí)行對(duì)應(yīng)的filter

3、/ls運(yùn)行項(xiàng)目中路徑中包含有l(wèi)s的servlet就會(huì)執(zhí)行對(duì)應(yīng)的filter


淘寶網(wǎng):login.jsp,cart.jsp,center.jsp

當(dāng)在瀏覽器地址欄輸入login.jsp頁(yè)面的訪問(wèn)路徑時(shí),可以直接跳轉(zhuǎn)到index.jsp頁(yè)面。

當(dāng)在瀏覽器地址欄輸入cart.jsp,center.jsp頁(yè)面,不能直接跳轉(zhuǎn)過(guò)去,要先跳轉(zhuǎn)到登錄頁(yè)面才可以。


通過(guò)過(guò)濾器,實(shí)現(xiàn)了所有的servlet和jsp頁(yè)面的亂碼處理功能

實(shí)現(xiàn)了強(qiáng)制登錄的功能(攔截非法用戶的功能)

如果發(fā)現(xiàn)某一類servlet中有重復(fù)的代碼,就可以考慮使用過(guò)濾器


一、監(jiān)聽器Listener:其實(shí)就是一個(gè)java類


1、監(jiān)聽Session、request和application的創(chuàng)建和銷毀

HttpSessionListener,ServletContextListener,ServletRequestListener

2、監(jiān)聽對(duì)象屬性變化

HttpSessionAttributeListener,ServletContextAttributeListener,ServletRequestAttributeListener

3、監(jiān)聽Session內(nèi)的對(duì)象

HttpSessionBindingListener,HttpSessionActivationListener


跟js中的事件一樣:

項(xiàng)目一啟動(dòng)就要打印一句Hello world

方法一:使用loadonstartup servlet可以實(shí)現(xiàn)

方法二:使用Listener實(shí)現(xiàn),當(dāng)項(xiàng)目啟動(dòng)時(shí)馬上運(yùn)行代碼


ServletContextListener用來(lái)監(jiān)控application對(duì)象的創(chuàng)建和銷毀的監(jiān)聽器

當(dāng)啟動(dòng)一個(gè)javaweb項(xiàng)目時(shí),會(huì)創(chuàng)建唯一的一個(gè)application對(duì)象


servlet,filter和lister都需要在web.xml文件中進(jìn)行配置。


創(chuàng)建listener的步驟:

1、創(chuàng)建listener類

2、在web.xml文件中進(jìn)行配置


代碼緩存時(shí)可以使用監(jiān)聽器:ServletContextListener


統(tǒng)計(jì)本網(wǎng)頁(yè)的訪問(wèn)次數(shù)。

統(tǒng)計(jì)在線人數(shù)。(必須使用HttpSessionListener,用來(lái)監(jiān)視session對(duì)象的創(chuàng)建和銷毀的)


"ServletRequestAttributeListener:當(dāng)調(diào)用request對(duì)象的setAttribute方法時(shí),會(huì)

運(yùn)行這個(gè)監(jiān)聽器中的代碼"


角色和權(quán)限:不同的角色登錄到系統(tǒng)中看到的內(nèi)容是不一樣的,這個(gè)就叫權(quán)限問(wèn)題。


一、附件上傳

本地的拷貝:在同一臺(tái)電腦上進(jìn)行的操作。例如將一個(gè)文件從d盤拷貝到c盤。

在兩臺(tái)電腦之間進(jìn)行的拷貝,或者通過(guò)網(wǎng)頁(yè)的方式進(jìn)行的文件的拷貝。


附件上傳的步驟:

1、導(dǎo)包(附件上傳的包有很多種,我們今天使用的是這些包中的一種)

2、創(chuàng)建附件上傳的jsp頁(yè)面

3、創(chuàng)建附件上傳的servlet

在附件上傳中,除了type="file"的input標(biāo)簽以外,其他的input的isFormField都是true


地址:http://192.168.43.208:8888/j1908021/index.jsp


一、上傳圖片后顯示圖片

二、附件下載


將需要下載的文件放到服務(wù)器上,然后客戶端就可以通過(guò)訪問(wèn)網(wǎng)頁(yè)來(lái)下載響應(yīng)的文件。


1、將需要下載的文件放到服務(wù)器上去

2、導(dǎo)包(附件上傳的包一樣)

3、創(chuàng)建附件下載的jsp頁(yè)面download.jsp

4、創(chuàng)建一個(gè)servlet實(shí)現(xiàn)附件下載功能


訪問(wèn)地址:http://192.168.43.208:8888/j1908021/download.jsp


一、泛型參數(shù)

二、實(shí)現(xiàn)萬(wàn)能DAO


一、整合servlet


登錄功能,注冊(cè)功能,修改密碼:公共模塊

商品新增,商品修改,商品查詢,商品刪除:商品模塊

"將一些功能放到同一個(gè)servlet中執(zhí)行。根據(jù)模塊功能整合,也就是說(shuō)將同一個(gè)模塊中

的功能寫在一個(gè)servlet中。"

怎么樣將幾個(gè)功能寫在同一個(gè)servlet中,通過(guò)url傳參的方式


項(xiàng)目分工和制作方法,易買網(wǎng),規(guī)格說(shuō)明書 ,STRUTS2,正則表達(dá)式老師答案【詩(shī)書畫唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
镇康县| 革吉县| 会宁县| 威宁| 平顶山市| 简阳市| 广宁县| 凤凰县| 沿河| 凌海市| 宜兴市| 成武县| 鹤峰县| 高平市| 鄂温| 荃湾区| 东辽县| 山西省| 台中县| 安平县| 秦安县| 黑山县| 海阳市| 丹江口市| 视频| 邻水| 铁力市| 平舆县| 新龙县| 邮箱| 文昌市| 丹东市| 常州市| 河曲县| 台山市| 克拉玛依市| 嘉祥县| 比如县| 五寨县| 崇礼县| 哈巴河县|