JAVA中五個(gè)重定向的方式盤點(diǎn)
前言
3xx狀態(tài)碼是http響應(yīng)中重要的狀態(tài)碼系列,表示重定向意義的一類狀態(tài)碼。
常見的3XX響應(yīng)狀態(tài)碼如下:
301 永久重定向 Moved Permanently
永久重定向,是指用戶請(qǐng)求的資源地址已經(jīng)廢棄了,現(xiàn)在需要使用新地址來訪問,并通過響應(yīng) Header 的 Location 字段將這個(gè)新的地址告知給用戶。
302 臨時(shí)重定向 Found
標(biāo)準(zhǔn)要求瀏覽器在收到該響應(yīng)時(shí)不應(yīng)該修改 HTTP Method 和 Request Body,但是大多數(shù)瀏覽器都沒有遵守這個(gè)標(biāo)準(zhǔn)。302請(qǐng)求經(jīng)常會(huì)和303一樣的處理方式。
303 臨時(shí)重定向 SeeOther
瀏覽器在收到 303 響應(yīng)之后,除 GET 方法保持不變之外,其他所有方法都會(huì)被改為 GET 方法,同時(shí) Request Body 也會(huì)丟失。一般用于將 POST 方法重定向到 GET 方法。
304 未修改 Not Modified
該狀態(tài)碼表示客戶端發(fā)送附帶條件的請(qǐng)求時(shí),服務(wù)器端允許請(qǐng)求訪問資源,但未滿足條件的情況。
307 臨時(shí)重定向 Temporary Redirect
307 和 303 一樣,唯一的區(qū)別就是瀏覽器不會(huì)改變請(qǐng)求的 HTTP Method 和 Request Body。對(duì)于 POST/PUT 等非 GET 請(qǐng)求很有用。
JAVA服務(wù)端重定向的方式
日常開發(fā)中,時(shí)常要用到重定向,有時(shí)甚至是同一個(gè)請(qǐng)求需要根據(jù)不同的業(yè)務(wù)場(chǎng)景進(jìn)行不同的重定向,下面總結(jié)了5種重定向的方式:
一、RequestDispatcher.forward
request.getRequestDispatcher(path).forward(request, response)
二、HttpServletResponse.sendRedirect
response.sendRedirect(path)
三、Controller的方法直接返回
@RequestMapping("redirectByStr") public String redirectByStr() { return "redirect:http://XXX"; }
四、返回重定向ModelAndView
@RequestMapping("redirectView") public ModelAndView redirectView(HttpServletRequest req, HttpServletResponse resp) { String url = "redirect:http://XXX"; return new ModelAndView(url); }
五、一個(gè)spring的強(qiáng)制重定向方式:
只要處于請(qǐng)求階段,都可以用這個(gè)跳轉(zhuǎn),使用這個(gè)方式進(jìn)行重定向,若有多線程的情況,會(huì)報(bào)錯(cuò),因?yàn)槠渌€程獲取不到當(dāng)前請(qǐng)求。
((ServletRequestAttributes)RequestContextHolder .getRequestAttributes()) .getResponse () .sendRedirect ("http://XXX"); return null;
?總結(jié)
到此這篇關(guān)于JAVA中五個(gè)重定向的方式盤點(diǎn)的文章就介紹到這了,更多相關(guān)JAVA重定向的方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在@Value注解內(nèi)使用SPEL自定義函數(shù)方式
這篇文章主要介紹了在@Value注解內(nèi)使用SPEL自定義函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02springboot多個(gè)service互相調(diào)用的事務(wù)處理方式
這篇文章主要介紹了springboot多個(gè)service互相調(diào)用的事務(wù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02SpringBoot實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)的方式
在spring?boot中,可以通過@EnableScheduling注解和@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù),也可以通過SchedulingConfigurer接口來實(shí)現(xiàn)定時(shí)任務(wù),但是這兩種方式不能動(dòng)態(tài)添加、刪除、啟動(dòng)、停止任務(wù),本文給大家介紹SpringBoot實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)的方式,感興趣的朋友一起看看吧2024-03-03IDEA解決maven包沖突easypoi NoClassDefFoundError的問題
這篇文章主要介紹了IDEA解決maven包沖突easypoi NoClassDefFoundError的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Spring中的@CrossOrigin注解的使用詳細(xì)解讀
這篇文章主要介紹了Spring中的@CrossOrigin注解的使用詳細(xì)解讀,跨源資源共享(CORS),是由大多數(shù)瀏覽器實(shí)現(xiàn)的W3C規(guī)范,允許對(duì)跨域請(qǐng)求進(jìn)行靈活授權(quán),用來代替IFRAME或JSONP等非正規(guī)實(shí)現(xiàn)方式,需要的朋友可以參考下2023-11-11Intellij idea使用Statistic統(tǒng)計(jì)代碼行數(shù)的方法
這篇文章主要介紹了Intellij idea使用Statistic統(tǒng)計(jì)代碼行數(shù)的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04