javaee分校課件day11-cookie與session筆記介紹_第1頁(yè)
javaee分校課件day11-cookie與session筆記介紹_第2頁(yè)
javaee分校課件day11-cookie與session筆記介紹_第3頁(yè)
javaee分校課件day11-cookie與session筆記介紹_第4頁(yè)
javaee分校課件day11-cookie與session筆記介紹_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Javaweb-與 sesJsp 簡(jiǎn)單介紹問(wèn)題:jsp,它作用?Jsp 是 java servage,它的本質(zhì)就是一個(gè) servlet.顯示數(shù)據(jù)問(wèn)題。可以使用 jsp 來(lái)代替 servlet 來(lái)處理對(duì)于 jsp可以簡(jiǎn)單理解成是在html 頁(yè)面中可以書寫 java 代碼。Jsp 文件的后綴名是.jsp分析:jsp 就是一個(gè) servlet?在 tomcat 中有一個(gè)目錄叫work,它里面就了 jsp 頁(yè)面生成的源代碼。通過(guò)查看 jsp 翻譯后的 java 源代碼知道它們生成的類會(huì)繼承 HttpJspBase,而這個(gè)類的父類就是 HttpServlet,所以說(shuō) jsp 也是一個(gè) servlet.J

2、sp 原理.5.6.當(dāng)在瀏覽器上輸入服務(wù)器 tomcat 得到,會(huì)通過(guò) JspServlet 將后綴名是.jsp 的請(qǐng)求處理,會(huì)將 index.jsp 翻譯成 index_jsp.java 文件在將 index_jsp.java 文件編譯成 index_jsp.class 文件jvm 將.class 加載運(yùn)行服務(wù)器生成響應(yīng),響應(yīng)信息中就包含了 jsp 頁(yè)面上的html 代碼。Jsp 中的1.2.片段3.表達(dá)式例如:通過(guò)查看源代碼知道以下:內(nèi)容會(huì)生成在成員位置上。在中可以變量,方法或類內(nèi)容會(huì)生成在_jspService 方法上,也就是一個(gè)局部的位置,在這個(gè)位置上可以變量(局部變量)

3、,也可以類內(nèi)容就會(huì)被輸出到頁(yè)面上,它就是通過(guò) out.pr(),注意在使用可以在最后以分號(hào)結(jié)尾表達(dá)式時(shí),不Jsp 頁(yè)面上的注釋1.2.3.因?yàn)?jsp 頁(yè)面上可以寫 html 代碼,可以使用 html 注釋因?yàn)?jsp 頁(yè)面上可以寫 java 代碼,可以使用 java 注釋也可以使用 jsp 自己的注釋 jsp 注釋內(nèi)容它不會(huì)在生成的 java文件中存在。案例-登陸操作代碼實(shí)現(xiàn):1.創(chuàng)建一個(gè) login.jsp 頁(yè)面2.創(chuàng)建一個(gè) LoginServlet3.在 login.jsp 頁(yè)面上顯示錯(cuò)誤信息通過(guò)它輸出錯(cuò)誤信息,但是如果沒(méi)有錯(cuò)誤信息會(huì)顯示null,應(yīng)該怎樣處理哪?也可以使用后續(xù)要學(xué)習(xí)的e

4、l 表達(dá)式來(lái)完成上述操作會(huì)話技術(shù)介紹會(huì)話技術(shù)分為與 ses它是瀏覽器端的會(huì)話技術(shù)Ses它是服務(wù)器端的會(huì)話技術(shù)問(wèn)題:會(huì)話技術(shù)?使用會(huì)話技術(shù)可以解決什么問(wèn)題?會(huì)話可以簡(jiǎn)單理解成,通過(guò)瀏覽器直到關(guān)閉瀏覽器過(guò)程叫做會(huì)話服務(wù)器的資源,點(diǎn)擊超連接可以進(jìn)行資源的跳轉(zhuǎn),使用會(huì)話技術(shù)可以解決的是在整個(gè)會(huì)話過(guò)程中產(chǎn)生的數(shù)據(jù)的保存問(wèn)題。使用 HttpServletRequest 與ServletContext 來(lái)保存會(huì)話過(guò)程中產(chǎn)生的數(shù)據(jù)問(wèn)題分析?是網(wǎng)景公司發(fā)明是由服務(wù)器端創(chuàng)建,發(fā)送給瀏覽器,瀏覽器可以將的 key/value 保存到瀏覽器端,下一次在請(qǐng)求同一個(gè)的資源時(shí),就可以將送給服務(wù)器。發(fā)在 javaee 的 a

5、pi 中有一個(gè)類 javax.servlet.http.造方法,它就可以創(chuàng)建一個(gè),它的構(gòu)是由 http 協(xié)議制定的,并不是 java 語(yǔ)言特有的,或.net 都可以使用。問(wèn)題 1:如果將一個(gè)響應(yīng)到瀏覽器端?可 以 通 過(guò)response.addHeader(“set-在 http 協(xié)議中生成的格式response對(duì) 象 來(lái) 操 作 , 可 以 通 過(guò)”,”one=aaa”);也可以通過(guò)簡(jiǎn)便的方法set-:one=aaa; two=bbbresponse.add();問(wèn)題 2:如何在服務(wù)器端得到一個(gè)?要想得到一個(gè)在 http 請(qǐng)求頭中有一個(gè)可以通過(guò) request 對(duì)象來(lái)獲取。:one=aaa;

6、 two=bbb可以通過(guò)request 的一個(gè)方法總結(jié): gets()得到所有的創(chuàng)建將new響應(yīng)到瀏覽器端(String name,String value);response.addrequest.get();3.在服務(wù)器中獲取s();得到了一個(gè)數(shù)組。對(duì)象后, 可以使用 getName()與 getValue()方法來(lái)得到得到的名稱與值。http 協(xié)議對(duì)1.規(guī)定如下:(筆試題)用于攜帶少量數(shù)據(jù)最大為 4kb2.3.一個(gè)服務(wù)器最多向一個(gè)瀏覽器保存 20 個(gè)一個(gè)瀏覽器最多可以保存 300 個(gè).關(guān)于持久化問(wèn)題:默認(rèn)情況下,它是會(huì)話級(jí)別的,簡(jiǎn)單說(shuō),就是是在瀏覽器的內(nèi)存中,如果將瀏覽器關(guān)閉,就。這個(gè)方

7、法可以讓關(guān)閉瀏覽器后,持久化.也就是說(shuō)可以在瀏覽器端產(chǎn)生一個(gè)文件,當(dāng)也不會(huì)。注意:如果將 setMaxAge(0)代表的是刪除.路徑在刪除時(shí)要注意一個(gè)關(guān)于。刪除與創(chuàng)建時(shí)它們的路徑必須一致。這個(gè)方法是用于設(shè)置路徑。作用?問(wèn)題:路徑它的作用就是確定當(dāng)服務(wù)器的資源時(shí),是否要攜帶.例如 a c當(dāng)/AndSesAndSes/b/jsps/AndSes/jsps/ c這時(shí)只有a會(huì)攜帶到服務(wù)器端,原因是路徑中包含了 a的 path當(dāng) 這時(shí)會(huì)有 a 與b攜帶到服務(wù)器端案例-上一次時(shí)間當(dāng)資源(ShowTimeServlet),第一次顯示的第一次,時(shí)間如果第二次,顯示的是上一次時(shí)間是:x以后每一次顯示的都是上一次

8、的時(shí)間。package cn.servlet.;import java.io.IOException; import java.util.Date;import javax.servlet.ServletException; import javax.servlet.http.; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class ShowtTimeServlet

9、 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException dot(request, response);public void dot(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /解決響應(yīng)信息亂碼問(wèn)題 response.setContentTy

10、pe(text/html;charset=utf-8);/ 先從 request 中獲取名稱叫 time 的次,如果獲取不到,說(shuō)明是第一次,如果可以獲取到,說(shuō)明不是第一 cs = request.gets(); / 獲取所有的= findByName(time, cs);= null) / 第一次response.getWriter().write(if (第一次,時(shí)間是: + new Date().toLocaleString(); else /不是第一次不是第一次的 value 值表示的,要顯示的時(shí)間其實(shí)是時(shí)間long time = Long.parseLong( Date date =

11、new Date(time);response.getWriter().write(上一次.getValue();,時(shí)間是: + date.toLocaleString();/ 1.創(chuàng)建一個(gè)= new們將當(dāng)前時(shí)間的毫秒值對(duì)象,name=time value 就當(dāng)前時(shí)間(time, String.valueOf(System.currentTimeMillis(); /為value我.setMaxAge(7*24*60*60);/ 2.將它攜帶到瀏覽器端response.add();/ 抽取一個(gè)方法,根據(jù)名稱從數(shù)組中查找publicfindByName(String name, cs) if (

12、cs = null | cs.length = 0) return null;for (c : cs) if (c.getName().equals(time) return c;return null;案例-顯示商品瀏覽信息Book.jsp 頁(yè)面BookServletresponse.setContentType(text/html;charset=utf-8);/ 1.得到請(qǐng)求參數(shù) idString id = request.getParameter(id);/ 2.將 id 拼接到中。/ 注意:需要判斷是否是第一次=Utils.findByName(history, request.ge

13、ts(); if (= null) / 是第一次= new(history, id); else / 不是第一次,判斷在的 value 中是否存在了現(xiàn)的 id/ 得到的 valueString value =.getValue();/ value 是以-分開(kāi)的,可以使用 String 類的 split 方法將它轉(zhuǎn)換成String,/ 在將數(shù)組轉(zhuǎn)換成 List,通過(guò) contains 方法來(lái)判斷 id 在 value 中是否存在String st = value.split(-);history.jspSesSes是服務(wù)器端的會(huì)話技術(shù), ses其實(shí)是 sun 公司定義的一個(gè)接口javax.ser

14、vlet.http.HttpSes.ses不是由 http 協(xié)議制定問(wèn)題 1:ses是怎樣解決會(huì)話過(guò)程中產(chǎn)生的數(shù)據(jù)的保存?問(wèn)題 2:怎樣獲取一個(gè) ses?想要獲取一個(gè)HttpSes對(duì)象可以通過(guò)request 對(duì)象來(lái)獲取.Ses的實(shí)現(xiàn)是依賴于List list = Arrays.asList(st);if (!list.contains(id) / 原來(lái)的的 value 值中不包含 id= new(history, value + - + id);/ 將 攜帶到瀏覽器端response.add();response.getWriter().write( 已 經(jīng) 瀏 覽 了 商 品 , 繼 續(xù) 瀏

15、 覽 ,查看瀏覽 );第一次請(qǐng)求,的請(qǐng)求頭中沒(méi)有一個(gè)叫 jsesid 的, 那么當(dāng)?shù)紻emo1Servlet 時(shí),它執(zhí)行 request.getSes()就會(huì)創(chuàng)建一個(gè) HttpSes對(duì)象(理解成new),當(dāng)響應(yīng)產(chǎn)生時(shí),就將 ses的 id 做為的 value,響應(yīng)到瀏覽器端Set-:jsesid=當(dāng)一次在Demo2Servlet 時(shí),http 請(qǐng)求中就會(huì)有一個(gè):jsesid=x 信息,那么在 Demo2Servlet 中通過(guò) request.getSes()時(shí)就會(huì)根據(jù) jsesid 的值在服務(wù)器內(nèi)存中查找對(duì)應(yīng)的 ses對(duì)象,如果查找到,直接拿過(guò)來(lái)使用,不會(huì)再創(chuàng)建。HttpSes它也是一個(gè)域?qū)ο?/p>

16、,可以想像成是一個(gè) Map.可以通過(guò)setribute(String,Object) getribute(String)方法來(lái)操作。Ses的生命周期:什么時(shí)候創(chuàng)建通過(guò)request.getSes()來(lái)獲取一個(gè)HttpSes當(dāng)jses時(shí),如果請(qǐng)求頭中沒(méi)有id,那么就會(huì)創(chuàng)建一個(gè) HttpSes對(duì)象。getSesgetSes()方法一定會(huì)獲取一個(gè)HttpSes對(duì)象。()如果參數(shù)為 false,請(qǐng)求中沒(méi)有 jsesid,那么就不會(huì)重新創(chuàng)建,而是返回一個(gè) null.什么時(shí)候銷毀立即銷毀 ses.以指定的秒值為,超時(shí)后銷毀 ses.在 tomcat/conf/web.xml 文件中有一段配置這段配置描述的

17、就是 ses默認(rèn)在 30 分鐘內(nèi)沒(méi)有使用,銷毀。Ses案例-購(gòu)物車Product.jspAddProductToCartServletpackage cn.servlet.ses;import java.io.IOException; import java.util.HashMap; import java.util.Map;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax

18、.servlet.http.HttpServletResponse;public class AddProductToCartServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException dot(request, response);public void dot(HttpServletRequest request, HttpServletResponse response)t

19、hrows ServletException, IOException response.setContentType(text/html;charset=utf-8);/ 1.得到商品的名稱String name = request.getParameter(name); / 因?yàn)轫?yè)面?zhèn)鬟f的是中文,并且是通過(guò)超連接方式傳遞,也就是 get,必須處理亂碼name = new String(name.getBytes(iso8859-1), utf-8);/ 2.將商品添加到購(gòu)物車/ 需要考慮是否是第一次購(gòu)物,存不存在購(gòu)物車Map cart = (Map) request.getSes()if

20、(cart = null) / 沒(méi)有購(gòu)物車,是第一次購(gòu)物cart = new HashMap();/ 不是第一次購(gòu)物,存在購(gòu)物車,需要考慮商品在購(gòu)物車中是否存在。eger count = cart.get(name);/ 如果 count=null,說(shuō)明購(gòu)物車中沒(méi)有這個(gè)商品 if (count = null) cart.put(name, 1); else / 購(gòu)物車中存在這個(gè)商品cart.put(name, count + 1);/ 將購(gòu)物車request.getSes到 ses中。().setribute(cart, cart);response.getWriter().write(購(gòu)物成

21、功,繼續(xù)購(gòu)物, 查看購(gòu)物車);在 cart.jsp 頁(yè)面上顯示購(gòu)物車品URL 重寫url 重寫?當(dāng)瀏覽器,可以將 ses的 id 通過(guò) url 路徑發(fā)送給服務(wù)器。當(dāng)用戶通過(guò)的 id 就會(huì)自動(dòng)的變成請(qǐng)求頭的一部分,這種url 路徑去將 ses服務(wù)器資源時(shí),這時(shí) ses的 id 自動(dòng)生成的 url 路徑的方式,叫 url 重寫。url 重寫解決當(dāng)瀏覽器成使用 ses:了操作。,還需要使用 ses時(shí),可以通過(guò) url 重寫的方式來(lái)完url 重寫實(shí)現(xiàn)response.encodeRedirectURL(String path)來(lái)對(duì)重定向后的 url 地址進(jìn)行 url 重寫response.encode

22、URL(String path)來(lái)對(duì)表單的 action 或超連接進(jìn)行 url 重寫.案例-登陸案例1.創(chuàng)建一個(gè) login.jsp 頁(yè)面,在頁(yè)面上有用戶名與,還有。2.創(chuàng)建一個(gè) LoginServlet,完成登陸操作,登陸成功后,會(huì)將用戶信息封裝到 User 對(duì)象中。并且將 user 對(duì)象會(huì)在 request 域中到 ses中,重寫向到 sucs.jsp 頁(yè)面。如果登陸失敗,錯(cuò)誤信息,請(qǐng)求轉(zhuǎn)發(fā)到 login.jsp 頁(yè)面,顯示錯(cuò)誤信息。3.在 sucs.jsp 頁(yè)面上會(huì)從 ses中獲取用戶信息顯示。Login.jsp 頁(yè)面LoginServlet從頁(yè)面獲取輸入的與生成的對(duì)比,問(wèn)題是,生成的怎

23、樣保存?中,在應(yīng)該在 ImageCodeServletLoginServlet 中就直接從 sesses中將生成的又分為兩碼到內(nèi)獲取就可以,并且獲取完成后,立即將 ses中的刪除。package cn.servlet; import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRes

24、ponse;import cn.User;public class LoginServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException dot(request, response);public void dot(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(utf-8);/ 解決請(qǐng)求參數(shù)亂碼/ 1.得到請(qǐng)求參數(shù)String username = request.getParameter(username); / 得到用戶名Sucs.jsp 頁(yè)面String

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論