日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转发和重定向和request域对象

發布時間:2024/4/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转发和重定向和request域对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用請求域傳遞對象(request域對象) 重定向和轉發的區別(轉發)(*****)* 域對象ServletContext:服務器一啟動,為每個web應用創建一個ServletContext對象,所有servlet實例共享對象。 request:一次請求的范圍。* setAttribute("",""); * getAttribute(""); * removeAttribute("");* getRequestDispatcher(String path) ,返回是RequestDispatcher:對象 * RequestDispatcher:* forward(ServletRequest request, ServletResponse response)(經常使用) 轉發的方法* include(ServletRequest request, ServletResponse response)(了解) 包含

request利用請求域傳遞對象

request對象同時也是一個域對象,開發人員通過request對象在實現轉發時,把數據通過request對象帶給其它web資源處理

setAttribute方法

getAttribute方法?

removeAttribute方法

getAttributeNames方法

request對象提供了一個getRequestDispatcher方法,該方法返回一個RequestDispatcher對象,調用這個對象的forward方法可以實現請求轉發,從而共享請求中的數據

請求重定向和請求轉發的區別

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對象,它們屬于兩個獨立的訪問請求和響應過程。 package cn.learn.request;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 重定向和轉發* @author Administrator**/ public class RequestDemo3 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// request域設置內容request.setAttribute("name", "鳳姐");// 完成重定向的工作(客戶端端絕對路徑)// response.sendRedirect("/day10/request4");// 轉發(路徑服務器的絕對路徑)request.getRequestDispatcher("/request4").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}} package cn.learn.request;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class RequestDemo4 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 獲取String value = (String) request.getAttribute("name");// 輸出中文response.setContentType("text/html;charset=UTF-8");response.getWriter().write("訪問到了demo4... "+value);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

URL特殊字符轉義規則

常用轉義規則

空格換成加號(+)

+換成%2B

正斜杠(/)分隔目錄和子目錄 換成%2F

問號(?)分隔URL和查詢 換成%3F

百分號(%)制定特殊字符 換成%25

#號指定書簽? 換成%23

?&號分隔參數? 換成%26

java.net.URLEncoderjava.net.URLDecoder

Request的開發細節

使用轉發的方法后,response的緩沖區會被清空。

response.getWriter().write("aaa");

request.getRequestDispatcher("/demo2").forward(request, response);

response.getWriter().write("bbb");

?

RequestDispatcher

include方法:

RequestDispatcher.include方法用于將RequestDispatcher對象封裝的資源內容作為當前響應內容的一部分包含進來,從而實現可編程的服務器端包含功能

被包含的Servlet程序不能改變響應消息的狀態碼和響應頭,如果它里面存在這樣的語句,這些語句的執行結果將被忽略

底層使用的是子節流,所以輸出內容只能使用字節流。

include在程序執行上效果類似forward,但是使用forward只有一個程序可以生成響應,include可以由多個程序一同生成響應 ----- 常用來頁面布局

總結

以上是生活随笔為你收集整理的转发和重定向和request域对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。