我开始使用一本书来学习Spring,但我仍然坚持不懈。我正在实现本书的示例,因为我想运行应用程序,所以我使用的是spring-boot。我唯一得到的是一个 "出现意外错误(type = Not Found,status = 404)。 没有可用的消息"。
我使用配置为此的ServletDispatcher:
@EnableAutoConfiguration
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 };
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SpittrWebAppInitializer.class, args);
}
}
这是WebConfig.class:
@Configuration
@EnableWebMvc
@ComponentScan("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();
}
}
这是控制器:
@Controller
public class HomeController {
@RequestMapping(value="/", method=GET)
public String home() {
return "home";
}
}
这是我正在使用的项目的结构:
├── build
│ ├── classes
│ │ ├── main
│ │ │ └── spittr
│ │ │ ├── config
│ │ │ │ ├── RootConfig.class
│ │ │ │ ├── SpittrWebAppInitializer.class
│ │ │ │ └── WebConfig.class
│ │ │ └── web
│ │ │ └── HomeController.class
│ │ └── test
│ │ └── spittr
│ │ └── web
│ │ └── HomeControllerTest.class
│ └── resources
│ └── main
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── spittr
│ │ ├── config
│ │ │ ├── RootConfig.java
│ │ │ ├── SpittrWebAppInitializer.java
│ │ │ └── WebConfig.java
│ │ └── web
│ │ └── HomeController.java
│ └── resources
└── test
├── java
│ └── spittr
│ └── web
│ └── HomeControllerTest.java
└── resources
现在,如果我向localhost发出请求:8080我收到404错误,可能是因为我必须将jsp视图放在ViewResolver可以访问的文件夹中。
在我粘贴的树中,必须放置WEB-INF / views /文件夹? 它是必须插入jsp的地方吗?
非常感谢。
答案 0 :(得分:1)
如果要将JSP与Spring Boot一起使用,则必须使用WAR格式而不是胖JAR格式。
请参阅Spring Boot参考手册中的JSP Limitations部分以及Spring Boot JSP Sample Application。该示例使用Maven,但如果您遵循Spring Boot参考手册中的指导原则,您将能够使用Gradle获得相同的结果。
答案 1 :(得分:0)
根据您的文件夹结构和ViewResolver
前缀定义判断,您必须在main
目录下创建以下目录并在其中添加jsp
个文件:
main/webapp/WEB-INF/views/