2016-05-06 5 views
1

Я пытаюсь отобразить изображение на странице jsp. Я развиваю использование весенней безопасности/mvc.Невозможно отобразить изображение на странице jsp

Here's the folder structure это часть страницы JSP:

<a href="/images/logo.png"> 
<img src="/images/logo.png" alt="logo"> 
</a> 

и это конфигурация:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages ="...") 
public class HelloWorldConfiguration extends WebMvcConfigurerAdapter { 

@Bean(name="HelloWorld") 
public ViewResolver viewResolver() { 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
    viewResolver.setViewClass(JstlView.class); 
    viewResolver.setPrefix("/WEB-INF/views/"); 
    viewResolver.setSuffix(".jsp"); 

    return viewResolver; 
} 

/* 
* Configure ResourceHandlers to serve static resources like CSS/ Javascript etc... 
* 
*/ 
@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/static/**").addResourceLocations("/static/"); 
     registry.addResourceHandler("/images/**").addResourceLocations("/images/"); 

} 


@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

} 

когда я запускаю изображение не отображается. Я пробовал много предложений, никто из них не работал, я также пробовал относительные и абсолютные пути.

+0

Могли бы вы разместите свою структуру папок? Вы хотите, чтобы при щелчке вашего изображения просто откройте его? – Oldskultxo

+0

Я не вижу изображение ни на странице jsp, ни когда я нажимаю на него, я редактировал сообщение, чтобы вы могли видеть структуру папок. – Najoua

+0

Хорошо! и ваш jsp, где находится? Вы могли бы открыть папку webinf? – Oldskultxo

ответ

1

Несомненно, проблема заключается в вашей файловой структуре. Откройте инструменты разработчика, используя CTRL + SHIFT + I (в Mozilla или Chrome) и проверьте элемент изображения. Разумеется, ссылка нарушена, что означает, что вы пытаетесь загрузить изображения из неправильного местоположения (или несуществующего).

Используйте контекстный путь:

<img src="${pageContext.request.contextPath}/images/logo.png"/> 
+0

Здесь есть лучшее решение, которое позволяет избежать необходимости определять корень контекста для каждого изображения. http://stackoverflow.com/questions/4764405/how-to-use-relative-paths-without-including-the-context-root-name –

1

соответствии с конфигурацией ваше изображение должно быть в корне веб-приложения в папку изображений, ребенок/logo.png. Ваш тег img должен включать корневой контекст сервлета. Вы должны добавить корневой контекст, например, используя библиотеку тегов ядра jsp

<c:url value="/images/logo.png" var="logo"/> 
<a href="${logoUrl}"> 
<img src="${logoUrl}" alt="logo"> 
</a> 

NB. Метод добавления контекста зависит от технологии рендеринга. Если вы используете простой HTML, вы можете вручную добавить корень контекста. Однако это жёстко значения и является разработками В кошмаре, как вам нужно, чтобы изменить значение на каждой странице, когда вам необходимо изменить контекст

<a href="/myapp/images/logo.png"> 
<img src="/myapp/images/logo.png" alt="logo"> 
</a> 
1

попробуйте использовать относительный путь к изображению:

<a href="../../images/logo.png"> 
    <img src="../../images/logo.png" alt="logo"> 
</a>