我试图用spring boot创建一个新项目。 但我得到的错误如下所述。我添加了我的代码。
错误
找不到HTTP ERROR 404页面
这是我的项目结构的链接。 Structure image link
pom.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>`
login.jsp 仅包含hello
LoginController.class
@Controller
public class LoginController {
@RequestMapping(value = {"/","/login"},method = RequestMethod.GET)
public ModelAndView getLoginPage(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("login");
return modelAndView;
}
}
WcApplication.class
@SpringBootApplication
public class WcApplication {
public static void main(String[] args) {
SpringApplication.run(WcApplication.class, args);
}
}
为什么我会得到这个以及如何解决这个问题?感谢
答案 0 :(得分:0)
我认为你错过了ViewResolver
配置类。
@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
registry.viewResolver(resolver);
}
}
尝试以上配置,并应拨打login.jsp
页面。
正如您在application.properties
中正确添加了解析程序一样。我认为问题出在文件夹WEB-INF
上。此文件夹受外部访问保护,.jsp
文件不应位于此文件夹中。它适用于web.xml
之类的文件,不应向客户端公开。
只需将其重命名为view
(或其他内容),然后将application.properties
更改为 -
spring.mvc.view.prefix=/view/jsp/
spring.mvc.view.suffix=.jsp
这绝对有用。
答案 1 :(得分:0)
在我的情况下,我在Spring Boot中正确设置了所有设置。 jsps
在src/main/webapp/WEB-INF/jsp
中
和index.html
中的src/main/resources/static/index.html
欢迎页面。尽管如此,我还是努力尝试不呈现jsp页面。我总是得到404
的回报。
但是当我更改构建过程以创建war字段而不是jar文件时,它工作正常。
只需在build.gradle
文件中进行如下更改,
apply plugin: "war"
此后,在以Java -jar demo.war
为名的战争中,一切都准备就绪并开始工作。
答案 2 :(得分:0)
我只是发生了同样的问题。项目结构正确,一切看起来都不错。我对application.properties spring.mvc.view.prefix进行了一些更改。我将“ / WEB-INF / jsp /”更改为“ WEB-INF / jsp /”,并且一切正常。我认为在generate target并警告它是根目录,因此附加的/作为前缀会令人困惑