1.tomcat的使用
下載,解壓,傳建項(xiàng)目,運(yùn)行
tomcat單獨(dú)使用非常麻煩,我們需要在idea中寫代碼,然后手動(dòng)復(fù)制到tomcat中,運(yùn)行tomcat所以,我們將tomcat和idea連接起來
idea原生不住時(shí),項(xiàng)目過長,需要我們手動(dòng)更換項(xiàng)目名
servlet:用來接收客戶端傳遞過來的數(shù)據(jù)定義類,繼承HttpServlet,重寫doGet和doPost方法,在doGet中調(diào)試.dopost調(diào)用req.getparameter("名稱")
2.servlet
get請(qǐng)求一次,post請(qǐng)求兩次,get數(shù)據(jù)放在url后面,post數(shù)據(jù)放在body中,get請(qǐng)求不安全效率高,post請(qǐng)求安全,效率低
實(shí)現(xiàn)servlet的兩種方式:實(shí)現(xiàn)servlet接口,重寫方法,主要使用service方法.
繼承HttpServlet,重寫doGet和doPost方法
配置servlet的請(qǐng)求路徑的兩種方式:配置文件式:在web.xml中使用servlet標(biāo)簽配置名稱和類名,使用servlet-mapping標(biāo)簽配置名稱和路徑,注解式:在類的上面使用@WebServlet注解,注解的括號(hào)內(nèi)些上路徑
udp和tcp協(xié)議的區(qū)別:upd協(xié)議面向無連接,速度快,不安全,tcp協(xié)議面向有連接(三次握手),速度快,安全
tcp和http協(xié)議 的區(qū)別:http協(xié)議是tcp協(xié)議的封裝,tcp注重連接方式,http注重傳輸?shù)臄?shù)據(jù)格式
http協(xié)議1.1和2.0分別更新了什么
http1.1主要更新了kep-alive長連接,2更新了壓縮報(bào)頭,多路復(fù)用,主動(dòng)吐送
3.session
可以被同一個(gè)瀏覽器發(fā)出的多個(gè)請(qǐng)求共享,增刪改查 設(shè)置超時(shí)時(shí)間 銷毀session,超時(shí)時(shí)間:java代碼直接>項(xiàng)目web.xml中的配置>tomcat的web.xml配置,是根據(jù)瀏覽器發(fā)送來的JSWSSIONID的cookie來驗(yàn)證的,登錄狀態(tài)保持案例
當(dāng)客戶端發(fā)送一條請(qǐng)求到服務(wù)器, 并且使用到了session時(shí), 服務(wù)器就會(huì)創(chuàng)建一個(gè)session對(duì)象, 并將其存入到一個(gè)map集合中, 以session對(duì)象的id作為key, 對(duì)象本身作為value
之后, 當(dāng)請(qǐng)求返回時(shí), 服務(wù)器會(huì)通過http寫將session的id寫入到客戶端的cookie中, 名稱是 JSESSIONID=sessionid
之后客戶端發(fā)起的請(qǐng)求都會(huì)攜帶這個(gè)cookie到服務(wù)器, 當(dāng)新的請(qǐng)求要使用session時(shí), 服務(wù)端先根據(jù)請(qǐng)求帶過來的sessionid查找session,如果有就使用, 如果沒有就創(chuàng)建新的session, 并重復(fù)步驟2
常用方法
setAttribute:增改.getAttribute:查,removeAttribute:移除狀態(tài),setMaxinctveunterval:設(shè)置保存時(shí)間,invalidate:銷毀
cookie
瀏覽器的一個(gè)存儲(chǔ)技術(shù),可以讓瀏覽器幫助我們存儲(chǔ)一些少量的數(shù)據(jù),組成:name value path maxAge,url和path相同才認(rèn)定為重復(fù),url匹配的cookie才會(huì)發(fā)送到服務(wù)器,maxAge:負(fù)數(shù)內(nèi)存存儲(chǔ),瀏覽器關(guān)閉后,立即消失.整數(shù)表示具體時(shí)間,單位是秒,
path是規(guī)定了哪些請(qǐng)求可以攜帶當(dāng)前cookie到服務(wù)器
uri如果是以當(dāng)前cookie敵對(duì)路徑開始的,就可以攜帶當(dāng)前cookie
request和respone的區(qū)別
request存放著請(qǐng)求內(nèi)容,response存放返回給客戶端的數(shù)據(jù)
頁面跳轉(zhuǎn)
重定向
1,重定向是客戶端行為。
2,重定向是瀏覽器做了至少兩次的訪問請(qǐng)求。
3,重定向?yàn)g覽器地址改變。
4,重定向兩次跳轉(zhuǎn)之間傳輸?shù)男畔?huì)丟失(request范圍)。
5,重定向可以指向任何的資源,包括當(dāng)前應(yīng)用程序中的其他資源,同一個(gè)站點(diǎn)上的其他應(yīng)用程序中
的資源,其他站點(diǎn)的資源。注意:傳遞給HttpServletResponse.sendRedirect 方法的相對(duì)URL以“/”開頭,
它是相對(duì)于整個(gè)WEB站點(diǎn)的根目錄
response.sendRedirect("");
1,轉(zhuǎn)發(fā)是服務(wù)器行為
2,轉(zhuǎn)發(fā)是瀏覽器只做了一次訪問請(qǐng)求
3,轉(zhuǎn)發(fā)瀏覽器地址不變
4,轉(zhuǎn)發(fā)兩次跳轉(zhuǎn)之間傳輸?shù)男畔⒉粫?huì)丟失,所以可以通過request進(jìn)行數(shù)據(jù)的傳遞
5,轉(zhuǎn)發(fā)只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)WEB應(yīng)用中的組件
注意:如果創(chuàng)建RequestDispatcher 對(duì)象時(shí)指定的相對(duì)URL以“/”開頭,它是相對(duì)于當(dāng)前WEB應(yīng)用程序的根
目錄。
request.getRequestDispatcher("").forward(request,response);
4.過濾器和監(jiān)聽器
所有請(qǐng)求在到達(dá)目的地之前,要先經(jīng)過過濾器,請(qǐng)求返回時(shí),在到達(dá)客戶端之前,還要經(jīng)過過濾器.將多個(gè)sevlet中相同的代碼提取出來,放到監(jiān)聽器中,以便于提高代碼的復(fù)用性
配置方式
配置文件式(web.xml),注解式(@WebFilter("攔截范圍"))wxml
多個(gè)過濾器的順序問題
配置文件式:從上往下,先配置的先執(zhí)行,注解式:類名自然順序
Listener
檢測
當(dāng)系統(tǒng)對(duì)應(yīng)的動(dòng)作執(zhí)行時(shí),相應(yīng)的監(jiān)聽器中的相應(yīng)方法就會(huì)執(zhí)行,優(yōu)點(diǎn):非侵入式檢測
url注意事項(xiàng)
/范圍,*.后綴名
5.什么是jsp
避免瀏覽器的緩存,動(dòng)態(tài)拼接頁面,
jsp內(nèi)容
jsp注釋:不會(huì)返回到瀏覽器,減少傳輸量,指令:page include taglib,動(dòng)作:jsp:include,九大內(nèi)置對(duì)象,域:一個(gè)控制數(shù)據(jù)的空間,jsp頁面中可以使用這個(gè)的四個(gè)域:pageContext,request,session,servletContext
el表達(dá)式
${名稱},可以回去對(duì)象中的屬性,集合中的元素
jstl:功能標(biāo)簽,先引入,在使用,c標(biāo)簽中 ifforEach
jsp9大內(nèi)置對(duì)象
request:
javax.servlet.http.HttpServlrtRequest
response:
javax.servlet.http.HttpServletResponse
session:
javax.servlet.http.HttpSession
application:
javax.servlet.ServletContext
exception:
java.lang.Throwable
page:
java.lang.Object當(dāng)前對(duì)象this
config:
javax.servlet.ServletConfig
pageContext :
javax.servlet.jsp.PageContext
out:
kavax.servlet.jsp.JspWriter