您好我使用带有maven jar包装的Spring靴子。我的项目结构看起来像这样
我使用此命令从命令promt启动我的项目: mvn package&& java -jar target / ProjekatNekretnine-0.0.1.jar,它开始完美。比我去http://127.0.0.1:8080/api/users/home我没有得到welcome.jsp页面。我的控制器类看起来像这样:
UserController类:
package com.projekat.nekretnine.controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.projekat.nekretnine.Model.Korisnik;
@RestController
@RequestMapping(value="api/users")
public class UserController {
@RequestMapping(value = "/home")
public String welcome(Model model) {
return "welcome";
}
}
我认为我的welcome方法应该返回我的welcome.jsp文件,而是将“欢迎”写入页面。为什么会这样?我做错了什么?
我的welcome.jsp文件如下所示:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>This is working.</h1>
</body>
</html>
所以你看到它不应该写欢迎。
这是我的pom.xml供您查看:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.projekat.nekretnine</groupId>
<artifactId>ProjekatNekretnine</artifactId>
<version>0.0.1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>5.1.30</version> -->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
还有一件事,当我创建maven项目时,我选择了包装应该是JAR,而不是WAR。我不知道我现在是否需要web.xml或其他xml文件。也许错误是我放置静态文件的地方,如果这是问题,你能告诉我把tham放在哪里吗?
我试图在我的UserController类中使用@Controller而不是@RestController,但仍然存在同样的问题。
提前谢谢。
答案 0 :(得分:2)
您遇到的行为是正常的。 发生这种情况是因为您指示您的控制器(特别是您的休息控制器)在遇到/ api / users / home端点时返回一个String对象。 如果您希望在此端点中公开页面(视图),则应将spring-boot配置为使用InternalResourceViewResolver。
您可以查看类似的问题Configure ViewResolver with Spring Boot and annotations gives No mapping found for HTTP request with URI error。并对控制器应用更改以返回欢迎页面。