2

How to use static resources in spring mvc? I just want to insert some images in jsp. In which place I must locate my resources? Last time I used to add mvc:recources in servlet-context, but it shows me few errors with mapping.

I'm still in trouble. I've made another question. Please, HALP. https://stackoverflow.com/questions/18020129/troubles-with-static-resources-and-mvcresources

My config:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">



    <context:annotation-config />
    <context:component-scan base-package="net.babobka.blog" />


    <import resource="../../db/db-config.xml" />



    <bean id="tilesConfigurer"
        class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
    </bean>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.tiles2.TilesView" />
    </bean>

</beans>

My jsp:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<strong><h1>
        <a href="${pageContext.request.contextPath}">Blog</a>
    </h1></strong>
<p>
    <small>With Spring MVC</small><img src='<c:url value="/static/img/logo.gif"/>' />

And part of controller:

import org.springframework.stereotype.Controller;
import net.babobka.blog.domain.Content;
import net.babobka.blog.service.ContentService;
import net.babobka.blog.domain.News;
import net.babobka.blog.service.NewsService;
import net.babobka.blog.domain.Tags;
import net.babobka.blog.service.TagsService;
import java.util.Map;
import net.babobka.blog.form.SearchForm;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class HomeController {

    @Autowired
    private ContentService contentService;
    @Autowired
    private NewsService newsService;
    @Autowired
    private TagsService tagsService;

    long HM = 3;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String listContacts(Map<String, Object> map,@ModelAttribute("search") SearchForm query, BindingResult result) {
        long nums = newsService.getNumRows();
        map.put("old", HM);
        map.put("news", new News());
        map.put("nums", nums);
        map.put("newsList", newsService.getSomeNews(0, HM));

        return "content";
    }

    @RequestMapping(value = "/about", method = RequestMethod.GET)
    public String getAboutPage(Map<String, Object> map,@ModelAttribute("search") SearchForm query, BindingResult result) {

        map.put("news", new News());
        map.put("newsList", newsService.getAboutPage());

        return "about";
    }

Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- The definition of the Root Spring Container shared by all Servlets 
        and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>

        <param-value>
        /WEB-INF/spring/root-context.xml
        /WEB-INF/spring/application-security.xml
        </param-value>
    </context-param>



    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>



    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>




</web-app>
3
  • Here is already have answer.Check it. stackoverflow.com/questions/14751597/… Commented Aug 1, 2013 at 11:52
  • Ok. But I'm steel having 404 after adding <mvc:resources mapping="/static/**" location="/static/" /> <mvc:default-servlet-handler /> in servlet-context Commented Aug 1, 2013 at 12:15
  • No mapping found for HTTP request with URI [/blog/] in DispatcherServlet with name 'appServlet'. As I said. Commented Aug 1, 2013 at 12:16

2 Answers 2

0

If you are getting 404 error means requested resource is not applicable it means you have mapping error,After this mapping there need to check also controller-servlet.xml mapping also. If you will get error provide your code.

Try this

<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
 </servlet>

<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

Controller-servlet.xml
<bean id="urlMapping" class="org.springframework.Handler.SimpleHandlerMapping">
<property name="mapping">
<props><prop key="app.do">hello</prop></props></property></bean>
Sign up to request clarification or add additional context in comments.

5 Comments

IOException parsing XML document from ServletContext resource [/WEB-INF/app-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/app-servlet.xml]
check properly that you have provided your view file under webcontent not inside web-inf folder.Check properly.I am also providing the anoyther mapping file in same answer.
if you still getting 404 error means you providing your recourse file under web-inf folder that is incorrect way.
@Rohit Jai Please check here is some problem.
My image is in webapp/static/img/logo.gif
0

Envious is right , that link contain an example you can see that. By the way , you can modify your code from the below snippet of code

    <?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">


    <context:annotation-config />
    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

    <context:component-scan base-package="com.ashish.stack.ques.controller"
        annotation-config="true"
        scope-resolver="org.springframework.context.annotation.AnnotationScopeMetadataResolver">
        <context:include-filter type="annotation"
            expression="org.springframework.stereotype.Controller" />
    </context:component-scan>



    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass">
            <value>
                org.springframework.web.servlet.view.tiles2.TilesView
            </value>
        </property>
    </bean>
    <bean id="tilesConfigurer"
        class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
    </bean>

</beans>

tiles.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
    <definition name="base.definition"
        template="/WEB-INF/jsp/layout.jsp">
        <put-attribute name="title" value="" />
        <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" />
        <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" />
        <put-attribute name="body" value="" />
        <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" />
    </definition>

    <definition name="show" extends="base.definition">
        <put-attribute name="title" value="Show Image" />
        <put-attribute name="body" value="/WEB-INF/jsp/show.jsp" />
    </definition>

</tiles-definitions>

show.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
  Image:
  <img src='<c:url value="/static/image/radar-icon.png"/>' />
</body>
</html>

controller

    package com.ashish.stack.ques.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class IndexController {

    @RequestMapping(value="/show.do",method=RequestMethod.GET)
    public void index(){
        System.out.println("Got an image");
    }
}

I have modified my code , please follow the code and let me know , you get your solution or not :)

9 Comments

No, I don't. I'm still having 404
My image is in webapp/static/img/logo.gif
Will you please provide us code of your controller class , jsp{where you are trying to show image} , and spring-config file. That will help us to resolve your issue.
Ok. It's in topic question
Hi I made my application based on your requirement , it's working fine in my side .. I am posting my code , just follow that I hope you will get your issue solution.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.