Whitelabel错误页面发生意外错误(类型=未找到,状态= 404)/WEB-INF/views/home.jsp
问题出在您的项目结构上,WEB-INF应该在src/main/webapp而不是下src/main。
也就是说,按照您ViewResolver的JSP文件应位于src/main/webapp/WEB-INF/views/home.jsp。
有关Maven标准目录布局的.
这是一个 Spring Boot SampleApp.
PS:如果您打算在Tomcat中部署此应用程序,则将遇到此Issue问题,以上示例应用程序解决了此问题。
解决方法我正在遵循Spring in Action(第2部分),并尝试按书中所示创建Spittr 应用程序。(with Spring Tool Suite 7.3.7. and Maven.)
问题是我遇到以下错误:
Whitelabel Error Page.
This application has no explicit mapping for /error,so you are seeing thisas a fallback.
Thu Apr 07 16:21:23 CEST 2016 There was an unexpected error (type=Not Found,status=404). /WEB-INF/views/home.jsp
包结构为:
如您所见 ,如果路径存在问题,我试图将放置/WEB-INF/views/home.jsp在多个位置。
DispatcherServlet配置类:
package com.spittr.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protected String[] getServletMappings() {return new String[] { '/' }; } @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[] { WebConfig.class }; }}
WebConfig.java class:
package com.spittr.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.web.ErrorAttributes;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration@EnableWebMvc@ComponentScan('com.spitter.web')public class WebConfig extends WebMvcConfigurerAdapter{ @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix('/WEB-INF/views/'); resolver.setSuffix('.jsp'); resolver.setExposeContextBeansAsAttributes(true); return resolver; } @Override public void configureDefaultServletHandling( DefaultServletHandlerConfigurer configurer) { configurer.enable(); }}
RootConfig.java class: package com.spittr.config;
import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration@ComponentScan(basePackages={'spitter'},excludeFilters={@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)})public class RootConfig {}
The @Controller class.
package com.spittr.web;import static org.springframework.web.bind.annotation.RequestMethod.*;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Controllerpublic class HomeController { @RequestMapping(value='/',method=GET) public String home() {return 'home'; }}
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</groupId> <artifactId>spittr</artifactId> <version>1.2.0</version> <packaging>jar</packaging> <name>Spittr</name> <description>Test 1</description> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.3.RELEASE</version><relativePath/> <!-- lookup parent from repository --> </parent> <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.7</java.version> </properties> <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.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>
home.jsp:
<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %><%@ page session='false' %><html> <head><title>Spittr</title><link rel='stylesheet'type='text/css'href='https://www.haobala.com/wenda/<c:url value='/resources/style.css' />' > </head> <body><h1>Welcome to Spittr</h1> <a href='https://www.haobala.com/wenda/<c:url value='/spittles' />'>Spittles</a> | <a href='https://www.haobala.com/wenda/<c:url value='/spitter/register' />'>Register</a> </body></html>
Basically is the same that you can find in the book. I simply don’t know whatelse to do.
Thanks.