1. 程式人生 > >JavaWeb 轉發與重定向解讀

JavaWeb 轉發與重定向解讀

轉發與重定向解讀

什麼是轉發和重定向?

舉例說明:

我想去買某件衣服,我找到了你,你呢又不賣這件衣服,但是你知道哪裡賣,那麼你告訴我,我根據你告訴我的地址去那家店裡買,這是重定向。

同樣是這個例子:

我想去買某件衣服,我找到了你,你呢又不賣這件衣服,但是你知道哪裡賣,你去他的店裡買了來交給我,讓我感覺就像是在你這裡買的一樣,這就是轉發。

兩者有什麼區別?

轉發是伺服器行為,但是重定向不是,重定向是客戶端行為。

重定向過程

瀏覽器傳送http請求——>web伺服器接受後傳送302狀態碼響應及對應新的location給客戶瀏覽器——>客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址——>伺服器根據此請求尋找資源併發送給客戶。在這裡location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。

轉發過程

客戶瀏覽器傳送http請求——>web伺服器接受此請求——>呼叫內部的一個方法在容器內部完成請求處理和轉發動作——>將目標資源傳送給客戶;在這裡,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。


執行效果與實現

注意位址列的地址變化情況

轉發:


這裡已經跳轉到了test.jsp但是看位址列當中的資料並不是test.jsp的地址資訊,從這裡可以看出,轉發的過程是伺服器的動作,是它幫你把所有的需要的東西拿來給你,不需要你知道怎麼拿來的。本例子中只發送了一次請求。


重定向:


這裡很明顯位址列的資訊變化了,變為含有test.jsp的地址,可以說明是伺服器給你地址,瀏覽器根據這個地址再次傳送請求,然後載入的該介面。本例子中客戶端瀏覽器請求了兩次。


相關推薦

JavaWeb 轉發定向解讀

轉發與重定向解讀 什麼是轉發和重定向? 舉例說明: 我想去買某件衣服,我找到了你,你呢又不賣這件衣服,但是你知道哪裡賣,那麼你告訴我,我根據你告訴我的地址去那家店裡買,這是重定向。 同樣是這個例子:

javaweb轉發定向的區別

關於兩者的區別我就不用多說了,一搜一大堆,大概就是: 重定向是客戶端跳轉,轉發是伺服器端跳轉 1.在servlet中呼叫轉發、重定向的語句如下: request.getRequestDis

Struts2配置使用參數接收,轉發定向,多方法,ognl使用值傳遞,struts標簽使用

isp -name users .org 填充 導航 建模 尋址 XML 本文檔包括了 Struts2配置使用參數接收,轉發與重定向,多方法,ognl使用與值傳遞,struts標簽使用 (1)首先加入jar包(最小jar組合) (1) 在web.xml中註冊

註解 轉發定向

sys javax println web admin 數據 let out int package controller; import java.util.HashMap; import java.util.Map; import javax.servlet.ht

servlet轉發定向

服務 響應 瀏覽器 etc tco cap rect mil 頁面   HttpServletRequest:   表示瀏覽器向服務器發送的請求報文,由Tomcat創建然後作為參數傳遞給我們doget,dopost方法。   功能:getParameter()獲取請求參數

轉發定向

工作原理 發的 結果 san 原理 rect() 初學者 定向 pat 轉發和重定向   先是看上去不同,他們的調用分別如下:    equest.getRequestDispatcher("apage.jsp").forward(request, response);//

Servlet 及 請求轉發定向

style pattern load 需要 shutdown att nbsp host 瀏覽器 Servlet: Java編寫的服務器端程序,處理客戶端的http請求並將其結果發送到客戶端。Servlet容器Tomcat: 最熟悉的是容器就是tomcat。在tomcat中

轉發定向學習代碼

轉發與重定向學習代碼html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用戶登錄</title> &l

Spring MVC溫故而知新 – 參數綁定、轉發定向、異常處理、攔截器

單獨 UC exclude require 加載 pre buffered nts 節點 請求參數綁定 當用戶發送請求時,根據Spring MVC的請求處理流程,前端控制器會請求處理器映射器返回一個處理器,然後請求處理器適配器之心相應的處理器,此時處理器映射器會調用Spr

SpringMVC篇:轉發定向、圖片檔案上傳、Json(jackson)

注意: 專案:war 和 專案:war  exploded 兩者並不同,idea  執行 專案:war  exploded   <dependency> <groupId>org.

SpringMVC(八)轉發定向

SpringMVC(八)轉發與重定向 關於轉發與重定向的定義和區別網上已經有很多介紹了,這裡就不在贅述了。 下面通過一段程式碼簡單的介紹下Spring MVC中如何使用轉發與重定向 package com.lay.mvc.controller; import org.spr

Java Web jsp中有關頁面跳轉和轉發定向的區別

響應頭 通過設定響應頭實現頁面跳轉,並且在面試中也會問及是否是重定向還是轉發 最後給大家簡單介紹轉發和重定向的區別 Location Location需要與狀態碼302配合使用,完成頁面重定向 Location: http://www.banma.com 指定頁面要

Servlet學習筆記(四)之請求轉發定向(RequestDispatchersendRedirect)

ServletContext可以實現請求轉發(ServletContext請求轉發相關內容見之前部落格:http://blog.csdn.net/megustas_jjc/article/details/53191657),request也可以。HttpServletRequest 和 ServletCont

詳細的請求轉發定向的重要區別及使用場景選擇

請求轉發與重定向的區別及使用場景選擇 一、請求轉發: 伺服器行為: 因為它是程式碼與程式碼之間的資源跳轉 特點: 轉發的所有Servlet都是同一個請求,使用同一個request和response! 由最後一個Servlet完成響應體! 當前Servlet可以設

Servlet 請求轉發定向

請求轉發和重定向 重定向 /* 之前的寫法 response.setStatus(302); response.setHeader("Location", "login_success.html");*/ //重定向寫法: 重新定位方向

如何理解轉發定向

如何理解轉發與重定向? 兔子給雞打電話 場景一 兔子撥通雞的電話。 兔子:你好,有個問題想請教你! 雞:快說吧,沒有我不會的的問題! 兔子:1+1等於幾? 雞尋思半天也不會,又怕丟了面子!忙叫來身旁的山羊說:“兔子問1+1等於幾?” 山羊拿起電話:2! 兔子:謝謝! 兔子放下電話

Web前端之cookie、session、請求轉發定向

http協議的特點:稱之為無狀態, 請求與請求之間不會記錄狀態(狀態就包括請求引數等資訊) Cookie:記錄多個請求之間的聯絡,儲存伺服器狀態(實現記住使用者名稱的功能) 建立Cookie Cookie c = new Cookie("名字", "值"); 瀏覽器每個域名下能夠

ServletRequest HttpServletRequest 請求方法 獲取請求引數 請求轉發 請求包含 請求轉發定向區別 獲取請求頭欄位

ServletRequest 基本概念 JavaWeb中的 "Request"物件  實際為   HttpServletRequest  或者  ServletRequest,   兩者都為介面 伺服器接收請求後,將請求資料進行物件封裝 功能大致分類

Servlet轉發定向的資源路徑問題解析

一. 問題引入        轉發和重定向可以說是Servlet中最重要的知識點也不為過,因為它決定著整個向Servlet體系中,執行流程的問題。      轉發:       &nb

面試必問題目:轉發定向的區別——最詳細的回答

在servlet中呼叫轉發: request.getRequestDispatcher("new.jsp").forward(request,response);//轉發到new.jsp 在servlet中呼叫重定向: response.sendRedirect("new.jsp");/