我试图创建一个新的项目与Spring Boot 。但我得到下面描述的错误。我已经添加了我的代码。
错误
404页面未找到
这是我的项目结构的链接。Structure image link
聚合物.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.wc</groupId>
<artifactId>wc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>wc</name>
<description>Work configurator project</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>`
登录名.jsp仅包含hello
登录控制器类
@Controller
public class LoginController {
@RequestMapping(value = {"/","/login"},method = RequestMethod.GET)
public ModelAndView getLoginPage(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("login");
return modelAndView;
}
}
Wc应用程序类
@SpringBootApplication
public class WcApplication {
public static void main(String[] args) {
SpringApplication.run(WcApplication.class, args);
}
}
为什么我得到这个,如何解决这个问题?谢谢
5条答案
按热度按时间7kjnsjlb1#
我想您已经错过了
ViewResolver
配置类。尝试上述配置,它应该调用
login.jsp
页面。更新
由于您已在
application.properties
中正确添加了resolver。我认为问题出在文件夹WEB-INF
上。此文件夹受到外部访问的保护,.jsp
文件不应位于此文件夹中。它适用于web.xml
等不应暴露给客户端的文件。只需将其重命名为
view
(或其他名称)并将application.properties
更改为-这肯定能成功。
w6mmgewl2#
在我的例子中,我在Spring Boot 时正确设置了所有内容。
jsps
在src/main/webapp/WEB-INF/jsp
中,index.html
是src/main/resources/static/index.html
中的欢迎页面。尽管我很努力地尝试,jsp页面还是没有被呈现。我总是得到404
的返回。但是当我改变构建过程来创建一个战争场而不是jar文件时,它工作得很好。
只是在
build.gradle
文件中进行了如下附加行更改在那之后,当以Java
-jar demo.war
的身份进行战争时,一切都到位并开始工作。rmbxnbpk3#
我刚刚遇到了同样的问题。项目结构是正确的,一切看起来都很好。我对application.properties spring. mvc. view. prefix做了一个小的更改。我将“/WEB-INF/jsp/”更改为“WEB-INF/jsp/”,一切都正常工作。我认为在generatetarget和war中,它是根目录,所以额外的/作为前缀会引起一些混乱
fcy6dtqo4#
这是一个层次结构问题,WEB-INF应该在webapp文件夹下。
(note为了让它与springboot默认配置一起工作,webapp/应该在main/下,而不是在resources下)
e4eetjau5#
我也面临着同样的问题,我花了很长时间才弄清楚有三个条件。
1.)在应用程序属性中,您需要具有以下视图解析器Map(您也可以使用基于java的Map):
2.)不得不把 Package 做成“战争”而不是jar。
型
3.)确保您已经添加了Tomcat碧玉依赖项,以便在运行时编译JSP页面。
希望能有所帮助,并随时纠正我。