gpt4 book ai didi

spring-mvc - 配置 spring 以在 Controller 方法上返回静态文件

转载 作者:行者123 更新时间:2023-12-05 08:00:07 26 4
gpt4 key购买 nike

我如何告诉 Spring MVC 在运行时(在方法中)返回静态资源?

更好地解释。我配置了我的应用程序(spring-mvc 3.2.4)来处理一些静态资源并使用两个 View 解析器,FreeMaker 和 Json。我希望在 Controller 方法中我能够对 spring-mvc 说他必须在静态资源中获取文件,尽管 View 解析器之一尝试 hadle。

我的配置类如下所示:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.xxxx", excludeFilters = @Filter(Configuration.class)})
public class WebConfig extends WebMvcConfigurerAdapter {
...
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/app.js").addResourceLocations("/app.js");
}
...
@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
// Define the view resolvers
List<ViewResolver> resolvers = new ArrayList<ViewResolver>();

JsonViewResolver jsonViewResolver = new JsonViewResolver();

FreeMarkerViewResolver freeMarkerViewResolver = new FreeMarkerViewResolver();
freeMarkerViewResolver.setSuffix("rtl");

resolvers.add(jsonViewResolver);
resolvers.add(freeMarkerViewResolver);

ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
resolver.setContentNegotiationManager(manager);
resolver.setViewResolvers(resolvers);
return resolver;
}
}

我的 Controller :

@Controller
@RequestMapping("/")
public class JSViewController {

@RequestMapping(value="*.js")
public String resolveArquivo(HttpServletRequest request){
// Here I would be able to say to sprint to return a static resource instead of hadle it with one of the View Resolvers.
return request.getRequestURI().replace(request.getContextPath(),"");
}
}

最佳答案

如果您尝试分别访问静态和动态数据会更好,因为访问静态数据的 Controller 会浪费您的资源,增加延迟。

例如。如果你想从 jsp 访问 js,那么你可以使用 JSTL 标签库,它会动态返回输出目录,你可以从那里获取静态资源。

这使您可以灵活地缓存静态资源(Akamei 或其他资源)或从 apache 而不是 tomcat 提供它们。

如果你真的想从 Controller 渲染你的静态资源,那么你需要有一个拦截器,它可以在任何 View 解析器之前调用,它会识别请求的资源是否是静态的,并相应地渲染。但是这会为每个 HTTP 请求调用,这是不可取的。

关于spring-mvc - 配置 spring 以在 Controller 方法上返回静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com