我有带有mvc控制器(映射到/)的springboot应用程序。当此应用程序直接从Idea中执行时(使用了Maven插件),一切正常。当此应用程序打包在war文件中并直接放入外部tomcat中时,也没有问题。但是,当应用程序打包在jar文件中并像jar(java -jar fineName.jar)一样执行时,就会出现404错误(出现意外错误类型=未找到,status = 404 /WEB-INF/pages/login.html),但是登录了。 html文件存在。您能解释一下导致此错误的原因吗?

@Controller
public class LoginController {

@Autowired
LoginService loginService;

@RequestMapping(value ={"/", "/login"}, method = RequestMethod.GET)
public String login() {
    return loginService.getLinkStartPage();
}

@RequestMapping(value="/logout", method = RequestMethod.GET)
public String logout(HttpServletRequest request, HttpServletResponse response) {
    loginService.logout(request,response);
    return "login";
}
}


MVC配置

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter{

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".html");
    return resolver;
}


loginService.getLinkStartPage()-仅根据安全授权返回html文件的名称。

springboot-1.5.1。发布

在服务器端有例外:

最佳答案

Looks likecan't serve web resources with an executable JAR using Tomcat

10-08 00:44