I can tell the tomcat where to resolve relative paths against.
It isn't tomcat that you need to tell. It's the browser.
When you do a server side forward, the browser has no idea what file you're serving up to it. It only knows about the URL that it used to hit the controller.
I keep it simple by always creating url-patterns that are not nested:
<url-pattern>/SomePage</url-pattern>
As opposed to:
<url-pattern>/someDirectory/SomePage</url-pattern>
That way, all of my links can be relative to the root of the app:
src="images/myImage".
The second approach that I mentioned is probably the most robust because it won't matter what the url-pattern of the controller is.
Request.getContextPath will aways get the user to the root of the app.
I can then make all the paths relative to that.
Try right clicking on one of your broken image links and viewing it's properties. This will show you where the browser is looking for the image.