javascript - 使用 ResourceHandlerRegistry 提供静态资源的不同方式

标签 javascript java html spring spring-mvc

我必须启动一个带有 Java 后端的 Angular 1 应用程序。我想使用与前几个月相同的文件夹结构,其中 Angular 1 作为前端,Storngloop 作为后端。

我的前端 Web 应用程序由以下文件夹结构组成:

src
  |
  main
    |
    webapp
        |
        client

在 app 文件夹中,整个应用程序由其他 .css、.js、.html 文件中的子文件夹组成(在每个文件夹中,它们都是我的应用程序的一部分。例如:登录表单文件夹及其 。 css.html.js 文件等等...)。

类似于:

client
      |
      login
          |
          login.html
          |
          login.css
          |
          login.js
      stuff
          |
          stuff.html
          |
          stuff.css
          |
          stuff.js

在 index.html 中我会做 (2):

<link rel="stylesheet" href="client/login/login.css">
...
<script src="client/login/login.js"></script>

所以我想按如下方式配置我的ResourceHandlerRegistry (1):

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "my.package")
public class Configurations extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);

        viewResolver.setPrefix("/client/");
        viewResolver.setSuffix(".html");

        registry.viewResolver(viewResolver);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //resources locations
        registry.addResourceHandler("client/**").addResourceLocations("/client/**");
    }

}

但是当我在我的 index.html 文件中尝试包含任何 .js.css 文件时,我从服务器收到了 404对于点 (2) 中包含的每个资源...如我所料...我必须这样做 (3):

registry.addResourceHandler("client/**").addResourceLocations("/client/", "/client/login/", "/client/stuff/", //ecc... ecc...);

声明我的前端验证的每个资源的每一个路径都完美无缺!真的,我知道那很丑!

是否可以在不声明每个资源路径的情况下完成类似 (1) 的操作?

最佳答案

试试这个:

  1. 配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
        .addResourceHandler("/client/**")
        .addResourceLocations("/client/");
}
  1. Jsps :
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<link rel="stylesheet" href="<c:url value="/client/login/login.css" />">
<script src="<c:url value="/client/login/login.js" />"></script>

关于javascript - 使用 ResourceHandlerRegistry 提供静态资源的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753292/

相关文章:

javascript - angularjs在ng-repeat中获取点击按钮的前一个元素

javascript - 使用 jquery 隐藏和取消隐藏搜索 div

javascript - EPUB:现有 .XML 文件的 HTML 表单值

html - 替换 freemarker 中的换行符

javascript - 如何访问AngularJS中的response.data值?

java - java静态变量存放在内存中的什么地方?

java - 有没有办法获取 java.util.Scanner 失败的输入文件的行号(和列号)?

java - 如何使 @ManyToOne 实体成为 hibernate 中类的 ID

jquery - Bootstrap scrollspy : <a href ="page.html"> won't work

html - <body> 拉伸(stretch)到 100% 的内容,而不是浏览器大小