SpringBoot 轉(zhuǎn)發(fā)請求至指定頁面的操作方法
1、前言
原先的頁面訪問地址為:http://127.0.0.1:8888/office/schdule/index/
,
重構(gòu)項目,SpringBoot 項目,前后分離,前端文件放置靜態(tài)目錄(static
)下,訪問地址:http://127.0.0.1:8888/office/schdule/index.html
??梢钥闯?,原先是請求接口進行轉(zhuǎn)發(fā)到指定頁面的,而現(xiàn)在是直接訪問靜態(tài)文件,為了能兼容原先訪問地址,則需對請求進行轉(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)主頁 * @return 要轉(zhuǎn)發(fā)的頁面地址 */ @GetMapping("html/index") public String forwordIndexHtml() { return "forword:/schdule/index.html"; } /** * 跳轉(zhuǎn)主頁 * @return 要重定向的頁面地址 */ @GetMapping("html/index") public String redirectIndexHtml() { return "redirect:/schdule/index.html"; } }
注意:需要使用
@Controller
,不可使用@RestController
。@RestController
相當于@Controller
和@ResponseBody
合在一起的作用,如果使用@RestController
注解Controller
層的話,則返回的是return
里面的內(nèi)容,無法返回到指定的頁面,配置的視圖解析器InternalResourceViewResolver
也就自然沒有作用了。
然而,上述代碼報了Cannot resolve MVC View ‘forword:/schdule/index.html’
無法解析視圖的錯誤。
2.2 重寫 WebMvcConfigurer 接口中的方法
創(chuàng)建 WebConfig
類實現(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è)置訪問相對路徑及其對應(yīng)的 HTML 文件的相對路徑(相對于靜態(tài)目錄) registry.addViewController("html/index").setViewName("schdule/index.html"); } }
依然還是報了Cannot resolve MVC View ‘forword:/schdule/index.html’
無法解析視圖的錯誤。
2.3 引入 thymeleaf
以上的錯誤是因為沒有使用模板引擎,無法識別靜態(tài)頁面。
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 默認的靜態(tài)目錄是resources
下的 static
,引入thymeleaf
模板引擎后,還是無法識別static
下的文件,只能識別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)主頁(使用template模板引擎) * @return 要轉(zhuǎn)發(fā)到指定頁面的相對地址(相對于 templates) */ @GetMapping("html/index") public String forwordIndexHtml() { return "schdule/index.html"; } }
另外,引入了引入
thymeleaf
模板引擎后,上述addViewControllers(ViewControllerRegistry registry)
方法也能在IDEA
中正常跳轉(zhuǎn)到指定地址,但是運行時,卻總是報找不到靜態(tài)文件,無論怎么修改路徑都不行。具體原因不明,因此不采用。
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ā)請求至指定頁面的文章就介紹到這了,更多相關(guān)SpringBoot 轉(zhuǎn)發(fā)請求至指定頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 多線程Synchronized和Lock的區(qū)別
這篇文章主要介紹了Java 多線程Synchronized和Lock的區(qū)別,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01Spring中使用騰訊云發(fā)送短信驗證碼的實現(xiàn)示例
本文主要介紹了Spring?中?使用騰訊云發(fā)送短信驗證碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03- 在這篇文章中給大家繼續(xù)講解包裝類的裝箱和拆箱問題。你可能會很好奇,做java開發(fā),怎么還裝起箱子來了?那么就請大家?guī)е苫笸驴窗?/div> 2023-04-04
SpringBoot3使用devtools實現(xiàn)代碼熱部署的詳細步驟
Spring Boot DevTools是一組用于提高開發(fā)人員生產(chǎn)力,并加速Spring Boot應(yīng)用程序開發(fā)的工具,它提供了一些功能,可以幫助開發(fā)人員更快速地構(gòu)建應(yīng)用程序,并減少常見的開發(fā)問題,本文給大家介紹了SpringBoot3使用devtools實現(xiàn)代碼熱部署的詳細步驟,需要的朋友可以參考下2024-01-01spring security獲取用戶信息為null或者串值的解決
這篇文章主要介紹了spring security獲取用戶信息為null或者串值的解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03Springboot整合hibernate validator 全局異常處理步驟詳解
本文分步驟給大家介紹Springboot整合hibernate validator 全局異常處理,補呢文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01Spring @Configuration和@Component的區(qū)別
今天小編就為大家分享一篇關(guān)于Spring @Configuration和@Component的區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12MyBatis的SQL執(zhí)行結(jié)果和客戶端執(zhí)行結(jié)果不一致問題排查
本文主要介紹了MyBatis的SQL執(zhí)行結(jié)果和客戶端執(zhí)行結(jié)果不一致問題排查,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04最新評論