使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例)
springboot跳轉(zhuǎn)到指定頁面
controller的寫法
必須是templates下面的頁面,不經(jīng)過配置,無法直接跳轉(zhuǎn)到public,static,等目錄下的頁面
package com.ljf.spring.boot.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName: UserController
* @Description: TODO
* @Author: liujianfu
* @Date: 2021/04/01 10:26:05
* @Version: V1.0
**/
@Controller
public class UserController {
@RequestMapping("/api/show")
public String showName(String userName,Model model){
System.out.println("進(jìn)入controller層了!!!"+userName);
model.addAttribute("name",userName);
return "index";//跳轉(zhuǎn)到指定頁面
}
}
springboot重定向和請(qǐng)求轉(zhuǎn)發(fā)
springboot重定向
方式一:使用 "redirect" 關(guān)鍵字(不是指java關(guān)鍵字),注意:類的注解不能使用@RestController,要用@Controller;因?yàn)锧RestController內(nèi)含@ResponseBody,解析返回的是json串。不是跳轉(zhuǎn)頁面
@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public String test(@PathVariable String name) {
return "redirect:/ceng/hello.html";
}
方式二:使用servlet 提供的API,注意:類的注解可以使用@RestController,也可以使用@Controller
@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public void test(@PathVariable String name, HttpServletResponse response) throws IOException {
response.sendRedirect("/ceng/hello.html");
}
springboot的請(qǐng)求轉(zhuǎn)發(fā)
方式一:使用 "forword" 關(guān)鍵字(不是指java關(guān)鍵字),注意:類的注解不能使用@RestController 要用@Controller
@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public String test(@PathVariable String name) {
return "forword:/ceng/hello.html";
}
方式二:使用servlet 提供的API,注意:類的注解可以使用@RestController,也可以使用@Controller
@RequestMapping(value="/test/test01/{name}" , method = RequestMethod.GET)
public void test(@PathVariable String name, HttpServletRequest request, HttpServletResponse response) throws Exception {
request.getRequestDispatcher("/ceng/hello.html").forward(request,response);
}
springboot轉(zhuǎn)發(fā)和重定向
springmvc重定向?qū)懛?/h3>
@RequestMapping(“/test1”)
public String test1(){
return “index”;
}
@RequestMapping(“/test1”)
public String test1(){
return “index”;
}
轉(zhuǎn)發(fā)是不需要手動(dòng)加html的,此時(shí)springboot發(fā)現(xiàn)是轉(zhuǎn)發(fā),默認(rèn)配置下他會(huì)自動(dòng)去templates文件夾下找到對(duì)應(yīng)的文件進(jìn)行轉(zhuǎn)發(fā),如果return后寫的是index.html會(huì)報(bào)404。
重定向
@RequestMapping(“/test2”)
public String test2(){
return “redirect:index1.html”;
}
首先,添加redirect:這個(gè)毋庸置疑是mvc的語法問題,其次這里需要注意的是需要手動(dòng)添加.html,否則會(huì)報(bào)404
轉(zhuǎn)發(fā)的特點(diǎn)
地址欄不發(fā)生變化,顯示的是上一個(gè)頁面的地址
請(qǐng)求次數(shù):只有1次請(qǐng)求
根目錄:http://localhost:8080/項(xiàng)目地址/,包含了項(xiàng)目的訪問地址
請(qǐng)求域中數(shù)據(jù)不會(huì)丟失

重定向的特點(diǎn)
地址欄:顯示新的地址
請(qǐng)求次數(shù):2次
根目錄:http://localhost:8080/ 沒有項(xiàng)目的名字
請(qǐng)求域中的數(shù)據(jù)會(huì)丟失,因?yàn)槭?次請(qǐng)求
疑問
問:什么時(shí)候使用轉(zhuǎn)發(fā),什么時(shí)候使用重定向?
如果要保留請(qǐng)求域中的數(shù)據(jù),使用轉(zhuǎn)發(fā),否則使用重定向。
以后訪問數(shù)據(jù)庫,增刪改使用重定向,查詢使用轉(zhuǎn)發(fā)。
問:轉(zhuǎn)發(fā)或重定向后續(xù)的代碼是否還會(huì)運(yùn)行?
無論轉(zhuǎn)發(fā)或重定向后續(xù)的代碼都會(huì)執(zhí)行

1、轉(zhuǎn)發(fā)使用的是getRequestDispatcher()方法;重定向使用的是sendRedirect();
2、轉(zhuǎn)發(fā):瀏覽器URL的地址欄不變。重定向:瀏覽器URL的地址欄改變;
3、轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶端行為;
4、轉(zhuǎn)發(fā)是瀏覽器只做了一次訪問請(qǐng)求。重定向是瀏覽器做了至少兩次的訪問請(qǐng)求;
5、轉(zhuǎn)發(fā)2次跳轉(zhuǎn)之間傳輸?shù)男畔⒉粫?huì)丟失,重定向2次跳轉(zhuǎn)之間傳輸?shù)男畔?huì)丟失(request范圍)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- springBoot熱部署、請(qǐng)求轉(zhuǎn)發(fā)與重定向步驟詳解
- springboot如何重定向外部網(wǎng)頁
- SpringBoot中處理的轉(zhuǎn)發(fā)與重定向方式
- springboot?實(shí)戰(zhàn):異常與重定向問題
- springboot如何重定向攜帶數(shù)據(jù) RedirectAttributes
- springboot 重定向方式(redirect前綴)
- springboot項(xiàng)目攔截器重定向循環(huán)問題的解決
- 基于springboot redirect重定向路徑問題總結(jié)
- springboot 如何重定向redirect 并隱藏參數(shù)
- Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析
- SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例
相關(guān)文章
Spring如何使用三級(jí)緩存解決循環(huán)依賴
在Spring框架中,循環(huán)依賴是指兩個(gè)或多個(gè)Bean相互依賴,形成閉環(huán),導(dǎo)致無法完成初始化,此問題僅存在于單例Bean中,而原型Bean會(huì)拋出異常,Spring通過三級(jí)緩存及提前暴露策略解決循環(huán)依賴:一級(jí)緩存存放完全初始化的Bean2024-11-11
Spring Cloud Zuul路由規(guī)則動(dòng)態(tài)更新解析
這篇文章主要介紹了Spring Cloud Zuul路由規(guī)則動(dòng)態(tài)更新解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
詳解JavaWeb如何實(shí)現(xiàn)文件上傳和下載功能
這篇文章主要介紹了如何利用JavaWeb實(shí)現(xiàn)文件的上傳和下載功能,文中的示例代碼講解詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12
Debian配置JDK1.7 與Linux Java Helloworld
這篇文章主要介紹了Debian配置JDK1.7 與Linux Java Helloworld 的相關(guān)資料,需要的朋友可以參考下2016-06-06
調(diào)用java.lang.Runtime.exec的正確姿勢(shì)分享
這篇文章主要介紹了調(diào)用java.lang.Runtime.exec的正確姿勢(shì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
一篇文章帶你搞定SpringBoot不重啟項(xiàng)目實(shí)現(xiàn)修改靜態(tài)資源
這篇文章主要介紹了一篇文章帶你搞定SpringBoot不重啟項(xiàng)目實(shí)現(xiàn)修改靜態(tài)資源,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼
這篇文章主要介紹了application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

