Reputation: 4866
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?
Upvotes: 14
Views: 112007
Reputation: 2676
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.
Upvotes: 6
Reputation: 76709
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.
Upvotes: 39
Reputation: 308743
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".
Upvotes: 8