JSP在使用ResourceHandlerRegistry.addResourceHandler(基于Java的webConfig)时无法找到css文件

时间:2013-11-01 14:40:06

标签: java html css spring jsp

这是我把我的css文件放在哪里:

enter image description here

这是我注册此资源的方式:

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

这就是我从JSP引用这个css的方式:

<link type="text/css" href="/css/bootstrap.css" rel="stylesheet"/>

我可以看到包含内容但没有样式的JSP页面。

我认为错误是在引用但我无法找到它。我也尝试了这些,但不起作用:

<link type="text/css" href="../css/bootstrap.css" rel="stylesheet"/>

<link type="text/css" href="/resources/css/bootstrap.css" rel="stylesheet"/>

<link type="text/css" href="<%=request.getContextPath() %>/css/bootstrap.css" rel="stylesheet"/>

<link type="text/css" href="<%=request.getContextPath() %>/resources/css/bootstrap.css" rel="stylesheet"/>

有什么想法吗?

编辑:现在我已将css文件夹移至WebContent。看起来像这样:

enter image description here

它仍然不起作用。我应该注册什么ResourceHandler?

registry.addResourceHandler("/WEB-INF/**").addResourceLocations("/WEB-INF/"); ?

我应该如何从JSP引用css?

2 个答案:

答案 0 :(得分:1)

默认情况下,资源处理程序不会在类路径上查找资源。它在webapp中查找它们。

创建一个名为resources的文件夹,并将其放入/src/main/webapp。然后将cssjs等文件夹放在那里。

答案 1 :(得分:1)

在默认情况下无法访问src下的文件,您应该将这些资源放入WebContent目录。


资源通常意味着配置属性如属性和xml,它们将被使用 java代码,资产通常意味着可以直接通过浏览器访问,注意WEB-INF受到保护,你需要把你的css目录放在WebContent下,除了 WEB-INF

例如,您可以将您的css目录放在/WebContent/assets/

并在jsp页面的头部添加这些代码

<%
String basePath = request.getScheme() + "://"
        + request.getServerName() + ":" + request.getServerPort()
        + request.getContextPath();
%>

<link type="text/css" href="<%=basePath%>/assets/css/bootstrap.css" rel="stylesheet"/>

使用相对路径不好!!