A JSP page is just a Servlet. The pages produced by JSP compilers include an
implicit (javax.servlet.jsp.JspWriter) out object. When you use a method via
JSP declaration, it contains no implicit out object, nor would it make sense
for there to be.

This is becausse when you use declarations in JSP with <%! ... %> you are
essentially creating a class method - the reason is this :

JSP Containers tend to only make *one instance of a page* to share requests
against, this can mean that all current instances of the JSP page have
access to the *same* method or variable. This behaviour can be changed via
the isThreadSafe property, but this will have *serious* performance
penalties, basically creating new resource pool (scope) for each page
served.

Java is a language built heavily upon scope and clean namespaces. What point
does it serve to include an implicit out object outside of a page? IMHO,
It's not VB and that's why we use it, implicit objects everywhere is *not a
good thing*, turning otherwise good readable code to spaghetti.

On an architectural standpoint, the thinking should be about separating
presentation from data - not creating a flat hierarchy of functions that
intermingle it. However, like a guy earlier said, if you're keen on
libraries of presentation functions then just return String, then use the
implicit out object when the function is returned. It will also make your
life easier when you need to convert the lot to something else...
Encapsulation is King.

HTH,
John Gunning

-----Original Message-----
From: A mailing list about Java Server Pages specification and reference
[mailto:[EMAIL PROTECTED]]On Behalf Of Rob L'Estrange
Sent: Tuesday, 20 March 2001 9:50 AM
To: [EMAIL PROTECTED]
Subject: Re: Inner scriptlet tags


Howdy bro

Thanks for you reply. I do have a couple of points to touch on. This is not
an argumentitive reply.

I do understand that the method doesn't explicitly see the <out> object (see
my second last paragraph starting "I can see that if this were to work...").
But instead of outright rejection of the syntax by the translator, what I
would expect is a complilation error complaining about the non-existance of
an <out> variable. In other words, I would expect things to break at the
compile stage rather than the translation stage. Do you see what I mean?

It all comes back to a conscious decision (by translator implementors) not
to accept any non-code (or, if you like, any inner scriptlet tags) within
declaration tags. My guess is that:
1. The specification explicitly states that declaration tags cannot contain
inner tags; or
2. The spec makes no explicit mention on the topic.

I might have to actually read the specs to get the answer from the horse's
mouth - GULP!!  :)

Thanks again.
Rob

----- Original Message -----
From: "iZone Infotech" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, March 17, 2001 1:47 AM
Subject: Re: Inner scriptlet tags


> Dear Rob,
>
> If I understand your email correctly, you are interested to know 'why'
> rather than 'how'.
>
> Let me try to explain.
>
> Eventhough JSP looks like ASP, the working is not similar.  The JSP file
is
> compiled into a Java Servlet, the very first time it is executed.
> Subsequent calls, the Java Servlet is executed, until you make some
changes
> in the original JSP file.
>
> The whole script you write between <% and %> and the html tags between
them
> are compiled together to become part of the service() method of the
servlet.
> This method is executed every time a servlet is called.
>
> The content in <%! and %> becomes a part outside the sevice().  So your
> method testMethod() becomes a seperate method outside the service(), in
the
> servlet.
>
> Now, when you execute the servlet, the service has 2 parameters request
and
> response, which takes care of the communication.  The Writer is bound to
the
> response.  In JSP 'out' is the default Writer.  All the html you have is
> equivalent to writing out.print("some html code").  The scope of 'out' is
> only within the service() method.  the scope of response also is limited
to
> the service() method.
>
> Since testMethod() being outside service(), that does not understand 'out'
> or 'response'. In the servlet, your method will look something like this.
>
> testMethod()
> {
>     out.print("<p align='center'>How are you today?</p>");
> }
>
> This method does not understand 'out', so gives error.
>
> The best way to solve the problem is rewriting the method like,
>
> String testMethod()
> {
>     String retStr="<p align='center'>How are you today?</p>";
>     return retStr;
> }
>
> and calling it in the main JSP page as
>
> <%= testMethod() %>
>
> I have not tried it, so please excuse me if it does not work.  But
logically
> it should work, and I believe it explains your question.  Also, if you
pass
> 'out' to the testMethod() and write the method as given above, in the JSP,
> it should work(again logically).
>
> Best regards,
>
> Dantus
>
>
> ----- Original Message -----
> From: Rob L'Estrange <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, March 18, 2001 8:02 AM
> Subject: Re: Inner scriptlet tags
>
>
> > Thanks for your reply Sachin.  :)
> >
> > You seem to be saying "Well of course you can't do that within
declaration
> > tags. Go and read up on JSP tags to improve your understanding" hehe.
> Thanks
> > for the advice, but I'm not sure you fully understood my question. It's
a
> > legitimate one I think. Let me expand...
> >
> > The supplied syntax is illegal for JSP because JSP translators
consciously
> > reject HTML embedded in method declarations. We're in agreement on
that -
> > they are built to work that way, no arguments.
> >
> > My question is: "Why? Why are the JSP translators built not to accecpt
> HTML
> > embedded in method declarations?". I'm not saying that JSP should or
that
> it
> > shouldn't support this syntax; my goal is to understand if there is a
good
> > reason why JSP translators work this way. For all I know, there is a
very
> > good reason. As mentioned, JSPs primary competitor (ASP) does accept the
> > syntax, and this is very handy. And, I do think there is an argument
along
> > the lines of, "Well the whole idea of server pages is the blend of HTML
> and
> > code. Why not support HTML embedding even within declarations of
methods?"
> >
> > I can see that if this were to work, the declared method with the
embedded
> > HTML would have to have a signature that included a JSPWriter parameter.
> > Beyond that, I can't see a barrier to translators being able to handle
> HTML
> > embedded in method declarations. But I accept that just because I cannot
> see
> > a problem, that there isn't one. Hence my query to this list.
> >
> > What do you think? Is there a good reason why this syntax is not
> supported?
> > Or, perhaps, it is supported by some vendors and not others?
> >
> > Rob
> >
> >
> > ----- Original Message -----
> > From: "Sachin S. Khanna" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Friday, March 16, 2001 11:39 PM
> > Subject: Re: Inner scriptlet tags
> >
> >
> > > Well <! .... > this is a jsp declaration and not a scriptlet.
> > > There has been a lot of discussion on the difference, use of jsp
> > declaration
> > > and scriptlets.
> > > All of which can be found at the mail archives of this list.
> > > Please help yourself as well as this list by searching for them out
> there.
> > > Have a nice day.
> > > With regards,
> > > Sachin S. Khanna.
> > > www.emailanorder.com
> > >
> > > ----- Original Message -----
> > > From: Rob L'Estrange <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Sunday, March 18, 2001 3:42 AM
> > > Subject: Inner scriptlet tags
> > >
> > >
> > > > Hi All
> > > >
> > > > I've been developing with ASP for sometime and have finally got
around
> > to
> > > > checking out JSP.
> > > >
> > > > I've come across something curious. In the source code at the bottom
> of
> > > this
> > > > email, the highlighted code would be permissible (semantically) in
ASP
> > but
> > > > is not permissible in JSP. I'm using Tomcat 3.2.
> > > >
> > > > I understand where the translator is "breaking down" and why - in
> short,
> > > the
> > > > translator has been built not to process scriptlet tags within a
> > > declaration
> > > > tag. And I understand that there are ways of achieving the same
> result,
> > > and
> > > > that not all people would see this feature as necessary. But... I
have
> > > found
> > > > the technique useful in ASP development - which is the same as
saying,
> > for
> > > > me at least, the technique is useful in server page development. Is
> > there
> > > a
> > > > good reason why JSP translators are not built to handle this kind of
> > > syntax?
> > > >
> > > > Thanks
> > > > Rob
> > > >
> > > > ==================================
> > > >
> > > > <%@ page language="Java" %>
> > > >
> > > > <%!
> > > >
> > > > private void testMethod(){
> > > >  /* Start: Here's the violating code. */
> > > >  %>
> > > > c > >  <%
> > > >  /* End: The violating code. */
> > > > }
> > > >
> > > > %>
> > > >
> > > > <html>
> > > > <head>
> > > >  <title>Hello</title>
> > > > </head>
> > > >
> > > > <body bgcolor="#FFFFFF">
> > > >  <h1 align="center"><font face="Arial"
> color="#0000FF">Hello</font></h1>
> > > >
> > > >  <%
> > > >  testMethod();
> > > >  %>
> > > >
> > > > </body>
> > > > </html>
> > > >
> > > >
> > >
> >
>
===========================================================================
> > > > To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
> > > JSP-INTEREST".
> > > > For digest: mailto [EMAIL PROTECTED] with body: "set
JSP-INTEREST
> > > DIGEST".
> > > > Some relevant FAQs on JSP/Servlets can be found at:
> > > >
> > > >  http://java.sun.com/products/jsp/faq.html
> > > >  http://www.esperanto.org.nz/jsp/jspfaq.html
> > > >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> > > >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> > > >
> > >
> > >
> >
>
===========================================================================
> > > To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
> > JSP-INTEREST".
> > > For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
> > DIGEST".
> > > Some relevant FAQs on JSP/Servlets can be found at:
> > >
> > >  http://java.sun.com/products/jsp/faq.html
> > >  http://www.esperanto.org.nz/jsp/jspfaq.html
> > >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> > >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> >
> >
>
===========================================================================
> > To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
> JSP-INTEREST".
> > For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
> DIGEST".
> > Some relevant FAQs on JSP/Servlets can be found at:
> >
> >  http://java.sun.com/products/jsp/faq.html
> >  http://www.esperanto.org.nz/jsp/jspfaq.html
> >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> >  http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
> >
>
>
===========================================================================
> To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
JSP-INTEREST".
> For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
DIGEST".
> Some relevant FAQs on JSP/Servlets can be found at:
>
>  http://java.sun.com/products/jsp/faq.html
>  http://www.esperanto.org.nz/jsp/jspfaq.html
>  http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
>  http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.html
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.html
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
 http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets

Reply via email to