我很难通过JSP使用Spring MVC来显示图像。我知道还有其他非常类似的问题,但这些问题的答案似乎都没有。
我有一个非常简单的项目,只显示两个java文件和一个JSP文件。这是我的WebMvcConfigurerAdapter类:
@Configuration
@ComponentScan(basePackages="com.rigatron.rigs4j")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver getViewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
这是我的主页控制器类:
@Controller
public class HomeController {
@RequestMapping(value="/")
public ModelAndView test(HttpServletResponse response) throws IOException {
return new ModelAndView("home");
}
以下是我试图显示图像的JSP文件中的行:
<img src="/resources/old.jpeg" alt="Photo of Youthful William" id="pic" />
我的/ resources /文件夹中有old.jpeg。页面的其余部分显示正常,但此处仅显示alt文本。
我正在使用Tomcat8部署此应用程序,我的这行是我的Maven pom文件,每次构建时都会将生成的WAR文件复制到Tomcat的webapps目录中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<outputDirectory>C:\my\local\dir\tomcat8\webapps</outputDirectory>
</configuration>
</plugin>
因此,当我使用浏览器导航到localhost:8080 / myprojectname时,JSP文件的其余部分正确显示,但照片不是,只有alt文本。任何有关此问题的帮助都将不胜感激。
答案 0 :(得分:2)
好的,我弄清楚我哪里出错了。这篇SO帖子指出了我正确的方向:
基本上,我试图从Web服务器的根目录而不是我的webapp的根目录加载资源。因此,为了引用webapp的根,我将这两行包括在内:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<img src="<c:url value='/resources/old.jpeg'/>" alt="Photo of Youthful William" id="pic" />
为了使用这个JSTL标记,我必须包含这个Maven依赖项:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
我为过早地发布这个问题而道歉,但是我会把它留下来希望它可以帮助别人。