Tôi đang cố gắng hiểu toàn bộ Khung công tác mùa xuân. Theo hiểu biết của tôi, các kỹ thuật tương đối mới của việc sử dụng gradle làm cho rất nhiều hướng dẫn và bài đăng trực tuyến đã lỗi thời?Mùa xuân tiếp tục trả về chuỗi thay vì nội dung jsp/html
Vấn đề chính mà tôi đang gặp phải là khi tôi cố gắng hiển thị trang jsp hoặc html, nội dung của trang web hiển thị văn bản: "filename.jsp".
Dự án được tạo bởi New-> Other-> Spring Starter Project bằng Gradle và STS 3.7. Mục đích là tạo một ứng dụng web bằng cách sử dụng mẫu MVC.
cấu trúc thư mục:
THI
--Spring Elements (tạo ra bởi STS)
--src/main/java
++ - THI
+++ + - TestApplication.java (được tạo bởi STS)
++ - TEST.Controller
++++ - JSPController.java
--sec/main/nguồn
++ - application.properties (tạo ra bởi STS, file EMPTY)
--src/main/webapp (** Tôi tạo ra thư mục này, nhưng là yêu cầu này)
++ - WEB-INF
++++ - home.jsp
++++ - home.html
++++ - web.xml (** bổ sung câu hỏi bên dưới)
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'
}
Khi tôi đi đến http://localhost:8080/jsp, trang html có cơ thể: /webapp/WEB-INF/home.jsp
Vì vậy, jsp không hiển thị gì cả. Tôi đã thử html và có hoặc không có phương pháp = RequestMethod.GET/POST. Không có gì hiệu quả.
** Câu hỏi bổ sung: Rất nhiều bài đăng/hướng dẫn trực tuyến đi vào tệp .xml, ví dụ: web.xml. Theo hiểu biết của tôi, những điều này không còn cần thiết hoặc cần thiết vì spring + gradle tạo một .xml tự động từ @notations?
Cảm ơn bạn đã phản hồi nhanh, nhưng khi tôi đổi thành @Controller, tôi nhận được lỗi trên trình duyệt: Trang Lỗi trắng. Đã xảy ra lỗi không mong muốn (loại = Không tìm thấy, trạng thái = 404). – JustAName
Bây giờ bạn có một vấn đề khác! :) Vì bạn đang sử dụng Spring Boot, các khung nhìn của bạn nên được đặt trong thư mục 'src/main/resources/templates', vì vậy bạn không cần thư mục' src/main/webapp'. Tôi cũng đề nghị bạn sử dụng không sử dụng JSP như công nghệ xem của bạn (đặc biệt khi kết hợp với khởi động mùa xuân). Vui lòng đọc hướng dẫn tham khảo tại đây: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-spring-mvc-template-engines –
Cảm ơn. Im đọc hướng dẫn ref bây giờ. Họ đã đề cập việc tạo một tệp pom.xml. Điều này đưa tôi trở lại câu hỏi bổ sung ở trên. Tôi có cần phải tạo pom.xml hoặc bất kỳ sự kiện .xml nào mà tôi đang xây dựng bằng gradle không? – JustAName