Ошибка загрузки статических ресурсов - Spring MVC
В моем приложении Spring MVC я хочу обслуживать статические ресурсы, используя конфигурацию на основе аннотаций Java.
У меня есть класс конфигурации с аннотациями @Configuration, @EnableWebMvc и @ComponentScan, и мой класс реализует WebMvcConfigurer.
//set up view
@Bean
public InternalResourceViewResolver viewResourceViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// TODO Auto-generated method stub
registry
.addResourceHandler("/URLToReachResources/**")
.addResourceLocations("/WEB-INF/resources/");
}
Посмотрите на мой ServletInitilazier
public class MacsCloneApplicationIntitalizer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// TODO Auto-generated method stub
//create a dispatcher servlet object
AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
webApplicationContext.register(MacsCloneAppConfig.class);
//register dispatcher servlet to context
DispatcherServlet dispatchServlet = new DispatcherServlet(webApplicationContext);
ServletRegistration.Dynamic myCustomServlet = servletContext.addServlet("myDispatchServlet",
dispatchServlet);
//configurations
myCustomServlet.setLoadOnStartup(1);
myCustomServlet.addMapping("/customercare/*");
}
Вот как я структурировал свое приложение
Не уверен, где я ошибаюсь, я использовал maven-archtype-webapp версии 1.0 при создании проекта и Spring WebMvc 5.3.22 в качестве веб-зависимости.
Вот как выглядит мой JSP, и мои ресурсы не загружаются.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>MIS Portal</title>
<link href="<c:url value="/URLToReachResources/css/ie.css"/>" rel="stylesheet" type="text/css"/>
<link href="<c:url value="/URLToReachResources/css/um.css"/>" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="headerimg"><img src="<c:url value="/URLToReachResources/images/topstripo2_11.jpg"/>" alt="O2" /><a href="/home"><img src="<c:url value="/URLToReachResources/images/misportal.jpg"/>" border="0" style="margin-left: 2em" alt="O2 Customer Care"/></a></div>
<!-- <p class="right_align"><a href="home.do?method=displayHomePage"><bean:message key="home"/></a></p>-->
<br />
<tiles:insert attribute="left-nav" />
<tiles:insert attribute="body-content" />
<br class="clear" />
<hr />
<label class="footer">Delivered by O2 ISD - Data Delivery - GAS Team</label>
</body>
</html>
Заранее спасибо.
1 ответ
Я смог исправить указанную выше проблему, используя класс AbstractAnnotationConfigDispatcherServletInitializer.
public class MacsCloneApplicationIntitalizer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
Class arr[] = { MacsCloneAppConfig.class };
return arr;
}
@Override
protected String[] getServletMappings() {
String arr[] = { "/customercare/*" };
return arr;
}
}