Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言佳遂。Java 技術(shù)具有卓越的通用性寥袭、高效性路捧、平臺移植性和安全性,廣泛應(yīng)用于PC传黄、數(shù)據(jù)中心杰扫、游戲控制臺、科學(xué)超級計(jì)算機(jī)膘掰、移動電話和互聯(lián)網(wǎng)章姓,同時(shí)擁有全球最大的開發(fā)者專業(yè)社群。
給你java學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
2.2.1 講一下http get和post請求的區(qū)別
get和post請求都是http的請求方式,用戶通過不同的http請求方式完成對資源(url)的不同操作凡伊,具體點(diǎn)來講get一般用于獲取/查詢資源信息零渐,而post一般用于更新資源信息。
http定義了與服務(wù)器交互的不同方法系忙,最基本的方法有4種诵盼,分別是get,post银还,put拦耐,delete,url全稱是資源描述符见剩,我們可以這樣認(rèn)為:一個URL地址杀糯,它用于描述一個網(wǎng)絡(luò)上的資源,而http中的get苍苞,post固翰,put,delete就是對應(yīng)著這個資源的查羹呵,改骂际,增,刪4個操作冈欢,具體點(diǎn)get一般用于獲取/查詢資源信息歉铝,而post一般用于更新資源信息。
1)get請求提交的數(shù)據(jù)會在地址欄顯示出來凑耻,而post請求不會在地址欄顯示出來太示。
get提交請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在http協(xié)議頭中)以?分割url和傳輸數(shù)據(jù)香浩,多個參數(shù)用&連接类缤;post提交:把提交的數(shù)據(jù)放置的是在http包的包體中,因此邻吭,get提交的數(shù)據(jù)會在地址欄中顯示出來餐弱,而post提交,地址欄不會改變囱晴。
2)傳輸數(shù)據(jù)的大小
http get請求由于瀏覽器對地址長度的限制而導(dǎo)致傳輸?shù)臄?shù)據(jù)有限制膏蚓,而post請求不會因?yàn)榈刂烽L度限制而導(dǎo)致傳輸數(shù)據(jù)限制。
3)安全性畸写,post的安全性要比get的安全性高驮瞧,由于數(shù)據(jù)是會在地址中呈現(xiàn),所以安全性可以歷史記錄找到密碼相關(guān)等信息艺糜。
2.2.2 講一下你對servlet的理解剧董?或者servlet是什么?
servlet(servlet applet)破停,全稱java servlet翅楼,是用java編寫的服務(wù)端程序,而這些Servlet都要實(shí)現(xiàn)Servlet這個接口真慢,其主要功能在于交互式地瀏覽和修改數(shù)據(jù)毅臊,生成動態(tài)web內(nèi)容,servlet運(yùn)行于支持java的應(yīng)用服務(wù)器中黑界。
httpservlet重寫doGet和doPost方法或者你也可以重寫service方法完成對get和post請求的響應(yīng)管嬉。
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零,五五四朗鸠,六零七 】蚯撩,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)烛占!裙內(nèi)有開發(fā)工具胎挎,很多干貨和技術(shù)資料分享!
2.2.3 簡單說一下servlet的生命周期忆家?
servlet有良好的生存期的定義犹菇,包括加載和實(shí)例化、初始化芽卿、處理請求以及服務(wù)結(jié)束揭芍,這個生存期由java servlet Servlet接口的init,service卸例,destory方法表達(dá)称杨。
Servlet啟動時(shí),開始加載Servlet生命周期開始筷转,servlet被服務(wù)器實(shí)例化后列另,容器運(yùn)行其init方法,請求到達(dá)時(shí)運(yùn)行其service方法旦装,service方法自動派遣運(yùn)行與請求對其的doxxx方法(doGet,doPost)等页衙,當(dāng)服務(wù)器決定將實(shí)例化銷毀的時(shí)候(服務(wù)器關(guān)閉)調(diào)用其destory方法
加載Servlet的class-->實(shí)例化Servlet的init完成初始化-->響應(yīng)請求(Servlet的service方法)-->Servlet容器關(guān)閉時(shí)(Servlet的destory方法)
2.2.4 Servlet API中forward()與redirect()的區(qū)別?
前者僅是容器中控制權(quán)的轉(zhuǎn)向阴绢,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址店乐;后者則是完全的鏈接,瀏覽器(客戶端)將會得到跳轉(zhuǎn)的鏈接呻袭,并重新發(fā)送請求鏈接眨八。forward還是原來的請求而rediect是重新發(fā)起請求。這樣左电,從瀏覽器的地址欄中可以看出跳轉(zhuǎn)后的鏈接地址廉侧,所以前者更加高效页响,在前者可以滿足需要時(shí),盡量使用forward()方法段誊,并且這樣有助于隱藏實(shí)際的鏈接闰蚕,在有些情況下,比如连舍,需要跳轉(zhuǎn)到一個其他服務(wù)器上的資源則必須使用sendRedirect()方法没陡。
1)forward是服務(wù)器請求的轉(zhuǎn)向而rediect是客戶端的跳轉(zhuǎn)。
2)使用forward瀏覽器的地址不會發(fā)生改變索赏,而redrect會發(fā)生改變盼玄。
3)forward是一次請求中完成,而redrect是重新發(fā)起請求潜腻。
3)forward是在服務(wù)器端完成埃儿,而不用客戶端重新發(fā)起請求,效率高融涣。
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零蝌箍,五五四,六零七 】暴心,無論你是大牛還是小白妓盲,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具专普,很多干貨和技術(shù)資料分享悯衬!
2.2.5 JSP和Servlet有哪些相同點(diǎn)和不同點(diǎn),它們之間的聯(lián)系是什么檀夹?
JSP是Servlet的擴(kuò)展筋粗。所有的jsp文件都會被翻譯為一個繼承httpServlet的類,也就是說jsp最終也是一個Servlet炸渡,這個servlet對外提供服務(wù)娜亿。
Servlet和JSP最主要的不同點(diǎn)在于,Servlet如果要實(shí)現(xiàn)html的功能蚌堵,必須使用Writer輸出對應(yīng)的html比較麻煩买决,Servlet的應(yīng)用邏輯是在java文件,并完全從表示層中的html分離出來吼畏,而jsp的情況是Java和HTML可以組合成一個擴(kuò)展名為.jsp文件比較方便而嵌入邏輯比較復(fù)雜督赤,jsp側(cè)重視圖,Servlet主要用于控制邏輯泻蚊。
2.2.6 jsp有哪些內(nèi)置對象躲舌?作用分別是什么?
9個內(nèi)置的對象:
request 用戶請求性雄,此請求會包含來自get/post請求的參數(shù)
response 網(wǎng)頁傳回用戶端的回應(yīng)
pageContext 網(wǎng)頁的屬性是在這里管理
session 與請求有關(guān)的會話棋
application servlet正在執(zhí)行的內(nèi)容
out 用來傳送回應(yīng)的輸出
config servlet 的構(gòu)架部件
page jsp網(wǎng)頁本身
exception 針對錯誤網(wǎng)頁没卸,未捕抓的例外
四大作用域:pageContext羹奉,request,session约计,application可以通過jstl從四大作用域中取值
jsp傳遞值request诀拭,session,application病蛉,cookie也能傳值
小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零炫加,五五四瑰煎,六零七 】铺然,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)酒甸!裙內(nèi)有開發(fā)工具魄健,很多干貨和技術(shù)資料分享!
2.2.7 說一下session和cookie的區(qū)別插勤?你在項(xiàng)目中都有哪些地方使用了
Session和cookie都是會話跟蹤技術(shù)沽瘦,cookie通過客戶端記錄信息確定用戶身份,session通過在服務(wù)端確定用戶身份农尖,但是session的實(shí)現(xiàn)依賴于cookie析恋,sessionId(session的唯一標(biāo)識需要存放在客戶端)
cokike和session的區(qū)別
1)cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)存放在服務(wù)器上盛卡。
2)cookie不是很安全助隧,別人可以分析存放本地的cookie并進(jìn)行cookie欺騙,考慮到安全性應(yīng)當(dāng)使用session
3)session會在一定時(shí)間內(nèi)保存在服務(wù)器上滑沧,當(dāng)訪問增多并村,會比較占用你服務(wù)器的性能考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie
4)單個cookie保存的數(shù)據(jù)不能超過4k滓技,很多瀏覽器都限制一個站點(diǎn)最多保存20cookie
5)所以個人建議:
將登錄等重要信息存放為session哩牍,其他信息如果需要保留,可以存放cookie中令漂,比如購物車膝昆。
購物車最好使用cookie,但是cookie是可以在用戶端禁用的叠必,這時(shí)候我們要使用cookie+數(shù)據(jù)庫的方式實(shí)現(xiàn)外潜,當(dāng)從cookie中不能取出數(shù)據(jù)時(shí),就從數(shù)據(jù)庫獲取
2.2.8 mvc的各部分都有哪些技術(shù)來實(shí)現(xiàn)
M(Model)模型 javaBean挠唆,hibernate处窥,mybatis
V(View)代碼視圖 jsp,html玄组,freemaker滔驾,velocity
C(Controller)控制器 Servlet谒麦,Action,struts
Jsp+Servlet+javaBean 最經(jīng)典mvc模式哆致。實(shí)際上就是model2的實(shí)現(xiàn)方式绕德,就是把視圖和邏輯隔離開來
model1的方式 jsp+service+dao
model2的方式 jsp+servlet+service+dao
使用struts2和springMVC這樣的mvc結(jié)構(gòu)后,jsp+核心控制器+action+javaBean