我正在尝试创建一个示例Spring MVC项目但是静态文件没有被加载。我得到了下面提到的错误。
http://localhost:8080/BPMEI/static/css/bootstrap.css无法加载资源:服务器响应状态为404(未找到)
如果有人可以帮助我解决这个问题,我将不胜感激。
package com.dgsl.bpm.configuration;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.dgsl.bpm")
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/");
}
}
package com.dgsl.bpm.configuration;
public class WebInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(WebConfiguration.class);
ctx.setServletContext(container);
ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Student Enrollment Form</title>
<link href="<c:url value='/static/css/bootstrap.css' />" rel="stylesheet"></link>
</head>
<body>
答案 0 :(得分:1)
可能是你制作了错误的地图。
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
这段代码应该可行,我在本地机器上测试过。 addResourceLocations(“/ static /”)最后一个斜杠是强制 在sping-core-4.2.5-release.jar中,StringUtils.java具有以下代码
public static String applyRelativePath(String path, String relativePath) {
int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR);
if (separatorIndex != -1) {
String newPath = path.substring(0, separatorIndex);
if (!relativePath.startsWith(FOLDER_SEPARATOR)) {
newPath += FOLDER_SEPARATOR;
}
return newPath + relativePath;
}
else {
return relativePath;
}
}
如果不以斜杠结尾,此方法将返回 relativePath
仅供参考,当我查看您的附图时,我在您的项目中找到了“bootstrap.min.css”。不要忘记使用正确的文件名。我希望我的建议可以帮到你
答案 1 :(得分:1)
到F2:如果你让它下载而不是我下载css文件并告诉Spring它们在哪里,你必须让js文件或某些东西发布到不受你自己控制的网页。建筑物所有者的目的是如何在Spring MVC项目中加载静态文件。我认为问题出在addResourceLocations
的代码上,它应该是addResourceLocations ("classpath:/static/");
答案 2 :(得分:0)
如下所示更改addResourceHandlers定义并尝试: -
DataGridView
答案 3 :(得分:0)
请使用网址中的上下文路径:
array(4) {
[0]=>
array(2) {
["id"]=>
int(73)
["label"]=>
string(1) "M"
}
[1]=>
array(2) {
["id"]=>
int(72)
["label"]=>
string(1) "L"
}
[2]=>
array(2) {
["id"]=>
int(68)
["label"]=>
string(2) "2X"
}
[3]=>
array(2) {
["id"]=>
int(69)
["label"]=>
string(2) "3X"
}
}
这将为您提供网址值:
<c:url value='${pageContext.request.contextPath}/static/css/bootstrap.css' />
如果有效,请告诉我。
答案 4 :(得分:0)
更改addResourceHandlers,例如
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/");
}
并且还更改css文件名'bootstrap.min.css'