課程目錄:
SpringBoot工程
? 參數(shù)解析
? HTTP Method
? Velocity
? Request/Response/Session
? Error/重定向
? Logger
? IoC
? AOP/Aspect
Spring Boot
官方文檔
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
http://docs.spring.io/spring-boot/docs/current/reference/html/index.html
例子 https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
Spring官網(wǎng):
http://www.spring.io
Spring項(xiàng)目初始化
https://start.spring.io/
本課用到工具是:idea邮丰,maven,關(guān)于maven的配置可以百度嘶是。pom.xml如果出問(wèn)題一般都是倉(cāng)庫(kù)的jar沒(méi)下載完整窟赏,我們直接把原來(lái)的刪除了腥沽,讓它重新去更新依賴。
將springboot官網(wǎng)生成的壓縮包解壓得到的文件導(dǎo)入idea。自帶application风喇,應(yīng)該是程序的入口吧。
我們按照正常思維缕探,先來(lái)寫(xiě)一個(gè)controller
如上圖魂莫。
我們按Crtl+F5啟動(dòng)Tomcat。然后輸入如下圖的地址爹耗。
主要就是注解的工作了耙考,RequestMapping就是一個(gè)請(qǐng)求映射秽誊,相當(dāng)于struts2中的配置文件這樣子去配置吧。優(yōu)點(diǎn)還是比較明顯的琳骡,比以前struts2方便很多。
ResponseBody返回一個(gè)請(qǐng)求內(nèi)容讼溺,就是我們r(jià)eturn的內(nèi)容返回到網(wǎng)頁(yè)了楣号。
我們現(xiàn)在建立另外一個(gè)controller,正式開(kāi)始springmvc的筆記怒坯。
代碼如下:
運(yùn)行效果如下:
參數(shù)解釋如下:
@RequestMapping(value = {"/profile/{groupId}/{userId}"})
@PathVariable中文意思為路徑中的變量炫狱,通過(guò)前臺(tái)傳參,后臺(tái)聲明接收參數(shù)即可
@RequestParam(value = "type", defaultValue = "1") int type,
@RequestParam中文意思為請(qǐng)求參數(shù)剔猿,defaultValue默認(rèn)參數(shù)视译。XXX?type=XXX.
現(xiàn)在我們要給它返回一個(gè)頁(yè)面归敬。
我們建立一個(gè)news.vm這樣一個(gè)頁(yè)面酷含,寫(xiě)個(gè)hello vm。http://localhost:8080/vm 就會(huì)出現(xiàn)我們寫(xiě)在頁(yè)面的東西啦汪茧。這個(gè)簡(jiǎn)單不多說(shuō)椅亚,關(guān)于vm是什么?這相當(dāng)于jsp吧舱污,就是一種前端展示的模板呀舔。
velocity資料:https://www.ibm.com/developerworks/cn/java/j-lo-velocity1/
官網(wǎng)api:https://velocity.apache.org/engine/devel/user-guide.html
下面圖是velocity的一些簡(jiǎn)潔資料。
QQ截圖20170324234922中紅色框的扩灯,在前臺(tái)是這樣讀取的
運(yùn)行如下:
$!{value1}
${value2}
媚赖!對(duì)變量存在與否進(jìn)行檢查,自己測(cè)試看珠插。
#foreach($color in $colors)
Color $!{foreach.index}/$!{foreach.count}:$!{color}
#end
這個(gè)是遍歷list惧磺。跟增強(qiáng)型for循環(huán)類(lèi)似。colors是集合丧失,color是變量豺妓。
以下是map在java中的基礎(chǔ)知識(shí),結(jié)合vm的map解析布讹,都是差不多的琳拭。自行腦補(bǔ)。
java中什么叫entryset?
是java中的一個(gè)對(duì)象描验,一般可以通過(guò)map.entrySet()得到白嘁。
1,entrySet實(shí)現(xiàn)了Set接口膘流,里面存放的是鍵值對(duì)絮缅。一個(gè)K對(duì)應(yīng)一個(gè)V鲁沥。
2,用來(lái)遍歷map的一種方法耕魄。
Set<Map.Entry<String, String>> entryseSet=map.entrySet();
for (Map.Entry<String, String> entry:entryseSet) {
System.out.println(entry.getKey()+","+entry.getValue());
}
通過(guò)getKey()得到K画恰,getValue得到V。
3吸奴,還有一種是keySet允扇。
Set<String> set = map.keySet();
for (String s:set) {
System.out.println(s+","+map.get(s));
}
里面存的是Map的K。
獲取對(duì)象屬性和java也是一樣的了则奥,不過(guò)多解釋考润,velocity和前端 java的很多知識(shí)都是相同。
我們經(jīng)常寫(xiě)網(wǎng)頁(yè)读处,主要是包括頭部底部和主題部分糊治,由于頭部和底部是不變的導(dǎo)航欄之類(lèi)的,現(xiàn)在我們用include和parse標(biāo)簽去引入和解析罚舱。
這是兩個(gè)不同的標(biāo)簽井辜,include是單純引入,parse是解析引入馆匿,字面意思很容易理解抑胎。
更加完整的Velocity 語(yǔ)法(轉(zhuǎn))
http://www.cnblogs.com/siye1982/archive/2007/11/14/959678.html
下面是一些參數(shù),目前還不能理解有什么作用渐北,先放上來(lái)吧阿逃。sessionid用來(lái)標(biāo)注是不是同一個(gè)用戶。
response:
重定向和錯(cuò)誤:
IOC依賴注入也叫控制反轉(zhuǎn)的東西赃蛛。
先建立業(yè)務(wù)層的類(lèi)
也就是我們這是控制層恃锉,也就是說(shuō)我們要去調(diào)用業(yè)務(wù)層的代碼去做一些操作,我們傳統(tǒng)的方法就是在構(gòu)造方法去完成初始化new操作呕臂,如下圖
使用了IOC注入破托,只需要在service層上加@Service就可以了
除了注解也可以寫(xiě)在properties中xml文件。
通過(guò)IoC把所有變量都初始化好歧蒋。
Aop面向切面編程
我們打log是如圖這樣子土砂。
但是我們有了Aop之后呢。我們寫(xiě)上注解就可以作為一個(gè)切面谜洽,通過(guò)制定包或類(lèi)萝映,實(shí)現(xiàn)切面編程。