版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、跟占老師學編程之servlet跟占老師學編程之web前端什么是ServletSun(Oracle)公司指定的一種用來擴展Web服務器功能的組件規(guī)范跟占老師學編程之web前端擴展Web服務器 功能?早期Web服務器只能處理靜態(tài)資源請求,無法根據(jù)請求計算后生成相應的HTML內(nèi)容在Servlet出現(xiàn)之前可以使用CGI(Commom GatWay Interface通用網(wǎng)關接口)擴展Web服務器的功能CGI是一種規(guī)范,可以使用不同的語言來開發(fā),比如Perl,C,Java等都可以,但CGI開發(fā)復雜,性能較差,可移植性不好跟占老師學編程之web前端組件規(guī)范?組件:在軟件開發(fā)行業(yè),符合一定規(guī)范,實現(xiàn)部分功能
2、,并且需要部署到容器當中才能運行的軟件模塊容器:符合一定規(guī)范,提供組件運行環(huán)境的一個程序跟占老師學編程之web前端Servlet組件運行原理跟占老師學編程之web前端安裝Tomcat預備:安裝Jdk及配置JAVA_HOME,PATH,CLASS_PATH環(huán)境變量跟占老師學編程之web前端tomcat目錄結構bin:存放啟動和關閉Tomcat的命令路徑。conf:存放Tomcat的配置,所有的Tomcat的配置都在該路徑下設置lib:存放Tomcat服務器的核心類庫(JAR文件),如果需要擴展Tomcat功能,也可將第三方類庫復制到該路徑下跟占老師學編程之web前端tomcat目錄結構logs:
3、這是一個空路徑,該路徑用于保存Tomcat每次運行后產(chǎn)生的日志。temp:保存web應用運行過程中生成的臨時文件。webapps:該路徑用于自動部署web應用,將web應用復制在該路徑下,tomcat會將該應用自動部署在容器中。跟占老師學編程之web前端tomcat目錄結構work:保存web應用在運行過程中產(chǎn)生成class文件,該文件夾可以刪除,但每次啟動tomcat服務器,系統(tǒng)將再次建立該路徑 License等相關文檔跟占老師學編程之web前端tomcat最常見錯誤一般情況下運行tomcat只需要一個環(huán)境變量:JAVA_HOME 設置到JDK的安裝目錄 但有時候會出現(xiàn)閃一下就退出的情況就需
4、要通過CMD cd到tomcat的bin目錄下,然后調(diào)用命令startup.bat看系統(tǒng)報什么錯:如果錯誤如下:The CATALINA_HOME environment variable is not defined correctlyThis environment variable is needed to run this program 就需要再配一個環(huán)境變量CATALINA_HOME到tomcat的安裝目錄 跟占老師學編程之web前端徒手建立web應用1:在任意目錄下建立以個文件夾,文件夾名就是web應用的名字,不能有中文特殊符號 2:在第一步所建的文件夾內(nèi)建一個WEB-INF文件
5、夾 3:進入tomcat找到一個web應用,將web應用的WEB-INF下的web.xml文件復制到第2步所建的WEB-INF文件夾下跟占老師學編程之web前端徒手建立web應用4:修改復制后的web.xml文件,將該文件修改成一個根元素XML文件。修改后的web.xml文件代碼如下 跟占老師學編程之web前端徒手建立web應用在第2步所建的WEB-INF路徑下,新建兩個文件夾:classes和lib。這兩個文件夾的作用完全相同。都是用于保存Web應用所需要的Java類文件,區(qū)別是classes保存單個*.class文件;而lib保存打包后的JAR文件 經(jīng)過以上步驟,已經(jīng)建了一個空Web應用。
6、將該Web應用復制到Tomcat的webapps路徑下,該web應用將可以自動部署在Tomcat中跟占老師學編程之web前端徒手建立web應用通常只需要jsp放在web應用的根路徑下(對本列而言,就是放在webDemo目錄下)然后就可以通過瀏覽器來訪問這些頁面|-web-inf| |-classes| |-lib|web.xml|-放任意多個JSP頁面跟占老師學編程之web前端開發(fā)servlet的步驟1:編寫一個實現(xiàn)Servlet接口或繼承HttpServlet的java類2:使用javac命令編譯源文件為字節(jié)碼文件3:將編譯完成的組件打包4:將appName整個文件夾拷貝到tomcat的we
7、bapps文件夾下5:啟動Tomcat并訪問servlet:在地址欄中輸入符合一定規(guī)范的地址http:/服務器ip:端口號/appName/Servlet提供的url跟占老師學編程之web前端常見的錯誤-404產(chǎn)生的原因:web服務器(容器)根據(jù)請求的地址找不到對應的資源如:地址錯誤(拼寫錯誤,字母大小寫)web.xml中的兩個不一致工程沒有部署web應用程序部署結構沒有遵守servlet規(guī)范跟占老師學編程之web前端404錯誤的解決1:檢查拼寫2:檢查web.xml文件中的和節(jié)點中的兩個是否一致3:只有部署的工程才能訪問4:檢查工程結構是否符合規(guī)范跟占老師學編程之web前端容器是如何找到se
8、rvlet的跟占老師學編程之web前端405錯誤產(chǎn)生原因:web容器找不到servlet的方法處理請求1:servlet方法名稱寫錯2:servlet方法參數(shù)與標準不一致3:servelt方法異常,返回值類型與標準類型不一致跟占老師學編程之web前端405解決檢查service()是否存在檢查service()的方法名,參數(shù),返回值,異常類型是否與覆蓋的父類方法中的方法一致跟占老師學編程之web前端500錯誤產(chǎn)生原因:程序運行過程中出錯1:servlet沒有繼承HttpServlet或實現(xiàn)servlet接口2:web.xml文件中的寫錯3:servlet方法的代碼運行時拋出異常跟占老師學編程之
9、web前端500解決檢查servlet-class中的包名,類名是否正確檢查servlet類是否繼承了HttpServlet或者實現(xiàn)了Servlet檢查Servlet類中的方法里面的代碼跟占老師學編程之web前端Http協(xié)議什么是Http協(xié)議HttpText Transfer protocol由w3c制定的一種應用層協(xié)議,用來定義瀏覽器(前端設備,瀏覽器,android應用,ios應用,wp應用)與web服務器之間如何通信以及通信的數(shù)據(jù)格式跟占老師學編程之web前端Http如何通信跟占老師學編程之web前端數(shù)據(jù)格式跟占老師學編程之web前端請求數(shù)據(jù)包的組成跟占老師學編程之web前端請求數(shù)據(jù)包的
10、組成請求行:請求方式+請求資源路徑+協(xié)議版本消息頭(若干):消息頭是一些鍵值對,一般由w3c定義。通信的雙方通過消息頭來傳遞一些特殊的含義,比瀏覽器可以發(fā)送User-Agent消息頭告訴Web服務器的類型和版本。大部分為自動生成,某些時候自己需要添加消息頭實體內(nèi)容:只有當請求方式為post時,實體內(nèi)容才會有數(shù)據(jù)(即請求參數(shù))跟占老師學編程之web前端響應數(shù)據(jù)包組成跟占老師學編程之web前端響應數(shù)據(jù)包組成狀態(tài)行:協(xié)議類型+版本+狀態(tài)碼+狀態(tài)描述消息頭(若干):web服務器返回一些消息頭給瀏覽器。例如返回Content-Type消息頭,告訴瀏覽器返回的數(shù)據(jù)類型和字符集實體內(nèi)容:程序處理的結果跟占老
11、師學編程之web前端如何控制通信數(shù)據(jù)當web容器收到一個HTTP請求時,通信數(shù)據(jù)由Web容器負責封裝和提供,這些信息被解釋為兩個對象與請求數(shù)據(jù)對應的是HttpServletRequest類型的對象與響應數(shù)據(jù)對應的是HttpServletResponse類型的對象跟占老師學編程之web前端HttpServletRequestHttpServletRequest對象代表客戶端的請求,當客戶端通過Http協(xié)議訪問服務器時,請求中的所有消息都封裝在這個對象中,通過這個對象的相關方法可以獲得請求數(shù)據(jù)作用-讀取寫入Http請求數(shù)據(jù)(請求行,消息頭等)-取得和設置Cookies-標識Http會話-實現(xiàn)請求轉
12、發(fā)跟占老師學編程之web前端HttpServletResponseHttpServletResponse對象代表提供給客戶端的響應,封裝了Http的響應數(shù)據(jù)。通過這個對象可設置狀態(tài)行,消息頭,實體內(nèi)容作用:設置客戶端的輸出內(nèi)容設置響應的狀態(tài)碼設置瀏覽器的解碼方式設置Cookies設置重定向跟占老師學編程之web前端寫一個servlte接收表單的數(shù)據(jù)并打印在輸出頁面上注意中文跟占老師學編程之web前端Servlet中文亂碼處理跟占老師學編程之web前端作業(yè)1:簡述servlet2:簡述web工程的目錄結構3:簡述什么是Http協(xié)議4:簡述常用的請求頭和響應頭的鍵值對跟占老師學編程之web前端作業(yè)
13、5:下列列關于Http響應代碼說法正確的是()A:404是因為service方法運行時有錯誤B:405錯誤有可能是訪問路徑并拼寫有錯誤C:500錯誤有可能是web.xml文件中配置錯誤D:工程沒有部署一定會出現(xiàn)404錯誤跟占老師學編程之web前端作業(yè)新建一個servlet在網(wǎng)頁上輸出當前系統(tǒng)時間跟占老師學編程之web前端servlet如何獲取請求參數(shù)獲取提交的Name-value數(shù)值getParameter(name)獲取提交的name-values數(shù)值getParameterValues(name)跟占老師學編程之web前端getParameter方法常用于傳入的參數(shù)中,一個名字對應一個值得
14、形式String request.getParameter(String parameter)如果參數(shù)名寫錯,返回null寫個例子跟占老師學編程之web前端 req.getParameterValues當需要獲取的參數(shù)名相同的多個參數(shù)值時使用該方法多用于獲取提交的表單中復選框的值寫列子跟占老師學編程之web前端請求方式:跟占老師學編程之web前端get請求方式當需要向服務器請求指定資源時使用方法它不應該用于一些會造成副作用操作中(在網(wǎng)絡應用中用它來提交請求是一種常見的錯誤用法)什么情況瀏覽器發(fā)送Get請求在地址欄輸入一個地址點擊鏈接表單默認提交跟占老師學編程之web前端get請求方式的特點會將
15、請求數(shù)據(jù)添加到url中,所以只能提交少量數(shù)據(jù)請求參數(shù)顯示在瀏覽器地址欄上 不安全跟占老師學編程之web前端Post請求向服務器提交需要處理的數(shù)據(jù),這些數(shù)據(jù)寫在請求的內(nèi)容里,可以導致新資源的產(chǎn)生和已有資源的更新什么情況瀏覽器發(fā)送post請求設置表單的提交方式為post跟占老師學編程之web前端post請求方式的特點請求參數(shù)添加到實體內(nèi)容中,可提交大量數(shù)據(jù)不會將請求參數(shù)顯示在瀏覽器地址上,相對安全跟占老師學編程之web前端servlet如何連接數(shù)據(jù)庫jdbc跟占老師學編程之web前端servlet運行的詳細步驟step1:瀏覽器依據(jù)ip建立與容器的連接step2:瀏覽器請求數(shù)據(jù)打包step3:容器
16、解析請求數(shù)據(jù)包,封裝對象step4:容器依據(jù)路徑找到servlet創(chuàng)建對象step5:容器調(diào)用servlet對象的service方法step6:容器將響應打包發(fā)給瀏覽器step7:瀏覽器取出結果,生成頁面跟占老師學編程之web前端作業(yè):1:完成下圖表單提交并在瀏覽器上將值打印出來跟占老師學編程之web前端作業(yè):2:將上圖表單中的值存到oracle數(shù)據(jù)庫中3:從oracle數(shù)據(jù)庫中查出上題操作的表中的所有數(shù)據(jù)跟占老師學編程之web前端什么叫重定向?服務器向瀏覽器發(fā)送一個302狀態(tài)碼及一個Location消息頭(該消息頭飾一個地址,稱為重定向地址),瀏覽器收到重定向地址發(fā)送請求跟占老師學編程之we
17、b前端重定向原理跟占老師學編程之web前端重定向原理1:訪問AddEmp2:執(zhí)行數(shù)據(jù)插入操作3:執(zhí)行結束后使用重定向代碼發(fā)送一個數(shù)據(jù)包,里面包含302狀態(tài)碼和一個消息頭的location4:瀏覽器收到后會立即向服務器的ListEmp發(fā)出請求其中3,4這個過程即重定向跟占老師學編程之web前端如何重定向使用響應的Api方法及可以實現(xiàn)重定向的過程response.sendRedirect(String url);寫列子用谷歌開發(fā)者工具看重定向的時候數(shù)據(jù)包的變化跟占老師學編程之web前端重定向特點重定向的地址是任意地址重定向之后,瀏覽器地址欄的地址會發(fā)生改變重定向過程中涉及到的Web組件并不會共享同
18、一個request和response對象跟占老師學編程之web前端什么是請求資源路徑在瀏覽器輸入如下地址跟占老師學編程之web前端web服務器對請求地址的處理過程在瀏覽器中輸入http:/ip:port/appName/xxx.html1:瀏覽器依據(jù)ip,port建立與servlet容器之間的連接,然后將請求資源路徑appName/xxx.html發(fā)送過去給容器2:容器依據(jù)應用名“/appName”找到應用所在的文件夾,容器會默認請求的是一個Servlte,查找web.xml文件中所有的servlet配置,看是否有匹配的servlet跟占老師學編程之web前端servlete-精確匹配通過將請
19、求資源路徑中的具體資源名稱與web.xml文件中的“url-pattern”進行對比,嚴格匹配想等后找到對應的資源并執(zhí)行如:abc.html盡管應用中有abc.html這個具體的頁面,也會去執(zhí)行該url-pattern對應的servlet,而不是返回具體的abc.html頁面跟占老師學編程之web前端servle通配符匹配使用“*”來匹配0個或多個字符如:/*代表輸入任何不同的url地址都將匹配成功http:/ip:port/appName/abc.html 匹配成功http:/ip:port/appName/abc/def/gh 也匹配成功跟占老師學編程之web前端servlet后綴匹配不能
20、使用斜杠“/”開頭,使用“*.”開頭的任意多個字符如:*.do會匹配以“.do”結尾的所有請求http:/ip:port/appName/abc.do 成功http:/ip:port/appName/abc/abc.do 也成功跟占老師學編程之web前端無匹配的servlet的處理如果精確匹配,通配符匹配,后綴匹配都沒有匹配成功時,容器會查找響應的文件查找到對用的文件返回找不到對用的文件返回404ps:優(yōu)先級最高的是精確匹配跟占老師學編程之web前端為什么要多個servlet合并一般情況下Servlet的主要作用是充當控制器的角色,即接受請求并分發(fā)給不同的資源,這是只要有一個Servlet就可
21、以完成的分發(fā)過程,所以需要將Servlet合并實現(xiàn)合并的步驟使用后綴匹配模式修改web.xml文件獲取請求資源路徑,分析具體請求資源后,依據(jù)分析結果調(diào)用不同的分支處理代碼跟占老師學編程之web前端使用后綴匹配模式修改web.xml將匹配的多個servlet節(jié)點刪除保留一對servlet,servlet-mapping修改url-pattern節(jié)點的內(nèi)容為:”*.do”跟占老師學編程之web前端分析請求資源后分發(fā)動過調(diào)用request.getRequestURI()方法獲取請求資源路徑String uriString=req.getRequestURI();if(uriString.equals
22、(/appName/list.do).else if(uriString.equals(/appName/add.do).跟占老師學編程之web前端什么是servlet生命周期容器如何創(chuàng)建servlet對象,如何為servlet對象分配資源,如何調(diào)用Servlet對象的方法來處理請求,以及如何銷毀Servlet的過程跟占老師學編程之web前端生命周期的四個階段階段一:實例化什么事實例化容器調(diào)用servlet的構造器,創(chuàng)建一個servlet對象什么時候實例化?情形1:開始容器里面沒有servlet對象,收到請求后創(chuàng)建servlet請求情形2:容器啟動之后就立即創(chuàng)建相應的實例跟占老師學編程之web
23、前端生命周期的四個階段階段二:初始化 什么事初始化?容器在創(chuàng)建好servlet對象之后,會立即調(diào)用該對象的init()方法。一般情況下我們不用寫init方法因為GenericServlet已經(jīng)提供了init方法的實現(xiàn)(將容器傳遞過來的ServletConfig對象保存下來,并且提供了getServletConfig方法來獲得ServletConfig對象)init方法只會執(zhí)行一次跟占老師學編程之web前端生命周期的四個階段servlet初始化參數(shù)如何配置company 華育國際如何讀取Servlet的初始化參數(shù)String ServletConfig.getInitParameter(“com
24、pany”)跟占老師學編程之web前端生命周期的四個階段階段三 就緒容器收到請求后調(diào)用servlet對象的service()來處理請求跟占老師學編程之web前端生命周期的四個階段階段四:銷毀容器依據(jù)自身的算法刪除Servlet對象,刪除前會調(diào)用destory()只會執(zhí)行一次可以在重寫destroy()方法來實現(xiàn)自己的長處理邏輯應用程序卸載時一定會調(diào)用destory方法跟占老師學編程之web前端Servlet生命周期原理圖跟占老師學編程之web前端servlet核心接口與類跟占老師學編程之web前端ServletRequest和HttpServletRequest表示請求對象:servlet從該
25、對象中獲取來自客戶端的請求信息常用的方法有:getRequestURI() /返回該請求消息的URL中HTTP協(xié)議第一行里從協(xié)議名稱到請求字符串的部分 (參考API文檔)getSession() /得到一次會話,從客戶端第一次訪問服務器到退出服務器的過程getAttribute(java.lang.String name) /getParameter(java.lang.String name) getParameterValues()()getRequestDispatcher(java.lang.String path) setAttribute(java.lang.String name
26、, java.lang.Object o) 跟占老師學編程之web前端ServletResponse和和HttpServletResponse getWriter()setContentType(java.lang.String type) sendRedirect(java.lang.String location) 跟占老師學編程之web前端什么是servlet上下文容器啟動后,會在每一個web應用創(chuàng)建唯一的一個符合servletContext接口要求的對象,該對象是Servlet的上下文特點: 唯一性(一個web應用對應一個servlet上下文)一致存在(只要容器不關閉,應用沒有被卸載刪
27、除,servlet上下文就一直存在)跟占老師學編程之web前端如何獲取servlet上下文方式1通過GenericServlet提供的getServletContext()方式2通過ServletConfig提供的getServletContext()方法3通過HttpSession提供的getServletContext()方法4通過FilterConfig提供getServletContext()跟占老師學編程之web前端Servlet上下文的作用及特點作用1:使用setAttribute綁定數(shù)據(jù)作用2:使用removeAttribute移除數(shù)據(jù)作用3:使用getAttribute獲取綁定
28、的數(shù)據(jù)特點:servlet上下文綁定的數(shù)據(jù)可以被整個應用上的所有組件共享并且一直可以訪問跟占老師學編程之web前端作業(yè)1 跟占老師學編程之web前端作業(yè)1 跟占老師學編程之web前端作業(yè)1 表單如圖1,點擊提交按鈕將數(shù)據(jù)插入到數(shù)據(jù)庫中并跳到頁面2,在頁面2中點擊刪除 將數(shù)據(jù)刪除,點擊修改跳到修改頁面對數(shù)據(jù)進行修修改并跳到頁面2跟占老師學編程之web前端跟占老師學編程之jsp跟占老師學編程之web前端為什么有jsp規(guī)范servlet里面動態(tài)輸出頁面需要不停的out.print太累,代碼不好維護,于是推出了JSP把負責顯示的部分語句抽離出來跟占老師學編程之web前端什么是jspSun公司指定的一種
29、服務端動態(tài)頁面技術的組件規(guī)范。Jsp是以”.jsp”為后綴的文件,在該文件中主要是HTML和少量的java代碼。Jsp文件會被容器轉換成一個Servlet類,然后執(zhí)行JSP的本質(zhì)是servlet跟占老師學編程之web前端如何編寫Jspstep1:寫一個”.jsp”為后綴的文件step2:在該文件中,可以包含如下內(nèi)容:HTML (CSS ,JAVASCRIPT)注釋java代碼指令隱含對象跟占老師學編程之web前端Jsp頁面中的HTML代碼Jsp頁面中的Html包括:-HTML標記-css-javascript象編寫Html頁面一樣編寫即可作用:控制頁面在瀏覽器中顯示效果轉義成Servlet時的
30、規(guī)則-成為servlet中service()方法的out.write語句跟占老師學編程之web前端Jsp頁面中注釋語法: 跟占老師學編程之web前端Jsp頁面中的java代碼Jsp頁面中的java代碼,包含已下三種jsp表達式jsp小腳本jsp聲明編寫位置頁面的任意位置作用控制頁面中可變內(nèi)容產(chǎn)生跟占老師學編程之web前端Jsp表達式語法規(guī)則:合法內(nèi)容:變量,變量+運算符組合的表達式,有返回值的的方法轉譯成servlet時的規(guī)則:在service()方法中用out.print語句輸出該變量,表達式,方法的值跟占老師學編程之web前端Jsp小腳本語法規(guī)則合法內(nèi)容:能夠寫在方法里的java代碼片段都
31、可以作為小腳本轉譯成Servlet時的規(guī)則:原封不動轉換為Servlet類的service()方法里面的一段代碼去tomcat里面查看轉譯好的servlet跟占老師學編程之web前端Jsp聲明語法規(guī)則:合法內(nèi)容:成員屬性或成員方法的聲明轉譯成Servlet時的規(guī)則:成為JSP頁面轉譯成的servlet類中成員屬性或成員方法跟占老師學編程之web前端Jsp頁面中的指令語法常用指令:page指令includetaglib作用:控制JSP在轉譯成servlet類時生成的內(nèi)容跟占老師學編程之web前端Page指令用于導包,設置頁面屬性例如跟占老師學編程之web前端include指令作用:在jsp頁面轉
32、換成servlet時能夠將其它文件包含進來??梢园琂sp文件也可以靜態(tài)的Html文件。通過該語句能夠方便的在每個JSP頁面中包含導航條,版權聲明logo等例如跟占老師學編程之web前端Jsp頁面中的隱含(內(nèi)置)對象什么是隱含對象?容器自動創(chuàng)建,在JSP文件中可以直接使用的對象作用:Jsp預先創(chuàng)建這些對象可以簡化對HTTP請求,響應信息的訪問跟占老師學編程之web前端Jsp頁面中的隱含(內(nèi)置)對象跟占老師學編程之web前端Jsp頁面中的隱含(內(nèi)置)對象跟占老師學編程之web前端JSP運行原理跟占老師學編程之web前端JSP如何轉換成java跟占老師學編程之web前端練習在JSP頁面中輸出20行
33、“hello world”用for循環(huán)加 輸出跟占老師學編程之web前端練習2在頁面中輸出當前時間,并且能夠嵌入到其他頁面中用include跟占老師學編程之web前端練習3使用jsp實現(xiàn)下圖頁面跟占老師學編程之web前端什么是轉發(fā)一個WEB組件(servlet/jsp)將未完成的處理通過容器交給另一 個Web組件繼續(xù)完成常見情況:一個servlet獲得數(shù)據(jù)后,將這些數(shù)據(jù)轉發(fā)給Jsp,由這個jsp來展現(xiàn)數(shù)據(jù)跟占老師學編程之web前端如何實現(xiàn)轉發(fā)1:綁定數(shù)據(jù)到request對象2:獲得轉發(fā)器3:轉發(fā)跟占老師學編程之web前端綁定數(shù)據(jù)到request對象實現(xiàn)綁定request.setAttribut
34、e(String name,Object obj);讀取綁定的值request.getAttribute(String name)如果name不對或者不存在返回null跟占老師學編程之web前端獲得轉發(fā)器RequestDispathcer rd=request.getRequestDispatcher(String path)path:轉發(fā)的目的地,即將未完成的處理繼續(xù)下 去 的另一個組件,比如一個JSP文件跟占老師學編程之web前端轉發(fā)實現(xiàn)轉發(fā)rd.forword(request,response);通常情況下request.getRequestDispatcher(String path)
35、.forword(request,response)跟占老師學編程之web前端轉發(fā)的特點轉發(fā)之后,地址欄不會發(fā)生變化。原因是轉發(fā)的過程是發(fā)生在服務器內(nèi)部的,瀏覽器并不知道轉發(fā)的目的地必須是同一個應用內(nèi)部的某個地址轉發(fā)所涉及的各個web組件會共享同一個request對象和response對象 注意:在forword之后的其他語句還會執(zhí)行嗎? 答:一定會執(zhí)行,只要不報異常跟占老師學編程之web前端轉發(fā)和重定向的區(qū)別重定向是瀏覽器發(fā)送請求并收到響應以后再次向一個新的地址發(fā)送請求,轉發(fā)是服務器 收到請求后為了完成響應轉到一個新地址 重定向中有兩次請求對象,不共享數(shù)據(jù),轉發(fā)只產(chǎn)生一次請求對象且在組件間共
36、享數(shù)據(jù) 重定向后地址欄地址改變,而轉發(fā)則不會 重定向的心地址可以是任意地址,轉發(fā)到新地址必須是同一個web應用內(nèi)跟占老師學編程之web前端轉發(fā)和重定向的區(qū)別跟占老師學編程之web前端路徑問題什么是路徑:連接 地址表單提交重定向 response.sendRedirect(url)轉發(fā) request.getResponseDispathcer(url)跟占老師學編程之web前端相對路徑從當前文件出發(fā),到達目標文件所經(jīng)過的路徑叫做相對路徑書寫格式不以“/”開頭退至上一級目錄以“./”開頭跟占老師學編程之web前端相對路徑跟占老師學編程之web前端什么是絕對路徑以”/”開頭的路徑都是絕對路徑,不以
37、當前文件的位置作為起始,而是以一個固定位置作為起始到達目標文件所經(jīng)過的路徑這個固定位置可能是應用名,也可能是應用名之后跟占老師學編程之web前端絕對路徑跟占老師學編程之web前端路徑的處理技巧在使用絕對路徑時:連接地址,表單提交,重定向是從應用開始寫轉發(fā)是從應用名之后開始寫獲取應用的實際部署名稱可使用如下方法String request.getContextPath();跟占老師學編程之web前端員工管理使用轉發(fā),jsp,實現(xiàn)完整的增刪改查1:建立員工表(empno,name,pass,sal,age)2:需要的頁面 登陸,增加員工,列表,修改 JSP,錯誤提示頁面3:寫dao層4:寫serv
38、let跟占老師學編程之web前端狀態(tài)管理cookie為什么需要狀態(tài)管理Web應用程序使用Http協(xié)議通信,而Http協(xié)議是無狀態(tài)的,即服務器一旦響應完客戶端的請求之后,就斷開連接,而同一個客戶的下一次請求將重新建立網(wǎng)絡連接服務器應用程序有時是需要判斷是否為同一客戶發(fā)出的請求,比如客戶的多次選購商品。因此,有必要跟蹤同一個客戶發(fā)出的一系列請求跟占老師學編程之web前端什么是狀態(tài)管理將客戶端(瀏覽器)與服務器之間多次交互(一次請求,一次響應)當做一個整體來看待,并且將多次交互所涉及的數(shù)據(jù)即狀態(tài)保存下來狀態(tài)指的是數(shù)據(jù)管理指的是多次交互時對數(shù)據(jù)的修改跟占老師學編程之web前端狀態(tài)管理的兩種常見模式客戶
39、端狀態(tài)管理技術:將狀態(tài)值保存在客戶端,Cookie服務器狀態(tài)管理技術:將狀態(tài)值保存在服務端,Session跟占老師學編程之web前端Cookie瀏覽器向Web服務器發(fā)送請求時,服務器將會將少量的數(shù)據(jù)以set-Cookie消息頭的方式 發(fā)送給瀏覽器。瀏覽器將這些數(shù)據(jù)保存下來當瀏覽器再次訪問服務器時,會將這些數(shù)據(jù)以Cookie消息頭的方式發(fā)送給服務器跟占老師學編程之web前端創(chuàng)建CookieServlet API為使用Cookie提供了javax.servlet.http.Cookie創(chuàng)建:Cookie c=new Cookie(String name,String value);response
40、.addCookie(c)name cookie的名字value值跟占老師學編程之web前端查詢Cookie獲取客戶端的所有CookieCookie request.getCookie();獲取一個Cookie對象的名稱或值String Cookie.getName();Stirng Cookie.getValue();跟占老師學編程之web前端修改cookie1:獲取客戶端發(fā)送的所有Cookie2:根據(jù)name找到修改的Cookie3:調(diào)用Cookie的setValue(String newValue)4:將Cookie加入到response發(fā)送回客戶端跟占老師學編程之web前端Cookie
41、的身存時間默認情況下,瀏覽器會將Cookie保存在內(nèi)存中,只要瀏覽器不關閉,Cookie就一直存在如果希望關閉瀏覽器后Cookie還在就需要給它設置過期時間void Cookie.setMaxAge(int seconds);注:seconds的單位是秒跟占老師學編程之web前端Cookie編碼Cookie只能保存合法的ASCii碼。如果保存中文,需要將中文裝成合法的ASCii字符Cookie c=new Cookie(“city”,URLEncoder.encode(“深圳”,“utf-8”)跟占老師學編程之web前端Cookie解碼編碼后cookie為了看到實際的中文,需要還原后再顯示Co
42、okie cs=request.getCookies();if(cs!=null)Cookie ck= Cookie 0;String value=ck.getValue()value=URLDecoder.decode(value,”utf-8”);跟占老師學編程之web前端Cookie的路徑瀏覽器訪問服務器上的某個地址時,會比較Cookie的路徑與該路徑是否匹配,只有匹配了路徑的cookie才會發(fā)送給服務器cookie的默認路徑等于添加這個Cookie的web組件的路徑如:/appName/file/addCookie.jsp添加了一個cookie,則該cookie的路徑等于/appNam
43、e/file跟占老師學編程之web前端發(fā)送cookie的條件要訪問的地址必須是Cookie的路徑或其子路徑時,瀏覽器才會發(fā)送Cookie如:Cookie的路徑是 /appName/file則訪問/appName/file/a.jsp或者/appName/file/b.jsp時會發(fā)送cookie如果反問/appName/c.jsp 則不會發(fā)送cookie跟占老師學編程之web前端設置cookie的路徑Cookie c=new cookie(“name”,”jack”);c.setPath(“/appdName”);response.addCookie(c);跟占老師學編程之web前端Cookie
44、的限制Cookie可以被用戶禁止Cookie會將狀態(tài)保存在瀏覽器中,不安全。對于敏感數(shù)據(jù)需要加密后再使用Cookie來保存Cookie只能保存少量數(shù)據(jù),4kb左右cookie的個數(shù)是有限制的cookie只能保存字符串跟占老師學編程之web前端練習1創(chuàng)建多個cookie,并使用瀏覽器內(nèi)置功能實現(xiàn)查看1新建工程CookieTest2:新建servlet AddCookieService 3:配置訪問地址 為addCookie4:部署應用5:訪問啟動開發(fā)者工具跟占老師學編程之web前端跟占老師學編程之web前端點擊NetWork headers查看數(shù)據(jù)包跟占老師學編程之web前端關閉瀏覽器后在打開發(fā)
45、現(xiàn)cookie不見了跟占老師學編程之web前端練習2輸出請求中發(fā)送的Cookie信息,如果沒有Cookie則輸出無“cookie”信息跟占老師學編程之web前端練習3修改已有的cookie值跟占老師學編程之web前端跟占老師學編程之web前端練習4修改cookie的有效時間將其保存在硬盤中跟占老師學編程之web前端練習5在cookie中保存的中文跟占老師學編程之web前端跟占老師學編程之web前端跟占老師學編程之web前端練習6修改cookie的路徑,使得對應用的任何訪問都能發(fā)送該站點的Cookie跟占老師學編程之web前端Session瀏覽器訪問Web服務器時,服務器會為每一個瀏覽器在服務端
46、的內(nèi)存中分配空間,單獨創(chuàng)建一個session對象,該對象有一個唯一的id值,一般稱為sessionid,服務器會將這個id發(fā)送給瀏覽器;瀏覽器在次訪問服務器的時候會將這個sessionid發(fā)送個服務器,服務器可以依據(jù)sessionid找到對應的session對象跟占老師學編程之web前端session工作原理跟占老師學編程之web前端獲取sessionHttpsession s=request.getSession(boolean flag);HttpSession是個接口,后面查返回的是符合接口規(guī)范的對象跟占老師學編程之web前端獲取session當flag為true時:先查看請求中又沒有s
47、essionid,如果沒有sessionid,服務器先建一個session對象;如果有sessionid,依據(jù)sessionid查找對應的session,找到則返回,找不到則創(chuàng)建一個新的session,所以flag為true的時候一定會得到一個session跟占老師學編程之web前端獲取session當flag為false時,沒有sessionId和有sessionId但是沒有找到對用的session都會返回null;找到則返回session跟占老師學編程之web前端獲取sessionHttpsession s=request.getSession();等價于Httpsession s=req
48、uest.getSession(boolean flag);跟占老師學編程之web前端使用session綁定對象綁定對象void session.setAttribute(String name,Object obj)獲取綁定對象Object Session.getAttribute(String name);移除綁定對象void Session.removeAttribute(String name);跟占老師學編程之web前端刪除session對象立即刪除session對象session.invalidate()跟占老師學編程之web前端session驗證用戶訪問需要保護的資源時,可以使用
49、Session驗證的方式來確保其安全性,比如要求登陸后才能訪問資源實現(xiàn)session驗證步驟1:使用session.setAttribute() 先綁定數(shù)據(jù)2:使用session.getAttribure()方式來讀取數(shù)據(jù)值,如果沒有,則跳回登陸頁面跟占老師學編程之web前端session超時Web服務器會將空閑時間過長的session對象刪除掉,以節(jié)省服務資源web服務器默認的超時限制是30分鐘跟占老師學編程之web前端修改session默認時間限制修改tomcat中 conf/web.xml跟占老師學編程之web前端修改session默認時間限制通過編程方式跟占老師學編程之web前端瀏覽器
50、禁用cookie的后果跟占老師學編程之web前端什么是URI重寫跟占老師學編程之web前端如何實現(xiàn)URI重寫跟占老師學編程之web前端session的優(yōu)缺點跟占老師學編程之web前端驗證碼的作用跟占老師學編程之web前端驗證碼的繪制跟占老師學編程之web前端驗證碼圖片的繪制步驟跟占老師學編程之web前端驗證碼的驗證流程跟占老師學編程之web前端練習1使用session實現(xiàn)訪問計數(shù)跟占老師學編程之web前端跟占老師學編程之web前端2:部署應用訪問3:刷新多次看計數(shù)器變化4:重啟瀏覽器,查看頁面輸出5:查看控制臺輸出窗口跟占老師學編程之web前端跟占老師學編程之web前端練習2使用session
51、實現(xiàn)登陸跟占老師學編程之web前端練習3使用編程方式 修改session的超時時間為10S.實現(xiàn)當用戶登錄后,如果10s沒有任何動作,則session失效,此時在反問index.jsp,則依然會重定向到login.jsp頁面重新登陸跟占老師學編程之web前端練習4如果瀏覽器禁用cookie,則session不能繼續(xù)使用。如何在禁用cookie的情況下依然能夠繼續(xù)使用session方案:使用URL重寫的方法,即改寫原來的訪問地址,在URI后面使用參數(shù)攜帶上sessionid跟占老師學編程之web前端跟占老師學編程之web前端練習5根據(jù)隨機生成的字符串繪制圖片,并輸出在jsp頁面上跟占老師學編程之
52、web前端1:創(chuàng)建validateCode.jsp跟占老師學編程之web前端2:創(chuàng)建validateCode.java跟占老師學編程之web前端跟占老師學編程之web前端跟占老師學編程之web前端練習6為登陸添加驗證碼功能跟占老師學編程之web前端跟占老師學編程之web前端跟占老師學編程之web前端跟占老師學編程之web前端什么是過濾器跟占老師學編程之web前端如何編寫過濾器跟占老師學編程之web前端1編寫一個java類實現(xiàn)Filter接口跟占老師學編程之web前端2:實現(xiàn)攔截器的邏輯跟占老師學編程之web前端3將過濾器添加到web應用中跟占老師學編程之web前端4過濾器和web應用一起部署跟
53、占老師學編程之web前端過濾器的執(zhí)行流程跟占老師學編程之web前端過濾器的優(yōu)先級跟占老師學編程之web前端多個過濾器的執(zhí)行流程跟占老師學編程之web前端過濾器的初始化參數(shù)跟占老師學編程之web前端初始化參數(shù)配置跟占老師學編程之web前端讀取初始化參數(shù)跟占老師學編程之web前端過濾器的優(yōu)點跟占老師學編程之web前端什么是監(jiān)聽器跟占老師學編程之web前端生命周期 相關事件跟占老師學編程之web前端綁定數(shù)據(jù)的相關事件跟占老師學編程之web前端如何編寫監(jiān)聽器跟占老師學編程之web前端1編寫java類跟占老師學編程之web前端2實現(xiàn)邏輯處理跟占老師學編程之web前端3注冊監(jiān)聽器跟占老師學編程之web前端
54、應用場景跟占老師學編程之web前端作業(yè)1過濾器過濾敏感詞匯跟占老師學編程之web前端作業(yè)2在上題的基礎上,添加一個過濾器,如果發(fā)布內(nèi)容多過20個字,則不允許發(fā)布,并出現(xiàn)相應的提示跟占老師學編程之web前端作業(yè)3動態(tài)設置上題中的敏感詞匯及限制評論長度跟占老師學編程之web前端作業(yè)4用監(jiān)聽器統(tǒng)計在線人數(shù)跟占老師學編程之web前端EL表達式和jsp標簽跟占老師學編程之web前端為什么需要EL表達式和jsp標簽跟占老師學編程之web前端什么是el表達式跟占老師學編程之web前端El表達式的作用跟占老師學編程之web前端使用el表達式訪問bean屬性跟占老師學編程之web前端方式一:$對象名.屬性名跟占
55、老師學編程之web前端方式一:$對象名.屬性名跟占老師學編程之web前端方式一:$對象名.屬性名跟占老師學編程之web前端方式二:$對象名“屬性名”跟占老師學編程之web前端和.的操作表達式語言EL提供了”和”.”兩種運算符來存取數(shù)據(jù),二者均代表引用符號前的對象屬性當要存取的屬性名稱中包含一些特殊字符,如“.“或者”-“等并非字母或數(shù)字的符號時,一定要使用”列如:$user.my-name 這樣取不對應改為$user“my-name”跟占老師學編程之web前端指定對象的查找范圍跟占老師學編程之web前端使用el表達式進行計算跟占老師學編程之web前端使用el表達式進行計算跟占老師學編程之web前端使用el表達式獲取請求參數(shù) 跟占老師學編程之web前端什么是jstl跟占老師學編程之web前端如何使用JSTL跟占老師學編程之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國豬肉市場銷售規(guī)模及競爭前景預測報告~
- 2024-2030年中國物聯(lián)網(wǎng)橋梁長期監(jiān)測行業(yè)市場運營模式及未來發(fā)展動向預測報告
- 2024-2030年中國烯蟲酯行業(yè)市場容量預測及發(fā)展可行性研究報告
- 2024-2030年中國烤漆竹子臺行業(yè)市場發(fā)展規(guī)模及投資可行性分析報告
- 2024年上門服務項目立項申請報告
- 2024年生產(chǎn)L型氨基酸的新酶種項目提案報告模板
- 2024-2030年中國液氧充裝行業(yè)十三五需求及投資戰(zhàn)略分析報告
- 2024-2030年中國油泵凸輪軸行業(yè)十三五需求及投資戰(zhàn)略分析報告
- 2024-2030年中國汽車玻璃貼膜行業(yè)供需狀況及投資戰(zhàn)略研究報告
- 2024-2030年中國水果罐頭市場競爭態(tài)勢及運營效益預測報告
- 幼兒園老師說課培訓課件
- 房貸延期代理合同(2篇)
- 海洋研學勞動課程設計
- 2024江蘇省沿海開發(fā)集團限公司招聘23人高頻難、易錯點500題模擬試題附帶答案詳解
- 林業(yè)基礎知識考試題庫單選題100道及答案解析
- 2024年計算機二級WPS考試題庫380題(含答案)
- 22G101三維彩色立體圖集
- 大學生安全文化智慧樹知到期末考試答案章節(jié)答案2024年中南大學
- 人教版小學英語單詞表(完整版)
- DL-T 1476-2023 電力安全工器具預防性試驗規(guī)程
- 《短視頻拍攝與制作》課件-3短視頻拍攝的三大技巧
評論
0/150
提交評論