Java Web 請求轉發與請求重定向

Java Web 請求轉發與請求重定向

請求轉發

服務器行為,即用戶向服務器發送了一次http請求,該請求可能會經過多個信息資源處理以后菜返回給用戶,各個信息資源使用請求轉發機制互相轉發請求,但是用戶是感覺不到請求轉發的。通過request.getRequestDispatcher(path).forward(arg0, arg1)實現,是一次請求,轉發后對象會保存,地址欄的url不會改變。

這里寫圖片描述

請求重定向

客戶端行為。一般用于避免用戶的非正常訪問。例如:用戶在沒用登錄的情況下訪問后臺資源,servlet可以將該http請求重定向到登錄頁面,讓用戶登陸后再訪問。通過調用response.sendRedirect(arg0)實現,從本質上講等同于兩次請求,前一次的請求對象不會保存,地址欄的url會改變。

這里寫圖片描述

二者的原理及區別是什么?

答:Forward和Redirect代表了兩種請求方式:請求轉發和請求重定向。對應到代碼里,分別是RequestDispatcher類的forward()方法和HttpServletRequest類的sendRedirect()方法。

對于請求轉發,客戶端瀏覽器只發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它信息資源,由第2個信息資源響應該請求,兩個信息資源共享同一個request對象。

對于請求重定向,服務器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。它本質上是兩次HTTP請求,對應兩個request對象。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250479.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

05.RDD詳解

05.Spark--RDD詳解 RDD詳解--groupByKey--reduceByKey [MapPartitionRDD單詞統計] 單詞統計 import org.apache.spark.{SparkConf,SparkContext} object WordCountScala{def main(args:Array[String]):Unit{//創建spark配置對象val confnew SparkConf()conf.setAppName("W…

Mininet

首先,我折騰了兩周多的東西終于弄出一點眉目了。 有以下幾個內容需要學習記憶一下。 1.虛擬機,弄不出來共享文件夾,就用U盤吧,賊快還不用安裝配置各種東西,virtualbox和VMware都支持。 2.ubantu安裝軟件中途失敗&#…

docker --- 使用docker-compose.yml生成redis,并連接redis-cli

docker.compose.yml 配置 version: 3.1 services:redis:image: redisports:- 6379:6379命令行:docker-compose up 查看: docker ps 進入redis-cli,輸入以下 docker exec -it 7dc0a redis-cli -h localhost -p 6379 操作Redis數據 設置 namemarron set name marron 獲取nam…

淺談javaweb三大框架和MVC設計模式

淺談javaweb三大框架和MVC設計模式轉載自:http://blog.csdn.net/sunpeng19960715/article/details/50890705 小序:博主以前在學javaweb的時候開始總不理解javaweb三大框架和MVC框架模式,雖然沒有把兩者混為一談,但是也是很暈菜。…

win下配置nginx

1.下載:http://nginx.org/en/download.html 2.在安裝目錄cmd: start nginx.exe 啟動nginx 3.修改默認運行端口80(nginx.conf): HTTP 數據分發 修改配置文件nginx.conf相應節點: 修改完后重啟服務: nginx -s reload TCP 數據分發: nginx 1.9以上版本支持tcp轉發 配置文件中增加:…

在springBoot中配置web.xml中配置的servlet

第一種 web.xml (截取的需要轉換的) 當攔截到 /socke t時執行該servlet <servlet><servlet-name>websocket</servlet-name><servlet-class>org.ldd.ssm.hangyu.socket.MyWebSocketServlet</servlet-class></servlet><servlet-mapping&g…

koa --- koa-bouncer驗證

使用 koa-bouncer中間件對傳入的數據進行驗證 const bouncer require(koa-bouncer); app.use(bouncer.middleware());const val async (ctx, next) > {ctx.validateBody(name).required(要求提供用戶名).isLength(6, 16, 用戶名長度應該為6~16).isString().trim()next();…

static關鍵字的作用

//C/C程序員面試指南 楊國祥等編著 定義全局靜態變量。全局靜態變量有以下特點&#xff1a; 在全局數據區分配內存&#xff1b;如果沒有初始化&#xff0c;其默認值為0&#xff1b;該變量在本文件內從定義開始到文件結束可見。定義局部靜態變量。局部靜態變量有以下特點&…

Redis 初次嘗試

Redis 初次嘗試 第一次接觸redis&#xff0c;也不知道要寫些什么。就玩了下將redis列表中的數據存入mysql數據庫中。 首先有三個文件&#xff1a; redis.php 添加數據進redis&#xff1b; insert_class.php 將數據插入數據庫&#xff1b; inert.php 調用insert_class.php;…

fiddler2抓包數據工具使用教程

一款免費且功能強大的數據包抓取軟件。它通過代理的方式獲取程序http通訊的數據&#xff0c;可以用其檢測網頁和服務器的交互情況&#xff0c;能夠記錄所有客戶端和服務器間的http請求&#xff0c;支持監視、設置斷點、甚至修改輸入輸出數據等功能。fiddler包含了一個強大的基于…

egg --- 初始化一個egg項目基本結構說明

Egg.js體驗 全局安裝 // 創建項目 $ npm i egg-init -g $ egg-init egg-example --typesimple $ cd egg-example $ npm i// 啟動項目 $ npm run dev $ open localhost:7000Egg.js的結構 路由(Router): 將請求URL和具體承擔執行動作的Controller的關系對應控制器(Controller)…

葫蘆娃

葫蘆娃救爺爺 1.隊名——代碼那些事兒 2.團隊成員 劉佳 211606320&#xff08;隊長&#xff09;李佳 211660313周世元 211606348王浩 211606378曾麗麗 211606302陳水蓮 211606303許燕婷 211606338楊小妮 2116063413.隊長博客鏈接 -https://www.cnblogs.com/LJ-D/p/9799944.html…

webstorm遇到的問題

問題一&#xff1a;英譯&#xff1a;未指定node.js的解釋器。 解決方法&#xff1a;將webstorm配置支持node.js并自動補全 步驟&#xff1a; 先下載node.jsFile->Setting->輸入Node.js&#xff08;選中點進去&#xff09;->Node imterpreter&#xff08;選擇node的安裝…

egg --- 配置連接mysql 創建模型 插入數據

在egg中使用egg-sequelize插件 sequelize是與數據庫操作相關的庫安裝: npm install --save egg-sequelize mysql2 在egg中配置sequelize 1.在 config/plugin.js中引入 egg-sequelize插件,代碼如下 sequelize: {enable: true,package: egg-sequelize }2.在config/config.def…

Flask 在 Debug 模式下初始化2次

請移步&#xff1a; http://blog.zengrong.net/post/2632.html https://stackoverflow.com/questions/9449101/how-to-stop-flask-from-initialising-twice-in-debug-mode/9476701#9476701 https://stackoverflow.com/questions/25504149/why-does-running-the-flask-dev-serve…

eclipse報錯: Could not generate secret

在調用微信接口時&#xff0c;出現一個錯誤&#xff1a; 一直以為是接口調用問題&#xff0c;經多方查詢和嘗試解決&#xff0c;最后找到根源&#xff1a; edit-->使用default就可以了。 原因&#xff1a; 在eclipse中運行時&#xff0c;把簽名信息給去掉了。 轉載于:https:…

koa --- [MVC實現之一]自定義路由讀取規則

實現MVC分層架構 目標是創建約定大于配置、開發效率高、可維護性強的項目架構路由處理 規范 所有路由,都要放在routes文件夾中若導出路由對象,使用 動詞空格路徑 作為key, 值是操作方法若導出函數, 則函數返回第二條約定格式的對象 路由定義: 新建 router/index.js, 默認index…

sql中的left join、right join、inner join

sql中的left join、right join、inner join 轉自&#xff1a;http://www.cnblogs.com/pcjim/articles/799302.html left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄inner join…

bzoj1128 Lam-lights

題目描述 對于一個長度為n的數列p&#xff0c;數列中任意兩個數互質。準備一個無限長的儲存器。然后從p1開始&#xff0c;把儲存器中p1倍數位置都賦值為p1&#xff0c;把儲存器中p2倍數位置都賦值為p2&#xff0c;把儲存器中p3倍數位置都賦值為p3。。。把儲存器中pn倍數位置都賦…

koa --- [MVC實現之二]Controller層的實現

[MVC實現之一]傳送門 https://blog.csdn.net/piano9425/article/details/103362966 Router層 router這一層,不做業務處理,僅僅只是將路由和路由的處理函數結合起來.路由的處理函數由Controller層實現改進目錄結構如下(實際上新建了controller文件夾及其內部子文件,mar.js) …