6

I have webproject which has images inside src/main/webapp folder. I would like to place images in different folder on the disk. But I have no idea how to manage requests to reach this images. Should I create some kind of httpServlet like shown here: http://balusc.omnifaces.org/2007/07/fileservlet.html

Or as I use Spring MVC with java configuration, there is more suitable and simpler way.

Looking forward for your suggestions.

3 Answers 3

10

Use the spring mvc support for static resources, its location attribute is an Spring Resource, so you could use file: prefix

<resources mapping="/resources/**" location="file:/my/external/directory/" /> 

or

@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**") .addResourceLocations("file:/my/external/directory/"); } } 

@See Spring Reference Chapter 6.4 The ResourceLoader for a table that list all prefixed for resources

Sign up to request clarification or add additional context in comments.

Comments

5

In my case I placed js and css resources in webapp and images in e://images/. For this case I use two mvc:resources mapping

<mvc:resources mapping="/resources/**" location="/resources/"/> <mvc:resources mapping="/images/**" location="file:e://images/"/> 

And locate the image of e: > images > abc.jpg using ....

<img src="../images/abc.jpg"/> 

You could try also <img src="/images/abc.jpg"/> or <img src="images/abc.jpg"> (If not work)

The css/js linked under webapp > resources > js > xyz.js like below.

<script type='text/javascript' src='../resources/js/xyz.js'></script> 

5 Comments

Hi, I have tried the above. Does not work with any of the syntax combinations. Getting 404 error. This is what I am adding in my dispatcher-servlet.xml file <mvc:resources mapping="/imagesa/**" location="file:/D://itm_img/" />
@techhunter try with the exact slash from my reference of location. I see you use an extra slash before your drive name (/D). Please remove extra slash and lower case of drive name.
Many thanks for your response. The avbove one worked me after changing the extension of image from ".jpg" to ".JPG". upvoted the answer.
@techhunter Thanks for vote. By the way you can add many more resources mapping and location in your xml.
Hi how to access this image from browser.
0

You canimplement WebMvcConfigurer in your main Application or Main class.

@SpringBootApplication @ComponentScan("com.your.package.controller") @Configuration public class ServicesApplication implements WebMvcConfigurer { // ServicesApplication is my main class String your_drive_location = "file:///D:/upload_dir/upload/"; // my file path @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/images/**").addResourceLocations(your_drive_location ); } public static void main(String[] args) { SpringApplication.run(ServicesApplication.class, args); } } 

I am using JSTL for showing:

<c:forEach items="${ListOfBrand}" var="brand"> // ListOfBrand is a Map <img src=" <c:out value="/images/"/>${brand.brand_image}" /> // Showing all image from brand table </c:forEach> 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.