SpringBoot 轉(zhuǎn)發(fā)請(qǐng)求至指定頁(yè)面的操作方法
1、前言
原先的頁(yè)面訪問地址為:http://127.0.0.1:8888/office/schdule/index/,
重構(gòu)項(xiàng)目,SpringBoot 項(xiàng)目,前后分離,前端文件放置靜態(tài)目錄(static)下,訪問地址:http://127.0.0.1:8888/office/schdule/index.html。可以看出,原先是請(qǐng)求接口進(jìn)行轉(zhuǎn)發(fā)到指定頁(yè)面的,而現(xiàn)在是直接訪問靜態(tài)文件,為了能兼容原先訪問地址,則需對(duì)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā)處理。
2、多種方式嘗試
2.1 redirect、forward關(guān)鍵字(不是 Java 關(guān)鍵字)
/**
* 跳轉(zhuǎn)控制器
* @author pky
*/
@Controller
public class JumpController extends BaseResultController {
/**
* 跳轉(zhuǎn)主頁(yè)
* @return 要轉(zhuǎn)發(fā)的頁(yè)面地址
*/
@GetMapping("html/index")
public String forwordIndexHtml() {
return "forword:/schdule/index.html";
}
/**
* 跳轉(zhuǎn)主頁(yè)
* @return 要重定向的頁(yè)面地址
*/
@GetMapping("html/index")
public String redirectIndexHtml() {
return "redirect:/schdule/index.html";
}
}
注意:需要使用
@Controller,不可使用@RestController。@RestController相當(dāng)于@Controller和@ResponseBody合在一起的作用,如果使用@RestController注解Controller層的話,則返回的是return里面的內(nèi)容,無(wú)法返回到指定的頁(yè)面,配置的視圖解析器InternalResourceViewResolver也就自然沒有作用了。
然而,上述代碼報(bào)了Cannot resolve MVC View ‘forword:/schdule/index.html’無(wú)法解析視圖的錯(cuò)誤。
2.2 重寫 WebMvcConfigurer 接口中的方法
創(chuàng)建 WebConfig 類實(shí)現(xiàn) WebMvcConfigurer 接口,重寫 addViewControllers 方法。如下代碼:
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.web.servlet.config.annotation.*;
/**
* Web 配置類
*
* @author pky
*/
@SpringBootConfiguration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// 設(shè)置訪問相對(duì)路徑及其對(duì)應(yīng)的 HTML 文件的相對(duì)路徑(相對(duì)于靜態(tài)目錄)
registry.addViewController("html/index").setViewName("schdule/index.html");
}
}
依然還是報(bào)了Cannot resolve MVC View ‘forword:/schdule/index.html’無(wú)法解析視圖的錯(cuò)誤。
2.3 引入 thymeleaf
以上的錯(cuò)誤是因?yàn)闆]有使用模板引擎,無(wú)法識(shí)別靜態(tài)頁(yè)面。
pom.xml
<!-- 模板引擎 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
applicaiton.properties
server.servlet.context-path=/office/ server.port=10000 # 靜態(tài)資源路徑 spring.resources.static-locations=classpath:/static/, classpath:/templates/
值得注意的是,SpringBoot 默認(rèn)的靜態(tài)目錄是resources下的 static,引入thymeleaf模板引擎后,還是無(wú)法識(shí)別static下的文件,只能識(shí)別templates下的文件。因此applicaiton.properties需配置templates資源路徑地址,如下圖index.html路徑:

修改 Controller
去掉forword redirect關(guān)鍵字,直接寫需跳轉(zhuǎn)的地址。
/**
* 跳轉(zhuǎn)控制器
* @author pky
*/
@Controller
public class JumpController extends BaseResultController {
/**
* 跳轉(zhuǎn)主頁(yè)(使用template模板引擎)
* @return 要轉(zhuǎn)發(fā)到指定頁(yè)面的相對(duì)地址(相對(duì)于 templates)
*/
@GetMapping("html/index")
public String forwordIndexHtml() {
return "schdule/index.html";
}
}
另外,引入了引入
thymeleaf模板引擎后,上述addViewControllers(ViewControllerRegistry registry)方法也能在IDEA中正常跳轉(zhuǎn)到指定地址,但是運(yùn)行時(shí),卻總是報(bào)找不到靜態(tài)文件,無(wú)論怎么修改路徑都不行。具體原因不明,因此不采用。
3、最終效果
http://127.0.0.1:8888/office/schdule/index/

http://127.0.0.1:8888/office/schdule/index.html

到此這篇關(guān)于SpringBoot 轉(zhuǎn)發(fā)請(qǐng)求至指定頁(yè)面的文章就介紹到這了,更多相關(guān)SpringBoot 轉(zhuǎn)發(fā)請(qǐng)求至指定頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解 Java 中的 Switch 語(yǔ)句示例詳解
在Java編程中,switch語(yǔ)句通過表達(dá)式值來執(zhí)行不同代碼塊,本文介紹switch語(yǔ)法、案例、注意事項(xiàng),以及與if語(yǔ)句的對(duì)比,包括基本語(yǔ)法、關(guān)鍵字、表達(dá)式、case常量、break和default的使用,以及如何根據(jù)輸入的字符輸出星期、大小寫轉(zhuǎn)換、成績(jī)判斷和季節(jié)判斷等實(shí)際應(yīng)用場(chǎng)景2024-10-10
Java高級(jí)之HashMap中的entrySet()方法使用
這篇文章主要介紹了Java高級(jí)之HashMap中的entrySet()方法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Spring Boot中l(wèi)ombok的安裝與使用詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot中l(wèi)ombok安裝與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送功能
郵件發(fā)送是一個(gè)很普遍的功能,springboot整合了相關(guān)的starter,本文給大家介紹了可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的郵件發(fā)送功能的實(shí)例,文中通過代碼給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2023-12-12
SpringBoot開發(fā)案例之打造私有云網(wǎng)盤的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot開發(fā)案例之打造私有云網(wǎng)盤的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
springboot多模塊項(xiàng)目mvn打包遇到存在依賴但卻無(wú)法發(fā)現(xiàn)符號(hào)問題
在SpringBoot多模塊項(xiàng)目中,如果遇到依賴存在但無(wú)法發(fā)現(xiàn)符號(hào)的問題,常見原因可能是pom.xml配置問題,例如,如果某個(gè)模塊僅作為依賴而不是啟動(dòng)工程,不應(yīng)在其pom中配置spring-boot-maven-plugin插件,因?yàn)檫@將影響jar包的生成方式2024-09-09

