Spring 5 MVC Angular 5 App投掷404错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 5 MVC Angular 5 App投掷404错误相关的知识,希望对你有一定的参考价值。

我知道之前已经问过这个问题,我已经尝试了几种解决方案,但是无法正常工作。我正在使用Spring 5 MVC和/ src / main / webapp /中存在的角度应用程序。

该应用程序在访问基本路径时有效。当我需要跳进应用程序内的路线时,问题就来了。当页面尝试使用URL中的路由加载时,它会抛出404错误,因为Spring无法为此找到资源处理程序,但我真正希望它做的只是去应用程序的index.html这样有角度可以处理它。我试图在/ src / main / webapp /中的'app'文件夹中移动应用程序,你可以看到我在下面的资源处理程序和视图控制器。我使用swagger这个应用程序也使事情变得复杂。任何帮助,将不胜感激!

public class MvcConfiguration implements WebMvcConfigurer {...

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");   
    registry.addResourceHandler("/app/**").addResourceLocations("/app/");
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addRedirectViewController("/", "swagger-ui.html");
    registry.addViewController("/swagger").setViewName("redirect:/rest/swagger-ui.html");
    registry.addViewController("/app").setViewName("forward:/app/index.html");
}

以及下面的Web初始化类:

public class WebInitializer implements WebApplicationInitializer {

AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();

@Override
public void onStartup(ServletContext container) {
    // Create the 'root' Spring application context
    AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
    rootContext.register(ApplicationConfiguration.class);

    // Manage the lifecycle of the root application context
    container.addListener(new ContextLoaderListener(rootContext));

    registerDispatcherServlet(container, MvcConfiguration.class, "/views/*", "/rest/*", "/swagger/*");

    container.addFilter("springSecurityFilterChain", new DelegatingFilterProxy("springSecurityFilterChain")).addMappingForUrlPatterns(null, false, "/*");

    CharacterEncodingFilter charEncodingFilter = new CharacterEncodingFilter();
    charEncodingFilter.setEncoding("UTF-8");
    container.addFilter("encoding-filter", charEncodingFilter).addMappingForUrlPatterns(null, false, "/*");

    container.addFilter("cors-filter", new CorsFilter()).addMappingForUrlPatterns(null, false, "/*");
}
答案

您需要检查基本href属性。

<base href="/src/main/webapp/">

以上是关于Spring 5 MVC Angular 5 App投掷404错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 5 应用程序中响应 Spring Boot 时无法读取授权标头

Angular 路由模板 url 是不是支持 ASP.Net MVC 5 项目中的 *.cshtml 文件?

将 Angular 和 .net core web api 安全地集成到现有的 MVC 5 应用程序中

Spring企业级程序设计 • 第5章 Spring MVC快速入门

Spring 5 MVC - InternalResourceViewResolver 和 Spring Security

带有 mvc 和 Angular js 的 DevExpress 报告