【问题标题】:How to place images/CSS in spring-mvc web app?如何在 spring-mvc 网络应用程序中放置图像/CSS?
【发布时间】:2016-02-18 01:54:00
【问题描述】:

我使用 Netbeans 创建了一个 Spring MVC Web 应用程序。我有一个简单的控制器和 JSP 视图。 JSP 视图显示正确,但图像未呈现。我的目录结构如下所示:

enter image description here 在我的 *.jsp 页面中,不渲染的图像是这样引用的:

在 Spring MVC 中,我应该将 JSP 视图引用的文件(如图像、CSS、JS 等)放在哪里?

我像这样应用了 AppConfig 文件。

public void addResourceHandlers(ResourceHandlerRegistry registry) {

@Bean
public ViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/view/");
    viewResolver.setSuffix(".jsp");

    return viewResolver;
}

【问题讨论】:

    标签: java css spring jsp spring-mvc


    【解决方案1】:

    在您的 Spring MVC 应用程序中启用 <mvc:default-servlet-handler />。您可以使用 注释 启用,如下所示:

    @Configuration
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    }
    

    或在 XML 中为:

    <mvc:default-servlet-handler/>
    

    要了解更多信息,请查看need and use of mvc:default-servlet-handler

    【讨论】:

      【解决方案2】:

      添加这些行以指定静态资源的路径。

      @Override
      public void addResourceHandlers(ResourceHandlerRegistry registry) {
          registry.addResourceHandler("/assets/**").addResourceLocations("/WEB-INF/assets/")
      }
      

      等效的 XML 配置:

      <mvc:resources mapping="/assets/**" location="/WEB-INF/assets/" />
      

      然后在你的 *.jsp 页面中你可以这样做,例如:

      <link href="<c:url value="assets/css/myCss.css" />" rel="stylesheet"> 
      <script src="<c:url value="assets/js/myJs.js"/>"></script>
      

      【讨论】:

        【解决方案3】:

        您为AppConfig 发布的代码是。 . .令人困惑且在语法上无效。

        一个简单的方法就是这样

        @Configuration
        public class AppConfig extends WebMvcConfigurationSupport {
            //locate and serve .jsp resources
            @Bean
            public InternalResourceViewResolver getInternalResourceViewResolver() {
                InternalResourceViewResolver resolver = new InternalResourceViewResolver();
                resolver.setPrefix("/WEB-INF/view/");
                resolver.setSuffix(".jsp");
        
                return resolver;
            }
        
            //locate our static resources and serve them
            @Override
            public void addResourceHandlers(final ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/assets/**").addResourceLocations(
                    "/WEB-INF/assets/");
            }
        }
        

        然后可以通过http://the.domain/apppath/assets访问您的资源

        【讨论】:

          猜你喜欢
          • 2011-05-09
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          • 2015-05-23
          • 2021-10-05
          • 1970-01-01
          • 2013-09-27
          • 1970-01-01
          相关资源
          最近更新 更多