亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

request,路徑問題,轉發和重定向

2024-04-27 15:14:32
字體:
來源:轉載
供稿:網友
Request:Request代表請求對象,其中封裝了對請求中具有請求行、請求頭、實體內容的操作的方法1.獲取客戶機信息getRequestURL方法返回客戶端發出請求完整URLgetRequestURI方法返回請求行中的資源名部分,在權限控制中常用getQueryString 方法返回請求行中的參數部分getRemoteAddr方法返回發出請求的客戶機的ip地址getMethod得到客戶機請求方式getContextPath 獲得當前web應用虛擬目錄名稱,特別重要!??!,工程中所有的路徑請不要寫死,其中的web應用名要以此方法去獲得。2.獲取請求頭信息getHeader(name)方法 --- String ,獲取指定名稱的請求頭的值getHeaders(String name)方法 --- Enumeration<String> ,獲取指定名稱的請求頭的值的集合,因為可能出現多個重名的請求頭getHeaderNames方法 --- Enumeration<String> ,獲取所有請求頭名稱組成的集合getIntHeader(name)方法  --- int ,獲取int類型的請求頭的值getDateHeader(name)方法 --- long(日期對應毫秒) ,獲取一個日期型的請求頭的值,返回的是一個long值,從1970年1月1日0時開始的毫秒值*實驗:通過referer信息防盜鏈String ref = request.getHeader("Referer");

if (ref == null || ref == "" || !ref.startsWith("http://localhost")) 

{

response.sendRedirect(request.getContextPath() + "/homePage.html");

else 

{

this.getServletContext().getRequestDispatcher("/WEB-INF/fengjie.html").forward(request, response);}3.獲取請求參數getParameter(name) --- String 通過name獲得值getParameterValues(name)  --- String[ ] 通過name獲得多值 checkboxgetParameterNames  --- Enumeration<String> 獲得所有請求參數名稱組成的枚舉getParameterMap  --- Map<String,String[ ]> 獲取所有請求參數的組成的Map集合,注意,其中的鍵為String,值為String[]獲取請求參數時亂碼問題:瀏覽器發送的請求參數使用什么編碼呢?當初瀏覽器打開網頁時使用什么編碼,發送就用什么編碼。

服務器端獲取到發過來的請求參數默認使用ISO8859-1進行解碼操作,中文一定有亂碼問題

對于Post方式提交的數據,可以設置request.setCharacterEncoding("gb2312");來明確指定獲取請求參數時使用編碼。但是此種方式只對Post方式提交有效。

對于Get方式提交的數據,就只能手動解決亂碼:String newName = new String(name.getBytes("ISO8859-1"),"gb2312");此種方法對Post方式同樣有效。

在tomcat的server.xml中可以配置http連接器的URIEncoding可以指定服務器在獲取請求參數時默認使用的編碼,從而一勞永逸的決絕獲取請求參數時的亂碼問題。也可以指定useBodyEncodingForURI參數,令request.setCharacterEncoding也對GET方式的請求起作用,但是這倆屬性都不推薦使用,因為發布環境往往不允許修改此屬性。4.利用請求域傳遞對象生命周期:在service方法調用之前由服務器創建,傳入service方法。整個請求結束,request生命結束。作用范圍:整個請求鏈。作用:在整個請求鏈中共享數據,最常用的:在Servlet中處理好的數據要交給jsp顯示,此時參數就可以放置在Request域中帶過去。5.request實現請求轉發ServletContext可以實現請求轉發,request也可以。在forward之前輸入到response緩沖區中的數據,如果已經被發送到了客戶端,forward將失敗,拋出異常在forward之前輸入到response緩沖區中的數據,但是還沒有發送到客戶端,forward可以執行,但是緩沖區將被清空,之前的數據丟失。注意丟失的只是請求體中的內容,頭內容仍然有效。在一個Servlet中進行多次forward也是不行的,因為第一次forward結束,response已經被提交了,沒有機會再forward了總之,一條原則,一次請求只能有一次響應,響應提交走后,就再沒有機會輸出數據給瀏覽器了。6.RequestDispatcher進行include操作forward沒有辦法將多個servlet的輸出組成一個輸出,因此RequestDispatcher提供了include方法,可以將多個Servlet的輸出組成一個輸出返回個瀏覽器request.getRequestDispatcher("/servlet/Demo17Servlet").include(request, response);response.getWriter().write("from Demo16");request.getRequestDispatcher("/servlet/Demo18Servlet").include(request, response);常用在頁面的固定部分單獨寫入一個文件,在多個頁面中include進來簡化代碼量。四、URL編碼1.由于HTTP協議規定URL路徑中只能存在ASCII碼中的字符,所以如果URL中存在中文或特殊字符需要進行URL編碼。2.編碼原理:將空格轉換為加號(+) 對0-9,a-z,A-Z之間的字符保持不變 對于所有其他的字符,用這個字符的當前字符集編碼在內存中的十六進制格式表示,并在每個字節前加上一個百分號(%)。如字符“+”用%2B表示,字符“=”用%3D表示,字符“&”用%26表示,每個中文字符在內存中占兩個字節,字符“中”用%D6%D0表示,字符“國”用%B9%FA表示調對于空格也可以直接使用其十六進制編碼方式,即用%20表示,而不是將它轉換成加號(+) 說明:如果確信URL串的特殊字符沒有引起使用上的岐義或沖突你也可以對這些字符不進行編碼,而是直接傳遞給服務器。例如,http://www.it315.org/dealregister.html?name=中國&passWord=123 如果URL串中的特殊字符可能會產生岐義或沖突,則必須對這些特殊字符進行URL編碼。例如,服務器會將不編碼的“中+國”當作“中國”處理。還例如,當name參數值為“中&國”時,如果不對其中的“&”編碼,URL字符串將有如下形式:http://www.it315.org/dealregister.html?name=中&國&password=123,應編碼為:http://www.it315.org/dealregister.html?name=中%26國&password=123 http://www.it315.org/example/index.html#section2可改寫成http://www.it315.org/example%2Findex.html%23section2 3.在java中進行URL編碼和解碼URLencoder.encode("xxxx","utf-8");URLDecoder.decode(str,"utf-8");五、請求重定向和請求轉發的區別 1.區別RequestDispatcher.forward方法只能將請求轉發給同一個WEB應用中的組件;而HttpServletResponse.sendRedirect 方法還可以重定向到同一個站點上的其他應用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源。 如果傳遞給HttpServletResponse.sendRedirect 方法的相對URL以“/”開頭,它是相對于服務器的根目錄;如果創建RequestDispatcher對象時指定的相對URL以“/”開頭,它是相對于當前WEB應用程序的根目錄。 調用HttpServletResponse.sendRedirect方法重定向的訪問過程結束后,瀏覽器地址欄中顯示的URL會發生改變,由初始的URL地址變成重定向的目標URL;調用RequestDispatcher.forward 方法的請求轉發過程結束后,瀏覽器地址欄保持初始的URL地址不變。HttpServletResponse.sendRedirect方法對瀏覽器的請求直接作出響應,響應的結果就是告訴瀏覽器去重新發出對另外一個URL的訪問請求;RequestDispatcher.forward方法在服務器端內部將請求轉發給另外一個資源,瀏覽器只知道發出了請求并得到了響應結果,并不知道在服務器程序內部發生了轉發行為。 RequestDispatcher.forward方法的調用者與被調用者之間共享相同的request對象和response對象,它們屬于同一個訪問請求和響應過程;而HttpServletResponse.sendRedirect方法調用者與被調用者使用各自的request對象和response對象,它們屬于兩個獨立的訪問請求和響應過程。 2.應用場景(參照圖想)減少服務器壓力當需要更新地址欄時用請求重定向,如注冊成功后跳轉到主頁。當需要刷新更新操作時用請求重定向,如購物車付款的操作。常用地址的寫法:                     絕對路徑:以/開頭的路徑就叫做絕對路徑,絕對路徑在相對于的路徑上直接拼接得到最終的路徑    相對路徑:不以/開頭的路徑就叫做相對路徑,相對路徑基于當前所在的路徑計算的到最終的路徑    硬盤路徑:以盤符開頭的路徑就叫做硬盤路徑.是哪個路徑就是哪個路徑.沒有相對于誰的問題    虛擬路徑: --寫虛擬路徑時都使用絕對路徑        如果路徑是給瀏覽器用的,這個路徑相對于虛擬主機,所以需要寫上web應用的名稱        如果路徑是個服務器用的,這個路徑相對于web應用,所以可以省寫web應用的名稱      <a href="/Day04/.....">      <form action="/Day04/...">      <img src="/Day04/....">      response.setHeader("Location","/Day04/....");      response.setHeader("refresh","3;url=/Day04/...");      response.sendRedirect("/Day04/...");      request.getRequestDispathce("/index.jsp").forward();      request.getRequestDispathce("/index.jsp").include();          真實路徑: --寫真實路徑時都使用相對路徑        根據原理,具體問題具體分析                servletContext.getRealPath("config.PRoperties");//--給一個相對于web應用目錄的路徑        classLoader.getResource("../../config.properties");//--給一個相對于類加載目錄的路徑                File file = new File("config.properties");//--相對于程序的啟動目錄        new InputStream("config.properties");//--相對于程序的啟動目錄
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美三级免费观看| 国产欧美va欧美va香蕉在| 成人a视频在线观看| 欧美一区第一页| 欧美性猛交xxxx乱大交3| 成人欧美一区二区三区黑人| 精品国产福利在线| 一本色道久久88综合日韩精品| 97久久久久久| 国内精品久久久久影院 日本资源| 亚洲国产日韩欧美在线动漫| 免费99精品国产自在在线| 国产精品美女久久久免费| 国产精品视频自拍| 少妇久久久久久| 欧美精品做受xxx性少妇| 欧美成aaa人片免费看| 亚洲午夜色婷婷在线| 欧美激情影音先锋| 国产精品69精品一区二区三区| 久久全球大尺度高清视频| 国产精品视频xxxx| 成人黄色在线播放| 久久久久国产精品免费| 国产精品国产自产拍高清av水多| 日韩欧美一区二区在线| 日韩视频精品在线| 色悠悠久久久久| 97超级碰碰碰久久久| 久久天天躁狠狠躁老女人| 国产精品久久久亚洲| 亚洲精品在线不卡| 国产精品美女久久久免费| 日韩亚洲欧美中文在线| 美日韩精品免费观看视频| 最近2019中文字幕大全第二页| 久久99精品视频一区97| 91久久夜色精品国产网站| 国产aⅴ夜夜欢一区二区三区| 中文字幕视频在线免费欧美日韩综合在线看| 91精品在线播放| 欧美日韩久久久久| 国内精品视频久久| 中文字幕精品久久久久| 91亚洲国产成人精品性色| 欧美激情在线观看视频| 日韩在线视频免费观看高清中文| 国产精品久久久久久久久久久久久| 国产精品视频公开费视频| 久久精品小视频| 欧美视频国产精品| 爱福利视频一区| 色偷偷91综合久久噜噜| 免费91麻豆精品国产自产在线观看| 中文字幕精品www乱入免费视频| 国产欧美日韩高清| 欧美激情一级精品国产| 欧美精品中文字幕一区| 日韩中文字幕免费视频| 成人在线视频网| 国产亚洲一区二区精品| 欧美性开放视频| 国产精品女主播视频| 欧美成人性色生活仑片| 亚洲精品网站在线播放gif| 亚洲综合大片69999| 欧美电影免费观看大全| 亚洲网址你懂得| 激情亚洲一区二区三区四区| 一区二区日韩精品| 国产欧美最新羞羞视频在线观看| 日韩中文字幕免费| 91免费精品视频| 亚洲美女又黄又爽在线观看| 成人午夜在线视频一区| 欧美成人午夜激情视频| 国产精品福利网| 久久久久免费视频| 成人乱人伦精品视频在线观看| 欧美成人精品xxx| 日本乱人伦a精品| 岛国av一区二区在线在线观看| 最新亚洲国产精品| 亚洲激情视频网站| 国产精品综合不卡av| 一区二区三区高清国产| 欧美成人一区在线| 国产精品美女网站| 欧美性猛交99久久久久99按摩| 国产欧美精品va在线观看| 久久久精品视频在线观看| 成人字幕网zmw| 亚洲欧美另类中文字幕| 国产一区二区日韩精品欧美精品| 亚洲人成电影网站色xx| 国产午夜一区二区| 国产精品十八以下禁看| 91丨九色丨国产在线| 欧美日韩中国免费专区在线看| 亚洲日本中文字幕| 国产精品免费视频xxxx| 亚洲欧洲在线观看| 欧美一级片一区| 日本欧美国产在线| 亚洲激情 国产| www.日本久久久久com.| 成人国产在线视频| 精品国偷自产在线视频| 在线视频国产日韩| 国产欧美日韩中文字幕在线| 成人女保姆的销魂服务| 日韩的一区二区| 成人激情免费在线| 成人激情电影一区二区| 成人国产精品一区| 中文字幕日韩欧美在线视频| 亚洲日韩第一页| 91午夜在线播放| 国外成人在线视频| 久久理论片午夜琪琪电影网| 欧美大胆在线视频| 欧美一区二区三区艳史| 欧美国产日韩一区二区在线观看| 69久久夜色精品国产69| 国产精品吹潮在线观看| 精品国产美女在线| 国产精品国产亚洲伊人久久| 欧美亚洲激情视频| 97超级碰在线看视频免费在线看| 日本欧美精品在线| 欧美激情一区二区三区成人| 亚洲人成在线观看网站高清| 尤物九九久久国产精品的特点| 欧美福利在线观看| 国产精品盗摄久久久| 最近2019中文字幕在线高清| 国产精品成人一区| 在线观看欧美视频| 成人在线国产精品| 欧美视频免费在线| 激情成人中文字幕| 亚洲综合成人婷婷小说| 91理论片午午论夜理片久久| 38少妇精品导航| 欧美美女18p| 亚洲午夜av电影| 91精品久久久久久久久久久久久久| 日韩最新av在线| 亚洲精品mp4| 久久久之久亚州精品露出| 欧洲一区二区视频| 国精产品一区一区三区有限在线| 日韩av大片免费看| 91视频8mav| 亚洲一区二区在线| 亚洲欧美激情四射在线日| 久久久国产视频91| 欧美在线视频播放| 亚洲乱亚洲乱妇无码| 欧美亚洲国产成人精品| 夜夜躁日日躁狠狠久久88av| 午夜精品一区二区三区视频免费看| 奇米影视亚洲狠狠色| 国产成人自拍视频在线观看|