Prev: ===Christian Louboutin - www.vipchristianlouboutin.com
Next: How to find out from *.class file with which Java version 1.6 or 1.5 it was compiled?
From: pmz on 4 Aug 2010 08:02 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
From: Lew on 4 Aug 2010 12:58 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
From: markspace on 4 Aug 2010 13:02
pmz wrote: > 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. |