Servlet JSP web.xml

ehsun7b picture ehsun7b · Jun 19, 2011 · Viewed 98.3k times · Source

I see a feature in NetBeans for selecting a JSP for a Servlet and the result XML in web.xml is like this:

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <jsp-file>/index.jsp</jsp-file>
</servlet>

What does it mean? And what is it for? Is it like code behind architecture in ASP .NET?

Answer

Vineet Reynolds picture Vineet Reynolds · Jun 19, 2011

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:

<servlet>
    <servlet-name>TestServlet</servlet-name>
    <jsp-file>/index.jsp</jsp-file>
</servlet>
<!--mapping-->
<servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/test/*</url-pattern>   
</servlet-mapping>

All requests now arriving at /test/* will now be serviced by the JSP.

Additionally, the servlet specification also states:

The 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 loaded.

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.