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