image not displayed in jsp with spring
java, jsp, maven, spring-mvc, url
Solution
What you want to do is add this line in your spring servlet-context xml configuration.
<mvc:resources mapping="/images/**" location="/images/" />
The `mvc` xml namespace is at `xmlns:mvc="http://www.springframework.org/schema/mvc"`
The `resources` tag basically tells Spring to handle requests to the declared mapping by serving up a named file from the declared location, instead of going through your controller stack. The mapping can also be used to serve up any resource: css, js, pdf, etc.
You don't need multiple `<mvc:resources>` tags, just one with a generic mapping, eg. /resources/**, and a comma separated list of locations, eg. /resources/css/, /resources/js/.
<mvc:resources mapping="/resources/**" location="/resources/images/, /resources/css/" />
The `<resources>` tag was introduced in spring 3.0.4, so you need at least that version of Spring and of the xsd. You can use
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd`
Also, as JB Nizet says, you should reference your image as
<img src="<c:url value='/images/top.jpg'/>"/>
for a relative path.
Problem
I am new to spring with jsp i am basically trying to display an image in my jsp ``` <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>JSP-Page</title> </head> <body> <img src="images/top.jpg"> </body> </html> ``` Spring-servlet xml : ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- Enable annotation driven controllers, validation etc... --> <mvc:annotation-driven /> <mvc:resources location="/images/" mapping="/images/**"/> <!-- Application controllers package --> <context:component-scan base-package="net.ignou.onlinetest.controller" /> <bean id="viewoseesolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/online_test" /> <property name="username" value="root" /> <property name="password" value="root" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="annotatedClasses"> <list> <value>net.ignou.onlinetest.domain.Question</value> <value>net.ignou.onlinetest.domain.Student</value> <value>net.ignou.onlinetest.domain.Answer</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">none</prop> </props> </property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> </bean> <bean id="questionDao" class="net.ignou.onlinetest.dao.daoImpl.QuestionDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="loginDao" class="net.ignou.onlinetest.dao.daoImpl.LoginDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="answerDao" class="net.ignou.onlinetest.dao.daoImpl.AnswerDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="service" class="net.ignou.onlinetest.service.serviceImpl.ServiceImpl"> <property name="questionDao" ref="questionDao"/> </bean> </beans> ``` My web.xml ``` <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Person Detail</display-name> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> ``` I am using maven.My image file is located at online-test\src\main\webapp\images and my jsp page is in online-test\src\main\webapp\web-inf\views I also tried replacing the src as `<img src="../../images/top.jpg">` but it didnt work i also tried moving my jsp and image to webapp folder directly also but no use. Is there anything im doing wrong how exactly does spring handle img requests?