Re: Servlet Question
pmz wrote:
I was wondering whether it's possible to manage such solution:
1. I create simple servlet (let me call it MyServlet) with all of
those base methods (doPost, doGet, processRequest etc.)
2. I've mapped the servlet in web.xml, as following:
<servlet>
<servlet-name>MyServlet</servlet-name>
<jsp-file>/useServlet.jsp</jsp-file>
</servlet>
It's largely unnecessary to map JSPs in the web.xml. What's confusing
is that our comments say you've written a servlet, MyServlet, whose
source presumably resides in MyServlet.java, but you map it to a JSP
file. I don't understand. What is this JSP file?
3. I'd like to play with database data and pass it into the
userServlet.jsp. I've tried to do it via init() overridden method,
with getServletContext().setAttribute("MyVar", Object), with no use -
the ${MyVar} is pretty empty.
How are you accessing servlet methods from a JSP?
Don't do that.
What am I doing wrong? I'm not happy when I need to code HTML with
println() inside the servlet, anyway I've done it before, but I'm not
able to detect what I've forgot or what is missing in my configs.
Part one is the confusion over whether you're mapping a servlet (.java
source) or a JSP (.jsp source). If it's a .java servlet, it shouldn't
have any HTML (or other markup) in it at all. If it's a .jsp source
JSP, then it should have only markup with EL, and no Java scriptlet at
all.
A good model-view-controller (MVC) separation of concerns makes that
easier. Just remember:
.java servlet: controller
.jsp JSP: view
.java POJO: model
This has been mentioned in other threads you've seen.
The controller (there can be more than one, but let's stay simple for
a minute) accepts each client request, does some minimal extraction of
parameters to determine its handler, then passes the request or its
extracted parameters to the handler, a POJO (Plain Ol' Java Object).
The controller uses the request parameters and the outcome of the POJO
action to determine the next screen, a JSP. It places the handler
into the request context, then uses a RequestDispatcher#forward() call
to forward control to the next view JSP.
The view JSP builds itself using callbacks into the POJO (obtained via
EL from the request context) to get at results, e.g.,
<c:out value="#{handler.result.title}" />
No HTML in the servlet, no Java in the JSP, and (very nearly) no web-
app consciousness in the POJOs.
Look up "Model 2" architecture - weren't you part of the recent
conversations where links to this were provided?
--
Lew