Everyone here has been very helpful to me so I'll take a crack at it:
You're using the include directive. Basically, you're telling the container to take everything in that 'links.inc' file and paste it into the JSP which results in a servlet generated with the contents of your 'links.inc' file embedded in it. Since you aren't changing the JSP at all, the container is none the wiser because the JSP hasn't changed.
What you probably want is the include standard action, which looks something like this: <jsp:include page="/jsp/include/links.inc" />
The difference is that, at runtime, the container will insert the contents of this file at the point in your JSP where you used this include action.
The include directive includes the information at JSP compile time the JSP standard action includes it at runtime. Make sense?
The include directive and include action are not necessarily inter-changable. They act completely differently (translation-time vs run-time inclusion) and you can't just recommend using the action over the directive without knowing what the purpose of the inclusion is.