JSP image relative path problem


I have a JSP which writes out HTML file using out.write(). The path to images in the HTML are relative to the HTML file and hence they don't get displayed as the browser is trying to figure it out using the JSP's cuurent path.

Is there a way for me to let the browser know the correct path based on which it should compute the image's complete location.

I have to use the out.write() as the HTML is read in and updated by the JSP.

- Kamal
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

what is your current out.write() statement

I would use something like

out.write("<img src=\"../relative/path/to/img.jpg\">");

xviperAuthor Commented:
Here is what the out.write looks like

FileInputStream in = new FileInputStream('../path/to/afile.html');
while((lenght  = in.read(buffer)) != -1) {
   String s = new String(buffer,0,lenght);

I have to do it this way because, my future code will be modifying the file data after reading it in.

the 'afile.html' has <img src="someimg.jpg"> in it. The src is relative to 'path/to/' where the html file is located. But the jsp making the call to out.write is in some other location and hence the browser is unable to render the images.


  //to include the header page in my app we use
    ServletContext servletContext = getServletContext();
    RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher("/folderinROOTdir/fileName.html");

HTML5 and CSS3 Fundamentals

Build a website from the ground up by first learning the fundamentals of HTML5 and CSS3, the two popular programming languages used to present content online. HTML deals with fonts, colors, graphics, and hyperlinks, while CSS describes how HTML elements are to be displayed.

xviperAuthor Commented:
It would help if I knew a way to transfer the data (html file read in and modified) from one JSP to another in a chaining fashion. In that case I can have JSP in the same location as the HTML and it would just output the data it gets from another JSP. The browser would take location relative to the JSP in the same location as the HTML and things would work out just fine.

- Kamal
do a forward.
    RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/fileName.jsp");

now that jsp can forward to another too.

if file.html has the img src and a jsp/servlet is reading it in from a completely different path than I would suggest changing your img src to full path http://yousite.com/imgs/img.jpg

xviperAuthor Commented:
I cannot change the image src as the HTML along with the images are uploaded by the user (in a zip file which I unzip). I don't want to put the HTML parsing and processing code in a JSP that gets duplicated in each of the directory containing the HTML.

I figure, if I could some how process the HTML and the send the processed HTML to a simple JSP whose job is to just output the processed HTML, then it might solve my problem.  I was thinking in the link of chaining, using requestDispatcher.forward(req,res).


1. I am not sure how to pass large file from one JSP to another (can I use setAttribute() and getAttribute()? Will it be too large to put the entire HTML file data in them)

2. If there is a better solution, as the only purpose the second JSP is for setting the browser's relative path to the same place where the HTML is.

- K
can you map your serlvet to something that in the user's directory?

You can attach the file to the request object and retreive it.

using setAttribute and getAttribute().  I have attached full html onto the request.

I don't understand the second point.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
>img src to full path http://yousite.com/imgs/img.jpg

expanding on that suggestion -

put all your image in a folder under ROOT/images/
as ROOT/images/a.gif
    ROOT/images/b.gif etc.

In your html whenever yourefer an image call it as

<img src="http://www.ursite.com/images/a.gif">

xviperAuthor Commented:
I got it to working with sending the enitre HTML(after processing) in BufferedInputStream format using setAttribute and getAttribute and sendRedirect to the second JSP which just outputs the BufferedInputStream. But since the second JSP is located in the same path as the HTML page, the image links work.

CJ, I think you should get the points for all the trouble and help.

- K
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.