JavaWeb開發(fā)之轉(zhuǎn)發(fā)與重定向

重定向

什么是重定向

服務器發(fā)送一個302狀態(tài)碼及一個Location消息頭(值是一個地址,稱為重定向地址),通知瀏覽器立即向重定向地址發(fā)請求。

  1. 瀏覽器請求服務器地址A(servletA)
  2. 服務器解析地址A(servletA)請求,返回302狀態(tài)碼楼入、一個Location消息頭值存放地址B(servletB)
  3. 瀏覽器拿到返回信息,解析出Location=地址B牧抽。
  4. 瀏覽器請求地址B(servletB)。

如何重定向

使用response.sendRedirect(String url);

注意兩個問題

1)重定向之前遥赚,不要調(diào)用out.close();會報錯扬舒!

    out.println("添加成功");//能看到這個輸出!(如果不寫這個輸出凫佛,則響應為空白頁)
    out.close();
    response.sendRedirect("list");//看不到重定向結(jié)果讲坎!

2)重定向之前,服務器會先清空response對象上緩存的數(shù)據(jù)愧薛。Servlet只允許同時發(fā)送一個響應晨炕。

    out.println("添加成功");//看不到這個輸出!緩存數(shù)據(jù)被清空(響應一)
    response.sendRedirect("list");//能看到重定向結(jié)果:谅(響應二)
    out.close();

重定向的特點

  • 重定向是兩次請求瓮栗。
  • 重定向之后,瀏覽器地址欄的地址會變成重定向地址。
  • 重定向的地址是任意的(前提要存在否則報404)费奸。

何時用重定向

1)比如用戶作刪除操作時弥激,刪除操作已做完,重定向訪問list.do

轉(zhuǎn)發(fā)

什么是轉(zhuǎn)發(fā)

服務器內(nèi)部servlet將請求轉(zhuǎn)發(fā)到另外的servlet方法中愿阐,由其他servlet進行處理并返回結(jié)果微服。

  1. 瀏覽器請求服務器地址A(servletA)
  2. 服務器解析地址A請求(servletA),將request內(nèi)容一并請求至地址B(servletB)
  3. 由地址B(servletB)完成請求處理缨历,并返回結(jié)果
  4. 瀏覽器拿到結(jié)果response

如何轉(zhuǎn)發(fā)

    @RequestMapping("demo")
    public void demo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/list").forward(request, response);
    }

轉(zhuǎn)發(fā)的特點

  • 轉(zhuǎn)發(fā)是一次請求以蕴,訪問了多個servlet
  • 轉(zhuǎn)發(fā)之后,地址欄不變
  • 轉(zhuǎn)發(fā)所涉及的各個Web組件可以共享同一個request對象和response對象

何時用轉(zhuǎn)發(fā)

1)用戶調(diào)用list.do
2)有ListServlet到數(shù)據(jù)庫查詢數(shù)據(jù)
3)ListServlet將查詢到的結(jié)果通過Servlet引擎(通信模塊)轉(zhuǎn)發(fā)給負責顯示的empList.jsp
4)empList.jsp將數(shù)據(jù)通過友好的界面顯示給用戶辛孵,比如用戶作刪除操作時丛肮,刪除操作已做完,重定向訪問list.do

轉(zhuǎn)發(fā)和重定向的區(qū)別

1)轉(zhuǎn)發(fā)的目的地只能是同一個應用內(nèi)部某個組件的地址觉吭,而重定向的目的地是任意的腾供。
2)轉(zhuǎn)發(fā)之后,瀏覽器地址欄的地址不變鲜滩,而重定向會變伴鳖。
3)轉(zhuǎn)發(fā)所涉及的各個Web組件可以共享request對象,而重定向不可以徙硅。
4)轉(zhuǎn)發(fā)是一件事情未做完榜聂,而重定向是一件事情已經(jīng)做完。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗓蘑,一起剝皮案震驚了整個濱河市须肆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桩皿,老刑警劉巖豌汇,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泄隔,居然都是意外死亡拒贱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門佛嬉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逻澳,“玉大人,你說我怎么就攤上這事暖呕⌒弊觯” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵湾揽,是天一觀的道長瓤逼。 經(jīng)常有香客問我笼吟,道長,這世上最難降的妖魔是什么抛姑? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任赞厕,我火速辦了婚禮,結(jié)果婚禮上定硝,老公的妹妹穿的比我還像新娘皿桑。我一直安慰自己,他們只是感情好蔬啡,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布诲侮。 她就那樣靜靜地躺著,像睡著了一般箱蟆。 火紅的嫁衣襯著肌膚如雪沟绪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天空猜,我揣著相機與錄音绽慈,去河邊找鬼。 笑死辈毯,一個胖子當著我的面吹牛坝疼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谆沃,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钝凶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唁影?” 一聲冷哼從身側(cè)響起耕陷,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎据沈,沒想到半個月后哟沫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡锌介,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年嗜诀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掏湾。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肿嘲,靈堂內(nèi)的尸體忽然破棺而出融击,到底是詐尸還是另有隱情,我是刑警寧澤雳窟,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布尊浪,位于F島的核電站匣屡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏拇涤。R本人自食惡果不足惜捣作,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹅士。 院中可真熱鬧券躁,春花似錦、人聲如沸掉盅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趾痘。三九已至慢哈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間永票,已是汗流浹背卵贱。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侣集,地道東北人键俱。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像肚吏,于是被迫代替她去往敵國和親方妖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容