一、Servlet
Java類。由Servlet容器(Tomcat)進(jìn)行編譯->.class ->運(yùn)行 產(chǎn)生響應(yīng)結(jié)果返回給客戶端瀏覽器。
生命周期:(方法調(diào)用流程)
init:初始化方法。在第一次訪問(wèn)servlet時(shí)被調(diào)用一次。
service:完成servlet所做功能。每次訪問(wèn)servlet時(shí)都會(huì)被調(diào)用。
doGet0:只有g(shù)et請(qǐng)求。才能訪問(wèn)。
doPost0:只有post請(qǐng)求。才能訪問(wèn)。
destory:銷毀。tomcat內(nèi)存不足、很長(zhǎng)時(shí)間沒(méi)有使用、tomcat關(guān)閉時(shí)。
?四大作用域:
page:當(dāng)前頁(yè)面。當(dāng)前頁(yè)面不需要通過(guò)作用域傳值。都是通過(guò)全局變量進(jìn)行傳遞值,很少使用。
request:請(qǐng)求域。在一次請(qǐng)求中能傳遞值。一次請(qǐng)求中可以發(fā)生多次轉(zhuǎn)發(fā)(服務(wù)器內(nèi)部跳轉(zhuǎn),不會(huì)重新發(fā)起請(qǐng)求,所以還是一個(gè)請(qǐng)求),無(wú)論是從一個(gè)servlet方法
轉(zhuǎn)發(fā)到另外一個(gè)servlet中,還是從servlet轉(zhuǎn)發(fā)到j(luò)sp中,還是從jsp轉(zhuǎn)發(fā)到j(luò)sp中,因?yàn)檫@個(gè)對(duì)象沒(méi)有變,所以這個(gè)對(duì)象中設(shè)置的屬性值(作用域值)是一直可以獲取的
session:會(huì)話。只要瀏覽器沒(méi)有關(guān)閉(瀏覽器沒(méi)有關(guān)閉,cookie就不失效,服務(wù)器session對(duì)象就不會(huì)銷毀)、沒(méi)有超出默認(rèn)時(shí)間、tomcat關(guān)閉。application:只要不關(guān)閉tomcat一直能用。當(dāng)tomcat啟動(dòng)時(shí),會(huì)給每個(gè)項(xiàng)目都創(chuàng)建一個(gè)application對(duì)象。
?如何給作用域設(shè)置值和獲取值和移除值得API
setAttribute(key,value);
getAttribute(key)
removeAttribute(key);移除值。
●JSP
九大內(nèi)置對(duì)象:當(dāng)tomcat在解析jsp時(shí)會(huì)自動(dòng)創(chuàng)建的9個(gè)對(duì)象。在jsp文件中可以通過(guò)固定的9個(gè)對(duì)象名直接調(diào)用這九個(gè)對(duì)象。page:當(dāng)前頁(yè)面對(duì)象。
request:請(qǐng)求對(duì)象。
getParameter("name")返回值String。獲取請(qǐng)求參數(shù)。
session:會(huì)話對(duì)象。
? ? ? ? ?invilalidate0;銷毀session對(duì)象。
? ? ? ? setMaxlnactivelnterval0;設(shè)置session最大存活時(shí)間。如果沒(méi)有設(shè)置,默認(rèn)為tomcat中配置的最大存活時(shí)間。
application:應(yīng)用程序?qū)ο蟆?/p>
response:響應(yīng)對(duì)象。
response:sendRedirect0;重定向。
response.addCookie0;把cookie對(duì)象設(shè)置到響應(yīng)中。
out:輸出對(duì)象。
? ? ? ?out.println0;
exception:異常對(duì)象。
config:配置對(duì)象。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-556674.html
●Spring Framework
IOC/DI:1OC控制反轉(zhuǎn)。需要由程序員手動(dòng)實(shí)例化對(duì)象的過(guò)程轉(zhuǎn)交給SPring進(jìn)行管理。只有這些對(duì)象都交給Spring進(jìn)行管理了(放在Spring容器中(Container)),容器內(nèi)部所有依賴的對(duì)象可以進(jìn)行注入(DI)
●spring注入的幾種方式
1.set注入(設(shè)置注入)
2.構(gòu)造注入
3.工廠注入(實(shí)例工廠、靜態(tài)工廠)
?<bean>標(biāo)簽的scope屬性可取值及默認(rèn)值
? ? ? ?singleton:?jiǎn)卫?/p>
? ? ? ?prototype:多例。
AOP:面向切面編程。
切點(diǎn):方法。
切面:由多個(gè)切點(diǎn)形成切面。
對(duì)方法進(jìn)行擴(kuò)展。
通知(Advice)的分類:
前置通知。在切點(diǎn)之前執(zhí)行事情。
后置通知。后面執(zhí)行的事情。
環(huán)繞通知。把前置和后置合并。
●聲明式事務(wù):只需要通過(guò)簡(jiǎn)單的聲明,告訴Spring哪些方法需要進(jìn)行事務(wù)管理,所有事務(wù)相關(guān)代碼都不需要由程序員進(jìn)行編寫。實(shí)現(xiàn)了只聲明方法就可以實(shí)現(xiàn)事務(wù)管理的機(jī)制。
編程式事務(wù):需要由程序員編寫事務(wù)的開(kāi)啟、提交、回滾代碼。
?如何判斷是否需要進(jìn)行回滾?
判斷方法是否出現(xiàn)異常。只要有聲明式事務(wù)的方法里面絕對(duì)不會(huì)進(jìn)行異常處理 (try..catch)
isolation:(隔離級(jí)別),只有在多線程編程中(高并發(fā))才能出現(xiàn)的情況。當(dāng)出現(xiàn)多人同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)某個(gè)表或行數(shù)據(jù)時(shí)如何保證數(shù)據(jù)的安全性。
? ? ?臟讀、不可重復(fù)讀、幻讀。
ISOLATION_DEFAULT? ? ?使用后端數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別。
ISOLATION READ UNCOMMITTED? ? 允許讀取尚未提交的更改。可能導(dǎo)致臟讀、幻影讀或不可重復(fù)讀。
ISOLATION READ COMMITTED? ? ? 允許從已經(jīng)提交的并發(fā)事務(wù)讀取??煞乐古K讀,但幻影讀和不可重復(fù)讀仍可能會(huì)發(fā)生。
ISOLATION REPEATABLE READ? ? ? ? 對(duì)相同字段的多次讀取的結(jié)果是一致的,除非數(shù)據(jù)被當(dāng)前事務(wù)本身改變??煞乐古K讀和不可重復(fù)讀,但幻影讀仍可能發(fā)生。
ISOLATION SERIALIZABLE? ? ? ? 完全服從ACID的隔離級(jí)別,確保不發(fā)生臟讀、不可重復(fù)讀和幻影讀。這在所有隔離級(jí)別中也是最慢的,因?yàn)樗ǔJ峭ㄟ^(guò)完全鎖定當(dāng)前事務(wù)所涉及的數(shù)據(jù)表來(lái)完成的。
propagation(傳播行為):出現(xiàn)在當(dāng)一個(gè)方法調(diào)用另一個(gè)方法的場(chǎng)景中。(這些方法必須出現(xiàn)多個(gè)DML操作)
? ?PROPAGATION_REQUIRES? ? ? 表示當(dāng)前方法必須在一個(gè)事務(wù)中運(yùn)行。如果一個(gè)現(xiàn)有事務(wù)正在進(jìn)行中,該方法將在那個(gè)事務(wù)中運(yùn)行,否則就要開(kāi)始一個(gè)新事務(wù)。
PROPAGATION SUPPORTS? ? ? ?表示當(dāng)前方法不需要事務(wù)性上下文,但是如果有一個(gè)事務(wù)已經(jīng)在運(yùn)行的話,它也可以在這個(gè)事務(wù)里運(yùn)行。
PROPAGATION MANDATORY? ? ? ? 表示該方法必須運(yùn)行在一個(gè)事務(wù)中。如果當(dāng)前沒(méi)有事務(wù)正在發(fā)生,將拋出一個(gè)異常。
PROPAGATION REQUIRES NEW? ? 表示當(dāng)前方法不需要事務(wù)性上下文,但是如果有一個(gè)事務(wù)已經(jīng)在運(yùn)行的話,它也可以在這個(gè)事務(wù)里運(yùn)行。?
PROPAGATION NOT SUPPORTED? ? ? 表示當(dāng)前方法必須在它自己的事務(wù)里運(yùn)行。一個(gè)新的事務(wù)將被啟動(dòng),而且如果有一個(gè)現(xiàn)有事務(wù)在運(yùn)行的話,則將在這個(gè)方法運(yùn)行期間被掛起。
PROPAGATION NEVER? ? ? ? 表示當(dāng)前的方法不應(yīng)該在一個(gè)事務(wù)中運(yùn)行。如果一個(gè)事務(wù)正在進(jìn)行,則會(huì)拋出一個(gè)異常。
PROPAGATION NESTED? ? ? 表示如果當(dāng)前正有一個(gè)事務(wù)在進(jìn)行中,則該方法應(yīng)當(dāng)運(yùn)行在一個(gè)嵌套式事務(wù)中。被嵌套的事務(wù)可以獨(dú)立于封裝事務(wù)進(jìn)行提交或回滾。如果封裝事務(wù)不存在,行為就像PROPAGATION_REQUIRES一樣。
●Spring MVC
?@Controller
? ? ? @RestController相當(dāng)于所有類中方法都有@ResponseBody
?@RequestMapping
? ? ? @ResponseBody根據(jù)項(xiàng)目中導(dǎo)入的Jackson依賴,把方法返回值轉(zhuǎn)換為json或xml等。
?@CrossOrigin跨域。在響應(yīng)頭中添加允許跨域參數(shù)。Access-Control-Allow-Origin*
? ? ? ?瀏覽器同源策略。通過(guò)domain(域)域名或ip或端口
?@PathVariable Restful請(qǐng)求時(shí)獲取參數(shù)的注解。
? ? ? ?請(qǐng)求中出現(xiàn)/xxxx/mmm/nnn時(shí)如果需要獲取nnn的值
? ? ? @RequestMapping("/xxx/mmm/(name")
? ? ? ?public String demo(@PathVariable String name=)
?@RequestParam 請(qǐng)求參數(shù)
? ? ? ? public String demo(@RequestParam("name") String name123)
? ? ? ?public String demo(@RequestParam(defaultValue="默認(rèn)值")String name123)
? ? ? ?public String demo(@RequestParam(require=boolean) String name123)是否必須有此參數(shù)。如果不滿足報(bào)異常。
?@RequestBody把請(qǐng)求體中數(shù)據(jù)轉(zhuǎn)換為對(duì)象。常用在通過(guò)請(qǐng)求體傳遞Map或?qū)嶓w類等參數(shù)值。
? ? ?注意get方式?jīng)]有請(qǐng)求體,常用post時(shí)才能有請(qǐng)求體數(shù)據(jù)。一個(gè)post請(qǐng)求只能有一個(gè)請(qǐng)求體數(shù)據(jù)。
?@RequestHeader("請(qǐng)求頭參數(shù)名”)獲取請(qǐng)求頭參數(shù)
●Maven
?本地倉(cāng)庫(kù),中央倉(cāng)庫(kù)。
?優(yōu)先通過(guò)坐標(biāo)(Artifact Id、group id,version)去本地倉(cāng)庫(kù)找,如果找不到,去中央倉(cāng)庫(kù)。
?基于pom模型。項(xiàng)目相當(dāng)于一個(gè)對(duì)象。項(xiàng)目和項(xiàng)目之間的關(guān)系
? ? ?依賴(dependency)關(guān)系
? ? ? ?繼承(extends)繼承的是父項(xiàng)目的pom.xml
?項(xiàng)目類型:
? ? jar:java可執(zhí)行文件??梢允且粋€(gè)獨(dú)立web項(xiàng)目,也可以就是工具包。
? ? war:web jar。web項(xiàng)目。打包成war可以直接放入到tomcat中進(jìn)行運(yùn)行。
? ? ?pom:聚合項(xiàng)目中的父項(xiàng)目。
●EasyUI:前端框架,適用做后臺(tái)項(xiàng)目或管理類型項(xiàng)目。
●RBAC:在做權(quán)限時(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)的方案?;诮巧臋?quán)限控制。核心:有角色表。
●Spring Boot支持的配置文件類型
支持的配置文件類型,properties、.yml、yaml其中常用的就是.properties和.yml功能是等效的。區(qū)別在于文件內(nèi)容的格式。
?properties文件格式 key=value
?yml 文件格式
注意:value和c:中間必須有個(gè)空格。
當(dāng)value為特殊字符時(shí)(、*)時(shí)必須被單引號(hào)包含 `:′,`*′
雖然yml文件格式看起來(lái)是帶有縮進(jìn)的形式,但是被編譯后還是properties文件格式。
優(yōu)點(diǎn):
key寫起來(lái)更加簡(jiǎn)潔。
缺點(diǎn):
格式必須嚴(yán)格對(duì)齊。縮進(jìn)是經(jīng)常出錯(cuò)的地方。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-556674.html
?
到了這里,關(guān)于第三十九天 Java基礎(chǔ)學(xué)習(xí)(三十三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!