I see a feature in NetBeans for selecting a JSP
for a Servlet
and the result XML in web.xml
is like this:
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 ajsp-file
is specified and theload-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.
JSPs are servlets. JSP is a templating technology that parses the .jsp file and generates a servlet .java file. Once that's done, the .java file is compiled into a .class file that runs in the servlet/JSP engine context.
All the web.xml file is doing is associating a .jsp file with a servlet name. There's more: you have to map that .jsp to a URL so the servlet/JSP engine can know when to invoke it.
I don't know ASP or .NET well enough to say whether this is the same as "code behind".
JSPs are kind of servlet. JSP pages are compiled into servlet. This servlet run in the servlet container provided by any java web server.
In web.xml, <servlet>
tag used to name the name servlet class and jsp file. Then you can map those servlet and jsp file according to your own URLs.
<servlet>
<servlet-name>hello</servlet-name>
<jsp-file>/jsp/hello.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
If your hello.jsp file located under JSP folder. When you try to open the URL with /helloworld. It will open the page hello.jsp.