版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
<%=…%>:Java<%!...%>:Java<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01JavaStrings1= o//輸出變量:<%=s1輸出int類型常量:<%=100輸出String類型常量:<%="你好與<%=s1%>等同于out.print(s1); o”%>等同于<% o”);%>,也等同于直接在頁面中 o一樣StringsStrings= <tableborder="1" for(inti=0;i<10;i++)<td><%=i+1<td>user<%=i<td><%=100+1}JSPJSPServletJSPServlet!JSPJSP生成的Servlet存放在${CATALANA}/work 下,我經(jīng)常開玩笑的說,它是JSP的“真身。我們打開看看其中的內(nèi)容,了解一下JSP的“真身。JSP中的靜態(tài)信息(例如<html>等)out.write()完成打印!JSP的整篇內(nèi)容都會放到名為_jspService的方法中!你可能會說<@page>publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestpublicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)javax.servlet.http.HttpSessionsession=null;finaljavax.servlet.ServletContextapplication;finaljavax.servlet.ServletConfigconfig;javax.servlet.jsp.JspWriterout=null;finaljava.lang.Objectpage=this;javax.servlet.jsp.JspWriter_jspx_out=null;trytrynull,true,8192,true);config=pageContext.getServletConfig();session=pageContext.getSession();out=pageContext.getOut();_jspx_out=…}JSP一共三種形式privateStringpublic o()privateStringpublic o()return o}JSP編譯成.javaJSPJSPhtml注釋:<!--…-->JSP編譯成的.java中是存在的,html10086打個,你就是客戶端,而10086服務(wù)人員就是服務(wù)器了。從雙方接通那一刻起,會話就開始了,到某一方掛斷表示會話結(jié)束。在通10086發(fā)出多個請求,那么這多個請求都在一個會話中。在一個會話的多個請求中共享數(shù)據(jù),這就是會話技術(shù)。例如在一個會話中的請求如下請求登錄(請求參數(shù)是用戶名和請求轉(zhuǎn)賬(請求參數(shù)與轉(zhuǎn)賬相關(guān)的數(shù)據(jù)請求信譽卡還款(請求參數(shù)與還款相關(guān)的數(shù)據(jù)時一定是相對張三的轉(zhuǎn)賬和還款!這就說明須在一個會話過程中有共享數(shù)據(jù)的能力。 或session完HTTP但HTTP協(xié)議中可以使 來完成會話在JavaWeb中,使用session來完成會話,session底層依 技術(shù)端瀏覽器會把保存起來,當(dāng)下一次再服務(wù)器時把再發(fā)送給服務(wù)器。是由服務(wù)器創(chuàng)建,然后通過響應(yīng)發(fā)送給客戶端的一個鍵值對??蛻舳藭4妫?biāo)注出的來源(哪個服務(wù)器的。當(dāng)客戶端向服務(wù)器發(fā)出請求時會把所有這個服務(wù)器包含在請求中發(fā)送給服務(wù)器,這樣服務(wù)器就可以識別客戶端了!一個服務(wù)器最多在客戶端瀏覽器上保存20 一個瀏覽器最多保存300 HTTP的規(guī)范,但在瀏覽器大戰(zhàn)的今天,一些瀏覽器為了打敗對手,為了展現(xiàn)自己的能力起見,可能對規(guī)范“擴展”了一些,例如每個8KB,最多可保存500個等!但也不會出現(xiàn)硬盤占滿的可能!注意,不同瀏覽器之間是不共享的。也就是說在你使用IE服務(wù)器時,服務(wù)器會把發(fā)給IE,然后由IE保存起來,當(dāng)你在使用FireFox服務(wù)器時,不可能把IE保存的HTTPHTTP格式 :a=A;b=B;c=C。即多 用分號離開 一 對象一個 Set-:Set-:Set-:發(fā)送的是:Set- :a=A;第二請求服務(wù)器端發(fā)送的是:Set- 下一個,即:a=AA。我們這個案例是客戶端AServletAServlet在響應(yīng)中添加 然后客戶端BServlet,這時瀏覽器會自動在請求中帶上 ,BServlet獲取請求中的 packagepackageimportimportimportjavax.servlet.ServletException;importjavax.servlet.http. importjavax.servlet.http.HttpServlet;importimport@authorpublicclassAServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOExceptionStringidUUID.randomUUID().toString();//=new ("id",id);//創(chuàng)建 }}packagepackageimportimportjavax.servlet.ServletException;importjavax.servlet.http. importjavax.servlet.http.HttpServlet;importimport***@author*publicclassBServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOExceptioncs if(csnull ccsif(c.getName().equals("id")){//獲 "+印值}}}}}什么 的生不只是有name和value, 可以通過setMaxAge(int)來設(shè)置 一旦關(guān)閉瀏覽器窗口,那么就會。 對象可存活1小時。當(dāng)生命大于0時,瀏覽器會把 也會存活1小時; 生命等于0是一個特殊的值它表示 的setMaxAge(0)來刪除這個。無論是在瀏覽器內(nèi)存中,還是在客戶端硬盤上都會刪除這個。下面是瀏覽器查看的方式IE查 文件的路徑:C:\sand FireFox查 案例:顯示上次時創(chuàng) ,名為lasttime,值為當(dāng)前時間,添加到response中在AServlet中獲取請求中名為lasttime xxxpublicpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException=("lasttime",new.setMaxAge(60*60); []cs=request.get Strings="您是首次 if(cs!=null){ c:cs)s="您上次 時間是:"+}}}}}什么 的路現(xiàn)在有WEB應(yīng)用向客戶端發(fā)送了10個這就說明客戶端無論應(yīng)用A的哪個Servlet都會把這10個包含在請求中但是也許只有AServlet需要請求中的而其他Servlet根本就不會獲取請求中的。這說明客戶端瀏覽器有時發(fā)送這些是多余的!可以通過設(shè)置的path來指定瀏覽器,在什么樣的路徑時,包含什么樣的下面我們來看看路徑的作用下面是客戶端瀏覽器保存的3 的路徑 ABa、Ca、中不會包含這個。test, test,test/servlet, B請求的URL包含了“/test,以及“/test/jsp,所以請求中包含路徑為 設(shè) 的路設(shè) 如果沒有設(shè)置的路徑,那么路徑的默認值當(dāng)前資源所在路徑,例如 時添加的 默認路徑 時添加的 默認路徑的的屬性可以讓中二級域共享,次要現(xiàn)在我希望在這些主機之間共享(例如在 中響應(yīng)的,可以在請求中包含。很明顯,現(xiàn)在不是路徑的問題了,而是主機的問題,即的問題設(shè) 的path為“/:c.setPath(“/”);設(shè) :c.set 當(dāng)為“ ”時,無論前綴是什么,都會共享的。但是現(xiàn)在我們需要設(shè) windowsDNS<Host <Host <Hostname=" unpackWARs="true"autoDeploy="true"c=("id", AAServlet。把A項目的 到 下,并把 的名字修改[][]cs=if(cs!=null) c:cs)Strings=c.getName()+":"+c.getValue()+"<br/>";}}BBServlet把B項目的 到 下,并把 的名字修改第五步:\AServlet,然后再\BServlet的name和value都不能使用中文,如果希望在 進行URL編碼,然后把編碼后的字符串放到 StringStringname= ","UTF-Stringvalue= ","UTF-c=(name,[]cs=request.get if[]cs=request.get if(cs!=null) c:cs)Stringname=URLDecoder.decode(c.getName(),"UTF-8");Stringvalue=URLDecoder.decode(c.getValue(),"UTF-8");Strings=name+":"+value+"<br/>";}}<a<a<a<a<a<a<a[]cs=if(cs!=null) c:cs)if(c.getName().equals("goods")){}}}publicpublicclassGoodServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException{StringgoodName=request.getParameter("name");Stringgoods Utils.getCookValue(request,if(goods!=null)String[]arr=goods.split(",Set<String>goodSet=newLinkedHashSet(Arrays.asList(arr));goods=goods=goods.substring(1,goods.length()-}elsegoods=}= ("goods",.setMaxAge(1*60*60*24); }}publicpublicUtils{[]cs=if(cs==null)return} c:cs)if(c.getName().equals(name))return}}return}}HttpSession什么是HttSessionHttpSessionHttpSessionrequest.getSesssion()session對象那么直接返回,如果session并返回;HttpSessionrequest.getSession(boolean)truerequeset.getSession()相同。falsesessionnull;HttpSessionHttpSessionServletJSP中可以多使用一個域JSP的第四個域?qū)ο?。HtpServletequetAServletBServletAServletBServletrequest域中ServletContextServletContextServletContext中的數(shù)據(jù)ServletContext中的數(shù)據(jù)就可以共享;HttpSessionsession性,例如:session.setAttribute(“xxx”,“XXX”)session中保存了一個域?qū)傩?,域?qū)傩悦QMap相同;才行,例如:Stringvalue=(String)session.getAttribute(“xxx”);xxx的域?qū)傩?;voidremoveAttribute(Stringname)HttpSessionname指定碼進行校驗如果用戶名錯誤顯“用戶名或錯誤如果正確保存用戶名sessionindex1.jsp;當(dāng)用戶沒有登錄時index1.jsp或index2.jsp,顯示“您還沒有登錄。如果用戶在login.jsp登錄成功后到達index1.jsp頁面會顯示當(dāng)前用戶名,而且不用再次登錄去index2.jsp也會顯示用戶名。因為多次請求在一個會話范圍,index1.jspindex2.jspsession中獲取用戶名,session<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPE<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<formaction="/day06_4/LoginServlet"用戶名:<inputtype="textname="username<inputtype="submit"<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Stringusername=if(username==null){}elseout.print("用戶名:}<a<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Stringusername=if(username==null){}elseout.print("用戶名:}<apublicpublicclassLoginServletextendsHttpServletpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException{Stringusername=")) }elseHttpSessionsession=request.getSession();session.setAttribute("username",username);}}}sessionsession底層是依 的!我們來理解一下session的原理吧當(dāng)我首次去銀行時,因為還沒有賬號,所以需要開一個賬號,我獲得的是,而銀行這的數(shù)據(jù)庫中留下了我的賬號,我的錢是保存在銀行的賬號中,而我?guī)ё叩氖俏业膕essionsession的id(一個 中保存了sessionId??蛻舳藥ё叩氖莝essionId,而數(shù)據(jù)是保存在session中。當(dāng)客戶端再次服務(wù)器時,在請求中會帶上sessionId,而服務(wù)器會通過sessionId找到對應(yīng)的sessionsessionsessionId通過發(fā)送給客戶端,但這個的生命不-1,即只在瀏覽器內(nèi)存中存在,也就是說如果用戶關(guān)閉了瀏覽器,那么這個就丟失了。當(dāng)用戶再次打開瀏覽器服務(wù)器時,就不會有sessionId發(fā)送給服務(wù)器,那么服務(wù)器會認為你sessionsessionsessionId中到sessionsession長時間沒人使用的話,服務(wù)器會把sessionTomcat30分鐘,可以在${CATALANA}/conf/web.xml找到這個web.xml中覆蓋這個配置!session失效時間也說明一個問題!如果你打開的一個頁面開始長時間不動,超出了30分鐘后,再去點擊或提交表單時你會發(fā)現(xiàn),你的session已經(jīng)丟失了!sessionStringgetId()session30TomcatsessionvoidsetMaxInactiveInterval(intinterval)session允許的最大不活動時間(秒,如果設(shè)1session1session就會被移除;longgetCreationTime()sessionlonggetLastAccessedTime()sessionvoidinvalidate():讓session失效!調(diào)用這個方被session失效,當(dāng)session失效后,客戶端再次請求,服務(wù)器會給客戶端創(chuàng)建一個新的session,并在響應(yīng)中給客戶端新sessionsessionId;booleanisNew():查看session是否為新。當(dāng)客戶端第一次請求時,服務(wù)器為客戶端創(chuàng)建sessionsessionId響應(yīng)給客戶端時,這session的狀態(tài)為新。URLsession依賴,那么session為什么依賴呢?因為服務(wù)器需要在每次請求sessionIdsession對象。那么如果客戶端瀏覽器關(guān)閉了呢?那么session是不是就會不存在了呢?jSessionIdsessionIdsessoin對象。<ahref='/day06_5/index.jsp;jsessionid=<%=session.getId(>主頁<formaction='/day06_5/index.jsp;jsessionid=<%=session.getId()%>'<inputtype="submitvalue="提交<ahref='<%=response.encodeURL("/day06_5/index.jsp">主頁<ahref='<%=response.encodeURL("/day06_5/index.jsp">主頁<inputtype="submitvalue="提交使用response.encodeURL()更加“智能,它會判斷客戶端瀏覽器是否禁用了 了,那么這個方法在URL后面追加jsessionid,否則不會追加。 在我們時,如果沒有的話,我們可以使用URLConnection來寫一段代碼發(fā)出請求。甚至可以使用while(true)來!那么服務(wù)器就廢了!但分析也不是一件容易的事,因為一般都會帶有干擾線,人都看不清,那么程序一現(xiàn)在我們已經(jīng)有了 publicvoidpublicvoidfun1()throwsIOException//創(chuàng) VerifyCodevc=newBufferedImageimage=//獲取剛剛生成的隨機 Stringtext=vc.getText();FileOutputStreamout=newFileOutputStream("F:/xxx.jpg");VerifyCode.output(image,out);}我們需要寫一個VerifyCodeServlet,在這個Servlet中我們生成動態(tài),然后它寫入publicpublicclassVerifyCodeServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException{VerifyCodevc=newVerifyCode();BufferedImageimage=vc.getImage();Stringtext=vc.getText();System.out.println("text:"+text);VerifyCode.output(image,}}}<script<scriptfunction_change()varimgEle imgEle.src="/day06_6/VerifyCodeServlet?"+new} <imgid="vCode"<ahref="javascript:_change()">看不清,換一張<form<formactio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省南平市武夷山第二中學(xué)2021年高三物理上學(xué)期期末試卷含解析
- 個人車位買賣協(xié)議書模板
- 2024廣告裝飾工程合作合同典范版B版
- 1假期有收獲 說課稿-2024-2025學(xué)年道德與法治二年級上冊統(tǒng)編版
- 汽車設(shè)計的創(chuàng)新之路
- 科技驅(qū)動的環(huán)保革新
- 外出經(jīng)營合同(2篇)
- 基礎(chǔ)設(shè)施合作投資協(xié)議書(2篇)
- 2024年網(wǎng)絡(luò)平臺蔬菜水果銷售合同3篇
- 15-1《諫太宗十思疏》說課稿 2023-2024學(xué)年統(tǒng)編版高中語文必修下冊
- 數(shù)學(xué)分析知識點的總結(jié)
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 2023年重癥醫(yī)學(xué)科護理工作計劃
- 年會抽獎券可編輯模板
- 感染性疾病標(biāo)志物及快速診斷課件(PPT 134頁)
- YC∕T 273-2014 卷煙包裝設(shè)計要求
- 2022年煤礦地面消防應(yīng)急預(yù)案范文
- 高中化學(xué)必修二第三章第一節(jié)認識有機化合物課件
- 水上拋石護坡施工方案
- 4PL的供應(yīng)鏈整合及其對區(qū)域發(fā)展的借鑒意義
- 物料提升機基礎(chǔ)方案
評論
0/150
提交評論