1

我知道以前有人问过类似的问题,但我仍然无法解决这个问题。

我有一个 Spring MVC 网站,其文件树如下所示:

webapp\
     resources\
        style.css
        myimg.png
        post.html
     Main.html

我的 servlet 将 Main.html 设置为其主页,并使用我使用这些标签提到的样式和图片正确加载:

<link rel="stylesheet" type="text/css" href="resources\style.css"
    media="screen" />
<img src="resources\myimg.png" style="padding-left: 25px" />

我也在我的配置中定义(我正在使用类配置):

public class ApiServletConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }
}

当我post.htmlMain.html文件调用时加载没有样式和图像。不知道我还应该做什么才能正确加载它。

post.html 有这些标签:

<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<img src="myimg.png" style="padding-left: 25px"/>

另外,我尝试了resources\style.cssresources\myimg.png

控制器调用如下所示:

@RequestMapping(value = "/{id}/view", method = RequestMethod.GET, produces = "text/html")
public String getPostByIdHtml( @PathVariable String id) throws IOException {
    return "/resources/post.html";
}

Main.html 的链接如下所示:http://mysite.com/100/view

为了加载css和图像,我还应该做什么。谢谢您的帮助!

编辑: 在评论之后,这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> /Main.html

我猜不是很有趣。我有 Java 代码中的初始化,可能更有趣:

public class WebInit implements WebApplicationInitializer {

@Override
public void onStartup(final ServletContext container) {
    final AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();

    context.register(ApiServletConfig.class);

    final ServletRegistration.Dynamic dispatcher = container.addServlet("api-dispatcher",
                                                                        new DispatcherServlet(context));

    dispatcher.setLoadOnStartup(1);
    dispatcher.addMapping("/api/*");
}
}
4

2 回答 2

1

假设您的 css 和图像文件位于文件夹资源上,看起来像这种情况,根据您的文件夹结构,我相信您应该按如下方式更新您的代码:

<link rel="stylesheet" type="text/css" href="/resources/style.css" media="screen" />
<img src="/resources/myimg.png" style="padding-left: 25px"/>
于 2013-06-16T15:04:56.917 回答
0

问题是页面更改了网址。它看起来像:

http://[web-server]/[app-name]/api/post/100/view

因为我正在打一个 json 电话。

如果我将 css 路径更改为这样的东西,它可以工作!

<link rel="stylesheet" type="text/css" href="../../../resources/style.css" media="screen" />

于 2013-06-16T15:25:26.200 回答