我有一個在外部 tomcat服務器上完美運行的spring-mvc jsp專案。我正在嘗試使用spring-boot和嵌入式tomcat服務器制作一個可運行的war檔案。但是當我嘗試呼叫 GET /student 時,我收到 404 錯誤并且控制臺中沒有錯誤訊息。
專案畫面
@Bean
public UrlBasedViewResolver setupViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
構建.gradle
plugins {
id 'org.springframework.boot' version '2.6.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'war'
}
description = 'Teaching Academy Web Application.'
ext.tomcatHome = 'D:/Soft/apache-tomcat-9.0.62'
ext.tomcatWebapps = "$tomcatHome/webapps"
war {
archiveName = 'academy-web.war'
}
bootWar {
archiveName = 'academy-web-bootable.war'
}
task deployToTomcat(type: Copy, dependsOn: 'build'){
from war
into "$tomcatWebapps"
}
dependencies {
// implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
implementation 'log4j:log4j:1.2.17'
implementation "javax.servlet:javax.servlet-api:4.0.1"
}
uj5u.com熱心網友回復:
這是開發團隊的預期行為Spring-boot。這里的問題不在于是否嵌入了 tomcat 服務器,而在于您部署的應用程式的型別。
在外部 tomcat 中,您將應用程式打包并部署為war檔案,spring-boot團隊表示該檔案能夠支持jsp頁面。
在嵌入式 tomcat 中,您的意思可能是您將應用程式部署為.jar具有嵌入式服務器的獨立檔案,這里spring-boot團隊提到這是jsp技術無法作業的限制之一。相關 Spring Boot 檔案
還要仔細檢查你提到的問題
我正在嘗試使用spring-boot和嵌入式tomcat服務器制作一個可運行的war檔案。
嵌入式服務器無法按預期處理war檔案。war它將servlet僅包含有關應用程式的資訊,而不是嵌入式服務器,也不包含可以啟動服務器的獨立應用程式。因此,在執行時總結war檔案不會啟動服務器,因此不會啟動404您訪問應用程式時得到的回應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465809.html
