我遇到以下问题-我使用varying
插件创建了一个名为“ spring”的简单Gradle项目。但是,当我运行Gradle build和com.bmuschko.tomcat
任务并输入http://localhost:8080/spring时,出现404错误。当然,在构建和服务器启动期间我没有收到任何错误消息。有build.gradle:
tomcatRun
我还有一个名为apply plugin: 'com.bmuschko.tomcat'
apply plugin: 'java'
apply plugin: 'war'
group 'training'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
def tomcatVersion = '9.0.17'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
tomcat {
httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
ajpProtocol = 'org.apache.coyote.ajp.AjpNio2Protocol'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-tomcat-plugin:2.5'
}
}
的jsp文件放在hello.jsp
中:
src/main/webapp
和<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Gradle Web App</title>
</head>
<body>
<jsp:useBean id="greeting" class="test.Test"/>
<h3>${greeting.hello}</h3>
</body>
</html>
文件放在Test.java
中:
src/main/java/test
如您所见,服务器似乎已成功启动:
package test;
public class Test {
public String getHello() {
return "Hello Spring!";
}
}
答案 0 :(得分:1)
如评论中所指出的,您的JSP文件的名称为hello.jsp
。
Tomcat文档(conf/web.xml
)指出以下内容:
=====================默认欢迎文件列表==================== >
当请求URI指向目录时,默认servlet看起来如下 该目录中的“欢迎文件”,如果存在的话, 用于显示的相应资源URI。 如果不存在欢迎文件,则默认servlet将提供 目录列表(请参阅默认servlet配置以了解如何 自定义)或返回404状态,具体取决于 列表设置。
默认欢迎文件为:
那是什么意思?
将浏览器指向http://localhost:8080/spring时,请求URL中没有列出特定页面。 Tomcat和其他Web服务器仍尝试提供页面,以便浏览器可以显示某些内容。默认情况下,如果URL中未指定任何页面,则将提供默认主页。由于您的文件名为hello.jsp
,因此它不被视为欢迎文件,因此Tomcat会显示404错误。
您可以通过以下方式解决此问题
hello.jsp
重命名为index.jsp
welcome-file-list
中的web.xml
以包括hello.jsp
话虽这么说,问题不是com.bmuschko.tomcat
插件也不是您的构建文件。