国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

servlet筆記

2019-11-09 18:11:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
servlet筆記tomcat清緩存1、把tomcat下的所有項(xiàng)目移除。并單擊右擊,cleaneclipse設(shè)置部署路徑若要更改server Locations,先把tomcat下的所有項(xiàng)目移除。并右擊,clean...之后方可設(shè)置。。。啟動(dòng)后將又變?yōu)楹谏J(rèn)選項(xiàng)為:Use workspace metadata(dose not modify Tomcat installation)修改選項(xiàng)為:Use Tomcat installation(takes control of Tomcat installation)? 會(huì)話現(xiàn)實(shí)生活中我們會(huì)用手機(jī)跟對(duì)方對(duì)話,拿起手機(jī),撥號(hào),然后對(duì)面接聽,跟著互相通話,最后會(huì)話結(jié)束。這個(gè)過(guò)程也可以用我們的B/S模式來(lái)描述:打開瀏覽器—>輸入地址->發(fā)出請(qǐng)求->服務(wù)器收到請(qǐng)求->向?yàn)g覽器發(fā)出響應(yīng)->..重復(fù).->關(guān)閉瀏覽器這樣的過(guò)程我們用 “會(huì)話” 來(lái)描述,上面就一次會(huì)話的例子會(huì)話信息管理技術(shù):Cookie技術(shù): 會(huì)話數(shù)據(jù)保存在瀏覽器客戶端。session技術(shù):會(huì)話數(shù)據(jù)保存在服務(wù)器端sessionSession存儲(chǔ)在服務(wù)器端,一般放置在服務(wù)器的內(nèi)存中(為了高速存取),Session在用戶訪問(wèn)第一次訪問(wèn)服務(wù)器的服務(wù)時(shí)創(chuàng)建,需要注意只有訪問(wèn)jsp、Servlet等程序時(shí)才會(huì)創(chuàng)建Session,只訪問(wèn)HTML、IMAGE等靜態(tài)資源并不會(huì)創(chuàng)建Session。服務(wù)器會(huì)把長(zhǎng)時(shí)間沒(méi)有活動(dòng)的Session從服務(wù)器內(nèi)存中清除,此時(shí)Session便失效。Tomcat中Session的默認(rèn)失效時(shí)間為20分鐘常用方法,其中,name為String類型,value為Object類型:? session .setAttribute(“name”,value);添加某個(gè)屬性的值? session .getAttribute(“name”);獲取某個(gè)屬性的值? session .removeAttribute(“name”);移除某個(gè)屬性的值同一機(jī)器的兩個(gè)瀏覽器窗口訪問(wèn)服務(wù)器時(shí),會(huì)生成兩個(gè)不同的Session。但是由瀏覽器窗口內(nèi)的鏈接、腳本等打開的新窗口(也就是說(shuō)不是雙擊桌面瀏覽器圖標(biāo)等打開的窗口)除外//獲取session HttpSession session = req.getSession();為單個(gè)Web應(yīng)用 配置session超時(shí)時(shí)間可以在web.xml中使用<session-config>元素:<!--filter.listener,servlet,and servlet-mapping等元素要在session-config之前--> <session-config> <session-timeout>15</session-timeout> </session-config> 這個(gè)時(shí)候的“15”單位是分鐘!如果在配置Servlet是指定初始化參數(shù)決定超時(shí)時(shí)間,例如:<servlet> <servlet-name>Example</servlet-name> <servlet-class>exa.mp.le.Example2</servlet-class> <init-param> <param-name>timeout</param-name> <param-value>600</param-value> </init-param></servlet>這時(shí)候的“600”單位是秒鐘!跳轉(zhuǎn)方式sendRedirect()跳轉(zhuǎn)sendRedirect()方法的工作原理圖交互過(guò)程如下:1) 瀏覽器訪問(wèn)Servlet1;2) Servlet1想讓Servlet2為客戶端服務(wù);3) Servlet1調(diào)用sendRedirect()方法,將客戶端的請(qǐng)求重定向到Servlet2;4) 瀏覽器訪問(wèn)Servlet2;5) Servlet2對(duì)客戶端的請(qǐng)求做出響應(yīng)。我們可以看出,調(diào)用sendRedirect()方法,實(shí)際上是告訴瀏覽器Servlet2所在的位置,讓瀏覽器重新訪問(wèn)Servlet2。調(diào)用sendRedirect()方法,會(huì)在響應(yīng)中設(shè)置Location響應(yīng)報(bào)頭。要注意的是,這個(gè)過(guò)程對(duì)于用戶來(lái)說(shuō)是透明的,瀏覽器會(huì)自動(dòng)完成新的訪問(wèn)。而瀏覽器地址欄顯示的URL是重定向之后的URLresponse.sendRedirect("login.html"); 具體可以參考案例:sendRedirect()方法通過(guò)該方法可以將一個(gè)頁(yè)面的信息傳送給另外的頁(yè)面,比如:sendRedirect(“welcome?uname=aaa”);優(yōu)點(diǎn):傳送信息的速度比較快缺點(diǎn):它只能傳送字符串,而不能傳送一個(gè)對(duì)象 sendRedirect(“welcome?uname=aaa”);注意點(diǎn): 1.welcome代表你要跳轉(zhuǎn)的那個(gè)servlet的url 2.servlet url名和變量之間有個(gè)? 3.如要傳遞兩個(gè)以上的值,它們之間要用符號(hào)&分開,比如sendRedirect(“welcome?uname=aaa&passwd=123”); 4.如果傳遞的是中文,那你將得到亂碼,需要處理一下res.setContentType(“text/html,charset=gbk”);forward()跳轉(zhuǎn)交互過(guò)程如下:1) 瀏覽器訪問(wèn)Servlet1;2) Servlet1想讓Servlet2對(duì)客戶端的請(qǐng)求進(jìn)行響應(yīng),于是調(diào)用forward()方法,將請(qǐng)求轉(zhuǎn)發(fā)給Servlet2進(jìn)行處理。3) Servlet2對(duì)請(qǐng)求請(qǐng)出響應(yīng)。從上圖的交互過(guò)程可以看出,調(diào)用forward()方法,對(duì)瀏覽器來(lái)說(shuō)是透明的,瀏覽器并不知道為其服務(wù)的Servlet已經(jīng)換成Servlet2了,它只知道發(fā)出了一個(gè)請(qǐng)求,獲得了一個(gè)響應(yīng)。而地址欄顯示的URL始終會(huì)是原始請(qǐng)求的URL。案例:如果傳給RequestDispatcher 的參數(shù)以"/"開頭,則訪問(wèn)的是當(dāng)前web應(yīng)用的根目錄request.getRequestDispatcher("/index.html").forward(request, response);具體可以參考案例:無(wú)論是forward方法還是sendRedirect方法調(diào)用前面都不能有PRintWriter輸出到客戶端。forward方法報(bào)錯(cuò): java.lang.IllegalStateException: Cannot forward after response has been committedsendRedirect方法報(bào)錯(cuò):java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)cookie技術(shù)什么是Cookie技術(shù):一種會(huì)話數(shù)據(jù)管理技術(shù),該技術(shù)把會(huì)話數(shù)據(jù)保存在瀏覽器客戶端。比如登錄名、密碼 那么Cookie技術(shù)的原理是什么,它是如何工作的呢?1)首先瀏覽器向服務(wù)器發(fā)出請(qǐng)求。2)服務(wù)器就會(huì)根據(jù)需要生成一個(gè)Cookie對(duì)象,并且把數(shù)據(jù)保存在該對(duì)象內(nèi)。3)然后把該Cookie對(duì)象放在響應(yīng)頭,一并發(fā)送回瀏覽器。4)瀏覽器接收服務(wù)器響應(yīng)后,提出該Cookie保存在瀏覽器端。5)當(dāng)下一次瀏覽器再次訪問(wèn)那個(gè)服務(wù)器,就會(huì)把這個(gè)Cookie放在請(qǐng)求頭內(nèi)一并發(fā)給服務(wù)器。6)服務(wù)器從請(qǐng)求頭提取出該Cookie,判別里面的數(shù)據(jù),然后作出相應(yīng)的動(dòng)作①存在于客戶端(可被阻止) ②只能是文本文檔 ③如果設(shè)置了期限值,則寫入客戶端的文件; 如果沒(méi)有,它只對(duì)本窗口或其子窗口有效,其它窗口不能訪問(wèn)該Cookie ④在Servlet/JSP中設(shè)置的Cookie可以被同路徑下或其子路徑的Servlet/JSP訪問(wèn),父路徑不可以 ○注:這里的路徑是指URL,而不是Web文件的目錄1.cookie有點(diǎn)像一張表,分兩列,一個(gè)是名字,一個(gè)是值,數(shù)據(jù)類型都是String2.如何創(chuàng)建一個(gè)cookie(在服務(wù)器端創(chuàng)建的)Cookie c=new Cookie(String name, String val);3.如何將一個(gè)cookie添加到客戶端response.addCookie(c);4。如何讀取cookie(從客戶端讀到服務(wù)器)request.getCookies();備注說(shuō)明:1.可以通過(guò)IE——工具——internet選項(xiàng)——隱私——高級(jí)來(lái)啟用或是禁用cookie2.由于cookie的信息是保存在客戶端的,因此安全性不高3.cookie信息的生命周期可以在創(chuàng)建時(shí)設(shè)置(比如30s),從創(chuàng)建那一時(shí)刻起,就開始計(jì)時(shí),到時(shí)該cookie的信息就無(wú)效了 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out=response.getOutputStream(); response.setCharacterEncoding("UTF-8"); Cookie[] cook=request.getCookies(); if(cook==null) { out.write("第一次訪問(wèn),welcome".getBytes("UTF-8")); } else { for(int i=0;i<cook.length;++i) { if(cook[i].getName().equals("lasttime")) { long time=Long.parseLong(cook[i].getValue()); out.write(("上次訪問(wèn)時(shí)間:"+new Date(time).toLocaleString()).getBytes("UTF-8")); } } } Cookie cookie=new Cookie("lasttime",(System.currentTimeMillis())+""); cookie.setMaxAge(3600); cookie.setPath("/myweb/servlet/ServletDemo7"); response.addCookie(cookie); }若要?jiǎng)h除這個(gè)Cookie記錄,需要重新生成一個(gè)相同名稱的Cookie,然后設(shè)置setMaxAge為0,注意Path也要設(shè)置統(tǒng)一,才可以刪除cookie與session區(qū)別:1、session保存在服務(wù)器,客戶端不知道其中的信息;cookie保存在客戶端,服務(wù)器能夠知道其中的信息。 2、session中保存的是對(duì)象,cookie中保存的是字符串。 3、session不能區(qū)分路徑,同一個(gè)用戶在訪問(wèn)一個(gè)網(wǎng)站期間,所有的session在任何一個(gè)地方都可以訪問(wèn)到。而cookie中如果設(shè)置了路徑參數(shù),那么同一個(gè)網(wǎng)站中不同路徑下的cookie互相是訪問(wèn)不到的。 4、session需要借助cookie才能正常工作。如果客戶端完全禁止cookie,session將失效。 但是如果服務(wù)器端啟用了url編碼的時(shí)候也可以的 5 session在用戶會(huì)話結(jié)束后就會(huì)關(guān)閉了,但cookie因?yàn)楸4嬖诳蛻舳耍梢蚤L(zhǎng)期保存
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 光泽县| 阳新县| 库车县| 宜阳县| 张家界市| 桦甸市| 大理市| 安福县| 镇坪县| 沛县| 仙桃市| 赫章县| 遂宁市| 玉溪市| 宁河县| 峨边| 平果县| 阿尔山市| 分宜县| 灵宝市| 望谟县| 合阳县| 大化| 商洛市| 涡阳县| 四子王旗| 出国| 东港市| 普兰店市| 康保县| 吉首市| 汪清县| 扎赉特旗| 永德县| 藁城市| 马边| 泸定县| 南华县| 安溪县| 龙口市| 洪湖市|