What does it mean? and What is it for?
It is used to map a canonical name for a servlet (not an actual Servlet class that you've written) to a JSP (which happens to be a servlet). On its own it isn't quite useful. You'll often need to map the servlet to a url-pattern as:
All requests now arriving at
/test/* will now be serviced by the JSP.
Additionally, the servlet specification also states:
jsp-file element contains the full
path to a JSP file within the web
application beginning with a “/”. If a
jsp-file is specified and the
load-onstartup element is present,
then the JSP should be precompiled and
So, it can be used for pre-compiling servlets, in case your build process hasn't precompiled them. Do keep in mind, that precompiling JSPs this way, isn't exactly a best practice. Ideally, your build script ought to take care of such matters.
Is it like code behind architecture in ASP .NET?
No, if you're looking for code-behind architecture, the closest resemblance to such, is in the Managed Beans support offered by JSF.