Servlet Question

P

pmz

Dear Friends,

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>

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.

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.

All the best,
Przemek M. Zawada
 
L

Lew

pmz said:
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:eek:ut 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?
 
M

markspace

pmz said:
Dear Friends,

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>


Off the top of my head, this is normally paired with a <servlet-mapping>
element. Do you have one?

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.


You'll have to show us the code that sets MyVar, there's no way we can
guess what might go wrong just from "${MyVar} is pretty empty." Also
include any error messages or stack traces and the exact final output.

Also, what is MyVar's type? Do you have an adequate toString() method?
What are you actually doing with MyVar? Just trying to display it
exactly as you show? The latter would be kinda wonky, imo. Normally
you invoke some property of the object.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,013
Latest member
KatriceSwa

Latest Threads

Top