我正在尝试用Spring Boot Congifuration创建一个简单的控制器:
@Configuration
@EnableWebMvc
@ComponentScan (basePackages = { "ru.spb.chat.controller" })
public class WebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setPrefix("/WEB-INF/view/");
bean.setSuffix(".html");
return bean;
}
}而对于servlet:
public class MainWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(final ServletContext sc) throws ServletException {
AnnotationConfigWebApplicationContext root =
new AnnotationConfigWebApplicationContext();
root.scan("ru.spb");
sc.addListener(new ContextLoaderListener(root));
ServletRegistration.Dynamic appServlet =
sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
appServlet.setLoadOnStartup(1);
appServlet.addMapping("/");
}}
我的控制器。
@Controller
public class RootController {
@GetMapping ("/")
public String root() {
return "login";
}
}但是当我尝试在"/“上映射时,它返回404-ERROR This is my project-structure:

发布于 2020-04-08 21:51:30
删除您的WebConfig并删除ServletInitializer和MainWebAppInitializer。(您可能还可以删除WebSocketConfig并使用Spring Boot中的自动配置!)。
让您的ChatApplication扩展SpringBootServletInitializer并实现configure方法。
@SpringBootApplication
public class ChatApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(ChatApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ChatApplication.class);
}
}然后在你的application.properties中添加
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.html现在,您正在使用正确的Spring Boot自动配置和正确的方式来创建可执行的WAR。
也就是说,您通常不想要WAR (仅当您使用JSP时,嵌入式容器不鼓励使用JSP)。
https://stackoverflow.com/questions/61101040
复制相似问题