【发布时间】:2016-06-28 17:31:07
【问题描述】:
我正在使用 Spring MVC 4.2.5.RELEASE 创建一个 web 应用程序,我有这个基本的 java 注释配置,而不使用 web-xml 文件或 context.xml 文件。
到目前为止,当我在浏览器中访问视图时,应用程序可以正常加载视图,但 CSS 和 JavaScript 文件没有加载,它在谷歌控制台中显示找不到资源并显示 404 错误代码。
这是我的 JSP,我将路径放在 src 标记 (index.jsp) 中:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="cp" value="${pageContext.request.servletContext.contextPath}" scope="request" />
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring 4 Web MVC via Annotations</title>
<script src="${cp}/resources/js/js.js"></script>
<link rel="stylesheet" type="text/css" href="${cp}/resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="../resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="/resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="resources/css/site.css" />
</head>
<body>
<h4>Spring 4 Web MVC via Annotations</h4>
Spring says: <span class="blue">${msg}</span>
</body>
</html>
如果您查看代码,我尝试使用像这样的四种不同方式调用它们
<link rel="stylesheet" type="text/css" href="${cp}/resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="../resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="/resources/css/site.css" />
<link rel="stylesheet" type="text/css" href="resources/css/site.css" />
但它仍然总是说找不到源。
我知道 WEB-INF 文件夹中的所有内容都是私有的,但我已经阅读了很多教程,他们的资源都在该文件夹中,并且他们在 Config.JAVA 文件中配置了这个方法,以便能够使用它们.
这是我的 Java 配置中的 Resource Handler:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
这是我的配置类。我正在使用 Java 注释,但我没有任何 context.xml 或 web.xml 文件
我的配置类:
@Configuration
@ComponentScan({"config", "controllers"})
@EnableWebMvc
public class ConfigMVC extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Bean
public UrlBasedViewResolver setupViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
}
我的WebInitializer 班级
public class WebInicializar implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(ConfigMVC.class);
ctx.setServletContext(servletContext);
Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
}
}
我的控制器
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index(ModelMap map) {
map.put("msg", "Hello Spring 4 Web MVC!");
return "index";
}
}
这是我的项目结构
MyWebAppName
--Web Pages
--WEB-INF
--jsp
index.jsp
--resources
--js
js.js
--css
site.css
--Source Packages
--config
ConfigMVC.java
WebInitializaer.java
【问题讨论】:
标签: java spring jsp spring-mvc