Ich versuche, das gesamte Spring Framework zu verstehen. Meiner Kenntnis nach machen die relativ neuen Techniken der Verwendung von Gradle viele der Tutorials und Posts online veraltet?Spring hält String statt JSP/HTML-Inhalt
Das Hauptproblem, in dem ich ausgeführt werde, wenn ich versuche, eine JSP- oder HTML-Seite anzuzeigen, zeigt der Körper der Webseite Text: "filename.jsp".
Das Projekt wurde von New-> Other-> Spring Starter Project mit Gradle und STS 3.7 erstellt. Ziel ist es, eine Webanwendung mit MVC-Muster zu erstellen.
Ordnerstruktur:
TEST
--Spring Elements (von STS erstellt)
--src/main/java
++ - TEST
+++ + - TestApplication.java (erstellt von STS)
++ - TEST.Controller
++++ - JSPController.java
--sec/main/resources
++ - application.properties (von STS erstellt, leere Datei)
--src/main/webapp (** ich dieses Verzeichnis erstellt, ist aber dies erforderlich)
++ - WEB-INF
++++ - home.jsp
++++ - home.html
++++ - web.xml (** Weitere Frage unten)
TestApplication.java
package TEST;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test</title>
</head>
<body>
<h1>Test 1</h1>
<form>
First name:<br> <input type="text" name="firstname"> <br>
Last name:<br> <input type="text" name="lastname">
</form>
</body>
</html>
JSPController.java
package TEST.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class JSPController {
@RequestMapping(value = "/jsp", method = RequestMethod.GET)
public String home(){
return "/webapp/WEB-INF/home.jsp";
}
}
web.xml
//empty file right now
build.gradle
buildscript {
ext {
springBootVersion = '1.2.5.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("io.spring.gradle:dependency-management-plugin:0.5.1.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
jar {
baseName = 'TEST'
version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
eclipse {
classpath {
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
Als ich nach http://localhost:8080/jsp gehen, die HTML-Seite hat den Körper: /webapp/WEB-INF/home.jsp
So ist die jsp überhaupt nicht angezeigt wird. Ich habe versucht, HTML und mit oder ohne Methode = RequestMethod.GET/POST. Nichts funktioniert.
** Zusätzliche Frage: Eine Menge von Online-Posts/Tutorial geht in XML-Dateien, zum Beispiel web.xml. Nach meinem Verständnis werden diese nicht mehr benötigt oder benötigt, weil Spring + Gradle automatisch eine .xml aus den @notations generiert?
Danke für die schnelle Antwort, aber wenn ich es zu @Controller ändern, erhalte ich einen Fehler im Browser: Whitelabel Error Page. Es ist ein unerwarteter Fehler aufgetreten (Typ = Nicht gefunden, Status = 404). – JustAName
Jetzt haben Sie ein anderes Problem! :) Da Sie Spring Boot verwenden, sollten Ihre Ansichten unter dem Verzeichnis 'src/main/resources/templates' stehen, so dass Sie das Verzeichnis' src/main/webapp' nicht benötigen. Ich schlage auch vor, dass Sie JSP nicht als Ihre Ansichtstechnologie verwenden (besonders wenn Sie mit Spring-Boot gepaart sind). Bitte lesen Sie das Referenzhandbuch hier: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-spring-mvc-template-engines –
Vielen Dank. Ich lese jetzt den Ref-Guide. Sie erwähnten das Erstellen einer pom.xml. Was mich auf die obige Zusatzfrage zurückbringt. Muss ich pom.xml oder irgendeine .xml machen, obwohl ich mit grddle baue? – JustAName