У меня следующая проблема: я создал простой проект Gradle с именем «spring» с плагином com.bmuschko.tomcat
. Но когда я запускаю сборку Gradle и задачи tomcatRun
и ввожу http://локальный:8080/весна, я получаю ошибку 404. Конечно, я не получаю сообщений об ошибках во время сборки и запуска сервера. Есть build.gradle:
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!";
}
}
Как видите, сервер успешно запускается:
17:46:12: Executing tasks 'build tomcatRun'...
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :war UP-TO-DATE
> Task :assemble UP-TO-DATE
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build UP-TO-DATE
> Task :tomcatRun
Started Tomcat Server
The Server is running at http://localhost:8080/spring
@thokuest это "hello.jsp"
Как указано в комментариях, ваш JSP-файл называется hello.jsp
.
В документации Tomcat (conf/web.xml
) говорится следующее:
==================== Default Welcome File List =====================
When a request URI refers to a directory, the default servlet looks for a "welcome file" within that directory and, if present, to the corresponding resource URI for display. If no welcome files are present, the default servlet either serves a directory listing (see default servlet configuration on how to customize) or returns a 404 status, depending on the value of the listings setting.
Файлы приветствия по умолчанию:
Так что это значит?
Когда вы указываете в браузере http://локальный:8080/весна, в URL-адресе запроса нет конкретной страницы. Tomcat, как и другие веб-серверы, по-прежнему пытаются доставить страницу, чтобы браузер мог что-то отобразить. По умолчанию, если в URL-адресе не указана страница, доставляется домашняя страница по умолчанию. Поскольку ваш файл называется hello.jsp
, он не считается файлом приветствия, поэтому Tomcat выдает ошибку 404.
Вы можете решить проблему,
hello.jsp
в index.jsp
welcome-file-list
в вашем web.xml
для включения hello.jsp
При этом проблема не в плагине com.bmuschko.tomcat
и не в вашем файле сборки.
Как называется файл JSP?