更新時(shí)間:2020-01-16 11:18:55 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2295次
Servlet總結(jié):
在Java Web程序中,Servlet主要負(fù)責(zé)接收用戶請求HttpServletRequest,在doGet(),doPost()中做相應(yīng)的處理,并將回應(yīng)HttpServletResponse反饋給用戶。Servlet可以設(shè)置初始化參數(shù),供Servlet內(nèi)部使用。一個(gè)Servlet類只會(huì)有一個(gè)實(shí)例,在它初始化時(shí)調(diào)用init()方法,銷毀時(shí)調(diào)用destroy()方法。Servlet需要在web.xml中配置(MyEclipse中創(chuàng)建Servlet會(huì)自動(dòng)配置),一個(gè)Servlet可以設(shè)置多個(gè)URL訪問。Servlet不是線程安全,因此要謹(jǐn)慎使用類變量。
闡述Servlet和CGI的區(qū)別?
CGI的不足之處:
需要為每個(gè)請求啟動(dòng)一個(gè)操作CGI程序的系統(tǒng)進(jìn)程。如果請求頻繁,這將會(huì)帶來很大的開銷。
需要為每個(gè)請求加載和運(yùn)行一個(gè)CGI程序,這將帶來很大的開銷
需要重復(fù)編寫處理網(wǎng)絡(luò)協(xié)議的代碼以及編碼,這些工作都是非常耗時(shí)的。
Servlet的優(yōu)點(diǎn):
只需要啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程以及加載一個(gè)JVM,大大降低了系統(tǒng)的開銷
如果多個(gè)請求需要做同樣處理的時(shí)候,這時(shí)候只需要加載一個(gè)類,這也大大降低了開銷
所有動(dòng)態(tài)加載的類可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)協(xié)議以及請求解碼的共享,大大降低了工作量。
Servlet能直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能在各個(gè)程序之間共享數(shù)據(jù),使數(shù)據(jù)庫連接池之類的功能很容易實(shí)現(xiàn)。
補(bǔ)充:Sun Microsystems公司在1996年發(fā)布Servlet技術(shù)就是為了和CGI進(jìn)行競爭,Servlet是一個(gè)特殊的Java程序,一個(gè)基于Java的Web應(yīng)用通常包含一個(gè)或多個(gè)Servlet類。Servlet不能夠自行創(chuàng)建并執(zhí)行,它是在Servlet容器中運(yùn)行的,容器將用戶的請求傳遞給Servlet程序,并將Servlet的響應(yīng)回傳給用戶。通常一個(gè)Servlet會(huì)關(guān)聯(lián)一個(gè)或多個(gè)JSP頁面。以前CGI經(jīng)常因?yàn)樾阅荛_銷上的問題被詬病,然而Fast CGI早就已經(jīng)解決了CGI效率上的問題,所以面試的時(shí)候大可不必信口開河的詬病CGI,事實(shí)上有很多你熟悉的網(wǎng)站都使用了CGI技術(shù)。
Servlet接口中有哪些方法及Servlet生命周期探秘
Servlet接口定義了5個(gè)方法,其中前三個(gè)方法與Servlet生命周期相關(guān):
void init(ServletConfig config) throws ServletException
void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
void destory()
java.lang.String getServletInfo()
ServletConfig getServletConfig()
生命周期: Web容器加載Servlet并將其實(shí)例化后,Servlet生命周期開始,容器運(yùn)行其init()方法進(jìn)行Servlet的初始化;請求到達(dá)時(shí)調(diào)用Servlet的service()方法,service()方法會(huì)根據(jù)需要調(diào)用與請求對(duì)應(yīng)的doGet或doPost等方法;當(dāng)服務(wù)器關(guān)閉或項(xiàng)目被卸載時(shí)服務(wù)器會(huì)將Servlet實(shí)例銷毀,此時(shí)會(huì)調(diào)用Servlet的destroy()方法。init方法和destory方法只會(huì)執(zhí)行一次,service方法客戶端每次請求Servlet都會(huì)執(zhí)行。Servlet中有時(shí)會(huì)用到一些需要初始化與銷毀的資源,因此可以把初始化資源的代碼放入init方法中,銷毀資源的代碼放入destroy方法中,這樣就不需要每次處理客戶端的請求都要初始化與銷毀資源。
get和post請求的區(qū)別?
1、get請求用來從服務(wù)器上獲得資源,而post是用來向服務(wù)器提交數(shù)據(jù);
2、get將表單中數(shù)據(jù)按照name=value的形式,添加到action 所指向的URL 后面,并且兩者使用"?"連接,而各個(gè)變量之間使用"&"連接;post是將表單中的數(shù)據(jù)放在HTTP協(xié)議的請求頭或消息體中,傳遞到action所指向URL;
3、get傳輸?shù)臄?shù)據(jù)要受到URL長度限制(1024字節(jié)即256個(gè)字符);而post可以傳輸大量的數(shù)據(jù),上傳文件通常要使用post方式;
4、使用get時(shí)參數(shù)會(huì)顯示在地址欄上,如果這些數(shù)據(jù)不是敏感數(shù)據(jù),那么可以使用get;對(duì)于敏感數(shù)據(jù)還是應(yīng)用使用post;
5、get使用MIME類型application/x-www-form-urlencoded的URL編碼(也叫百分號(hào)編碼)文本的格式傳遞參數(shù),保證被傳送的參數(shù)由遵循規(guī)范的文本組成,例如一個(gè)空格的編碼是"%20"。
補(bǔ)充:GET方式提交表單的典型應(yīng)用是搜索引擎。GET方式就是被設(shè)計(jì)為查詢用的。
什么情況下調(diào)用doGet()和doPost()?
Form標(biāo)簽里的method的屬性為get時(shí)調(diào)用doGet(),為post時(shí)調(diào)用doPost()。
轉(zhuǎn)發(fā)(Forward)和重定向(Redirect)的區(qū)別?
轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶端行為。
轉(zhuǎn)發(fā)(Forword)
通過RequestDispatcher對(duì)象的forward(HttpServletRequest request,HttpServletResponse response)方法實(shí)現(xiàn)的。RequestDispatcher可以通過HttpServletRequest 的getRequestDispatcher()方法獲得。例如下面的代碼就是跳轉(zhuǎn)到login_success.jsp頁面。
request.getRequestDispatcher("login_success.jsp").forward(request, response);
重定向(Redirect) 是利用服務(wù)器返回的狀態(tài)嗎來實(shí)現(xiàn)的。客戶端瀏覽器請求服務(wù)器的時(shí)候,服務(wù)器會(huì)返回一個(gè)狀態(tài)碼。服務(wù)器通過HttpServletRequestResponse的setStatus(int status)方法設(shè)置狀態(tài)碼。如果服務(wù)器返回301或者302,則瀏覽器會(huì)到新的網(wǎng)址重新請求該資源。
從地址欄顯示來說
forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址.
redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請求那個(gè)地址.所以地址欄顯示的是新的URL.
從數(shù)據(jù)共享來說
forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù).
redirect:不能共享數(shù)據(jù).
從運(yùn)用地方來說
forward:一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊.
redirect:一般用于用戶注銷登陸時(shí)返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等
從效率來說
forward:高.
redirect:低.
自動(dòng)刷新(Refresh)
自動(dòng)刷新不僅可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)跳轉(zhuǎn)到另一個(gè)頁面,還可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)刷新本頁面。Servlet中通過HttpServletResponse對(duì)象設(shè)置Header屬性實(shí)現(xiàn)自動(dòng)刷新例如:
Response.setHeader("Refresh","1000;URL=http://localhost:8080/servlet/example.htm");
其中1000為時(shí)間,單位為毫秒。URL指定就是要跳轉(zhuǎn)的頁面(如果設(shè)置自己的路徑,就會(huì)實(shí)現(xiàn)沒過一秒自動(dòng)刷新本頁面一次)
Servlet與線程安全
Servlet不是線程安全的,多線程并發(fā)的讀寫會(huì)導(dǎo)致數(shù)據(jù)不同步的問題。 解決的辦法是盡量不要定義name屬性,而是要把name變量分別定義在doGet()和doPost()方法內(nèi)。雖然使用synchronized(name){}語句塊可以解決問題,但是會(huì)造成線程的等待,不是很科學(xué)的辦法。
注意:多線程的并發(fā)的讀寫Servlet類屬性會(huì)導(dǎo)致數(shù)據(jù)不同步。但是如果只是并發(fā)地讀取屬性而不寫入,則不存在數(shù)據(jù)不同步的問題。因此Servlet里的只讀屬性最好定義為final類型的。
JSP和Servlet是什么關(guān)系?
其實(shí)這個(gè)問題在上面已經(jīng)闡述過了,Servlet是一個(gè)特殊的Java程序,它運(yùn)行于服務(wù)器的JVM中,能夠依靠服務(wù)器的支持向?yàn)g覽器提供顯示內(nèi)容。JSP本質(zhì)上是Servlet的一種簡易形式,JSP會(huì)被服務(wù)器處理成一個(gè)類似于Servlet的Java程序,可以簡化頁面內(nèi)容的生成。Servlet和JSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML分離開來。而JSP的情況是Java和HTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。有人說,Servlet就是在Java中寫HTML,而JSP就是在HTML中寫Java代碼,當(dāng)然這個(gè)說法是很片面且不夠準(zhǔn)確的。JSP側(cè)重于視圖,Servlet更側(cè)重于控制邏輯,在MVC架構(gòu)模式中,JSP適合充當(dāng)視圖(view)而Servlet適合充當(dāng)控制器(controller)。
JSP工作原理:
JSP是一種Servlet,但是與HttpServlet的工作方式不太一樣。HttpServlet是先由源代碼編譯為class文件后部署到服務(wù)器下,為先編譯后部署。而JSP則是先部署后編譯。JSP會(huì)在客戶端第一次請求JSP文件時(shí)被編譯為HttpJspPage類(接口Servlet的一個(gè)子類)。該類會(huì)被服務(wù)器臨時(shí)存放在服務(wù)器工作目錄里面。下面通過實(shí)例給大家介紹。
工程JspLoginDemo下有一個(gè)名為login.jsp的Jsp文件,把工程第一次部署到服務(wù)器上后訪問這個(gè)Jsp文件,我們發(fā)現(xiàn)這個(gè)目錄下多了下圖這兩個(gè)東東。
.class文件便是JSP對(duì)應(yīng)的Servlet。編譯完畢后再運(yùn)行class文件來響應(yīng)客戶端請求。以后客戶端訪問login.jsp的時(shí)候,Tomcat將不再重新編譯JSP文件,而是直接調(diào)用class文件來響應(yīng)客戶端請求。
由于JSP只會(huì)在客戶端第一次請求的時(shí)候被編譯 ,因此第一次請求JSP時(shí)會(huì)感覺比較慢,之后就會(huì)感覺快很多。如果把服務(wù)器保存的class文件刪除,服務(wù)器也會(huì)重新編譯JSP。
開發(fā)Web程序時(shí)經(jīng)常需要修改JSP。Tomcat能夠自動(dòng)檢測到JSP程序的改動(dòng)。如果檢測到JSP源代碼發(fā)生了改動(dòng)。Tomcat會(huì)在下次客戶端請求JSP時(shí)重新編譯JSP,而不需要重啟Tomcat。這種自動(dòng)檢測功能是默認(rèn)開啟的,檢測改動(dòng)會(huì)消耗少量的時(shí)間,在部署Web應(yīng)用的時(shí)候可以在web.xml中將它關(guān)掉。
JSP有9個(gè)內(nèi)置對(duì)象:
request:封裝客戶端的請求,其中包含來自GET或POST請求的參數(shù);
response:封裝服務(wù)器對(duì)客戶端的響應(yīng);
pageContext:通過該對(duì)象可以獲取其他對(duì)象;
session:封裝用戶會(huì)話的對(duì)象;
application:封裝服務(wù)器運(yùn)行環(huán)境的對(duì)象;
out:輸出服務(wù)器響應(yīng)的輸出流對(duì)象;
config:Web應(yīng)用的配置對(duì)象;
page:JSP頁面本身(相當(dāng)于Java程序中的this);
exception:封裝頁面拋出異常的對(duì)象。
Request對(duì)象的主要方法有哪些?
setAttribute(String name,Object):設(shè)置名字為name的request 的參數(shù)值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request 對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
getCookies():返回客戶端的所有 Cookie 對(duì)象,結(jié)果是一個(gè)Cookie 數(shù)組
getCharacterEncoding() :返回請求中的字符編碼方式 = getContentLength() :返回請求的 Body的長度
getHeader(String name) :獲得HTTP協(xié)議定義的文件頭信息
getHeaders(String name) :返回指定名字的request Header 的所有值,結(jié)果是一個(gè)枚舉的實(shí)例
getHeaderNames() :返回所以request Header 的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getInputStream() :返回請求的輸入流,用于獲得請求中的數(shù)據(jù)
getMethod() :獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
getParameter(String name) :獲得客戶端傳送給服務(wù)器端的有 name指定的參數(shù)值
getParameterNames() :獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getParameterValues(String name):獲得有name指定的參數(shù)的所有值
getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString() :獲得查詢字符串
getRequestURI() :獲取發(fā)出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的 IP 地址
getRemoteHost() :獲取客戶端的名字
getSession([Boolean create]) :返回和請求相關(guān) Session
getServerName() :獲取服務(wù)器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務(wù)器的端口號(hào)
removeAttribute(String name):刪除請求中的一個(gè)屬性
request.getAttribute()和 request.getParameter()有何區(qū)別?
從獲取方向來看:
getParameter()是獲取 POST/GET 傳遞的參數(shù)值;
getAttribute()是獲取對(duì)象容器中的數(shù)據(jù)值;
從用途來看:
getParameter用于客戶端重定向時(shí),即點(diǎn)擊了鏈接或提交按扭時(shí)傳值用,即用于在用表單或url重定向傳值時(shí)接收數(shù)據(jù)用。
getAttribute用于服務(wù)器端重定向時(shí),即在 sevlet 中使用了 forward 函數(shù),或 struts 中使用了
mapping.findForward。 getAttribute 只能收到程序用 setAttribute 傳過來的值。
另外,可以用 setAttribute,getAttribute 發(fā)送接收對(duì)象.而 getParameter 顯然只能傳字符串。
setAttribute 是應(yīng)用服務(wù)器把這個(gè)對(duì)象放在該頁面所對(duì)應(yīng)的一塊內(nèi)存中去,當(dāng)你的頁面服務(wù)器重定向到另一個(gè)頁面時(shí),應(yīng)用服務(wù)器會(huì)把這塊內(nèi)存拷貝另一個(gè)頁面所對(duì)應(yīng)的內(nèi)存中。這樣getAttribute就能取得你所設(shè)下的值,當(dāng)然這種方法可以傳對(duì)象。session也一樣,只是對(duì)象在內(nèi)存中的生命周期不一樣而已。getParameter只是應(yīng)用服務(wù)器在分析你送上來的 request頁面的文本時(shí),取得你設(shè)在表單或 url 重定向時(shí)的值。
總結(jié):
getParameter 返回的是String,用于讀取提交的表單中的值;(獲取之后會(huì)根據(jù)實(shí)際需要轉(zhuǎn)換為自己需要的相應(yīng)類型,比如整型,日期類型啊等等)
getAttribute 返回的是Object,需進(jìn)行轉(zhuǎn)換,可用setAttribute 設(shè)置成任意對(duì)象,使用很靈活,可隨時(shí)用
include指令include的行為的區(qū)別
include指令: JSP可以通過include指令來包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是該JSP文件的一部分,會(huì)被同時(shí)編譯執(zhí)行。 語法格式如下:
include動(dòng)作: 動(dòng)作元素用來包含靜態(tài)和動(dòng)態(tài)的文件。該動(dòng)作把指定文件插入正在生成的頁面。語法格式如下:
JSP九大內(nèi)置對(duì)象,七大動(dòng)作,三大指令-
JSP九大內(nèi)置對(duì)象,七大動(dòng)作,三大指令總結(jié)
講解JSP中的四種作用域
JSP中的四種作用域包括page、request、session和application,具體來說:
page代表與一個(gè)頁面相關(guān)的對(duì)象和屬性。
request代表與Web客戶機(jī)發(fā)出的一個(gè)請求相關(guān)的對(duì)象和屬性。一個(gè)請求可能跨越多個(gè)頁面,涉及多個(gè)Web組件;需要在頁面顯示的臨時(shí)數(shù)據(jù)可以置于此作用域。
session代表與某個(gè)用戶與服務(wù)器建立的一次會(huì)話相關(guān)的對(duì)象和屬性。跟某個(gè)用戶相關(guān)的數(shù)據(jù)應(yīng)該放在用戶自己的session中。
application代表與整個(gè)Web應(yīng)用程序相關(guān)的對(duì)象和屬性,它實(shí)質(zhì)上是跨越整個(gè)Web應(yīng)用程序,包括多個(gè)頁面、請求和會(huì)話的一個(gè)全局作用域。
如何實(shí)現(xiàn)JSP或Servlet的單線程模式?
對(duì)于JSP頁面,可以通過page指令進(jìn)行設(shè)置。
對(duì)于Servlet,可以讓自定義的Servlet實(shí)現(xiàn)SingleThreadModel標(biāo)識(shí)接口。
說明:如果將JSP或Servlet設(shè)置成單線程工作模式,會(huì)導(dǎo)致每個(gè)請求創(chuàng)建一個(gè)Servlet實(shí)例,這種實(shí)踐將導(dǎo)致嚴(yán)重的性能問題(服務(wù)器的內(nèi)存壓力很大,還會(huì)導(dǎo)致頻繁的垃圾回收),所以通常情況下并不會(huì)這么做。
實(shí)現(xiàn)會(huì)話跟蹤的技術(shù)有哪些?
使用Cookie
向客戶端發(fā)送Cookie
從客戶端讀取Cookie
優(yōu)點(diǎn): 數(shù)據(jù)可以持久保存,不需要服務(wù)器資源,簡單,基于文本的Key-Value
缺點(diǎn): 大小受到限制,用戶可以禁用Cookie功能,由于保存在本地,有一定的安全風(fēng)險(xiǎn)。
URL 重寫
在URL中添加用戶會(huì)話的信息作為請求的參數(shù),或者將唯一的會(huì)話ID添加到URL結(jié)尾以標(biāo)識(shí)一個(gè)會(huì)話。
優(yōu)點(diǎn): 在Cookie被禁用的時(shí)候依然可以使用
缺點(diǎn): 必須對(duì)網(wǎng)站的URL進(jìn)行編碼,所有頁面必須動(dòng)態(tài)生成,不能用預(yù)先記錄下來的URL進(jìn)行訪問。
3.隱藏的表單域
優(yōu)點(diǎn): Cookie被禁時(shí)可以使用
缺點(diǎn): 所有頁面必須是表單提交之后的結(jié)果。
HttpSession
在所有會(huì)話跟蹤技術(shù)中,HttpSession對(duì)象是最強(qiáng)大也是功能最多的。當(dāng)一個(gè)用戶第一次訪問某個(gè)網(wǎng)站時(shí)會(huì)自動(dòng)創(chuàng)建 HttpSession,每個(gè)用戶可以訪問他自己的HttpSession。可以通過HttpServletRequest對(duì)象的getSession方 法獲得HttpSession,通過HttpSession的setAttribute方法可以將一個(gè)值放在HttpSession中,通過調(diào)用 HttpSession對(duì)象的getAttribute方法,同時(shí)傳入屬性名就可以獲取保存在HttpSession中的對(duì)象。與上面三種方式不同的 是,HttpSession放在服務(wù)器的內(nèi)存中,因此不要將過大的對(duì)象放在里面,即使目前的Servlet容器可以在內(nèi)存將滿時(shí)將HttpSession 中的對(duì)象移到其他存儲(chǔ)設(shè)備中,但是這樣勢必影響性能。添加到HttpSession中的值可以是任意Java對(duì)象,這個(gè)對(duì)象最好實(shí)現(xiàn)了 Serializable接口,這樣Servlet容器在必要的時(shí)候可以將其序列化到文件中,否則在序列化時(shí)就會(huì)出現(xiàn)異常。
Cookie和Session的的區(qū)別?
由于HTTP協(xié)議是無狀態(tài)的協(xié)議,所以服務(wù)端需要記錄用戶的狀態(tài)時(shí),就需要用某種機(jī)制來識(shí)具體的用戶,這個(gè)機(jī)制就是Session.典型的場景比如購物車,當(dāng)你點(diǎn)擊下單按鈕時(shí),由于HTTP協(xié)議無狀態(tài),所以并不知道是哪個(gè)用戶操作的,所以服務(wù)端要為特定的用戶創(chuàng)建了特定的Session,用用于標(biāo)識(shí)這個(gè)用戶,并且跟蹤用戶,這樣才知道購物車?yán)锩嬗袔妆緯_@個(gè)Session是保存在服務(wù)端的,有一個(gè)唯一標(biāo)識(shí)。在服務(wù)端保存Session的方法很多,內(nèi)存、數(shù)據(jù)庫、文件都有。集群的時(shí)候也要考慮Session的轉(zhuǎn)移,在大型的網(wǎng)站,一般會(huì)有專門的Session服務(wù)器集群,用來保存用戶會(huì)話,這個(gè)時(shí)候 Session 信息都是放在內(nèi)存的,使用一些緩存服務(wù)比如Memcached之類的來放 Session。
思考一下服務(wù)端如何識(shí)別特定的客戶?這個(gè)時(shí)候Cookie就登場了。每次HTTP請求的時(shí)候,客戶端都會(huì)發(fā)送相應(yīng)的Cookie信息到服務(wù)端。實(shí)際上大多數(shù)的應(yīng)用都是用 Cookie 來實(shí)現(xiàn)Session跟蹤的,第一次創(chuàng)建Session的時(shí)候,服務(wù)端會(huì)在HTTP協(xié)議中告訴客戶端,需要在 Cookie 里面記錄一個(gè)Session ID,以后每次請求把這個(gè)會(huì)話ID發(fā)送到服務(wù)器,我就知道你是誰了。有人問,如果客戶端的瀏覽器禁用了 Cookie 怎么辦?一般這種情況下,會(huì)使用一種叫做URL重寫的技術(shù)來進(jìn)行會(huì)話跟蹤,即每次HTTP交互,URL后面都會(huì)被附加上一個(gè)諸如 sid=xxxxx 這樣的參數(shù),服務(wù)端據(jù)此來識(shí)別用戶。
Cookie其實(shí)還可以用在一些方便用戶的場景下,設(shè)想你某次登陸過一個(gè)網(wǎng)站,下次登錄的時(shí)候不想再次輸入賬號(hào)了,怎么辦?這個(gè)信息可以寫到Cookie里面,訪問網(wǎng)站的時(shí)候,網(wǎng)站頁面的腳本可以讀取這個(gè)信息,就自動(dòng)幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給用戶的一點(diǎn)甜頭。所以,總結(jié)一下:Session是在服務(wù)端保存的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來跟蹤用戶的狀態(tài),這個(gè)數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫、文件中;Cookie是客戶端保存用戶信息的一種機(jī)制,用來記錄用戶的一些信息,也是實(shí)現(xiàn)Session的一種方式。
Javaweb開發(fā)視頻
免費(fèi)html視頻教程:http://www.ilovecolors.com.cn/v27/
免費(fèi)css視頻教程下載:http://www.ilovecolors.com.cn/v67/
Javascript視頻教程下:http://www.ilovecolors.com.cn/v68/
jquery視頻教程全集:http://www.ilovecolors.com.cn/v30/
ajax視頻教程全集:http://www.ilovecolors.com.cn/v31/
Java jsp入門教程:http://www.ilovecolors.com.cn/v34/
spring視頻教程下載:http://www.ilovecolors.com.cn/v38/
以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“史上最全面的javaweb總結(jié),內(nèi)涵視頻教程”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)內(nèi)容
五大 JAVA Web 框架的優(yōu)缺點(diǎn)對(duì)比
Javaweb開發(fā)學(xué)習(xí)路線及Java三大框架
Javaweb學(xué)習(xí)路線(自學(xué)規(guī)劃)
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743