public interface Page
Server side pages implement this interface via the concrete PageImpl
class. This class has some additional utility methods as well that page
authors may find useful.
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_BUFFER_SIZE |
static java.lang.String |
DEFAULT_ENCODING
The default encoding of the page, specified in the header sent back to
the client.
|
static java.lang.String |
DEFAULT_MIME_TYPE
The default mime-type for each page.
|
static java.lang.String |
PACKAGE_NAME |
Modifier and Type | Method and Description |
---|---|
void |
clientRedirect(HttpServletRequest req,
HttpServletResponse res,
java.lang.String newLocation)
Redirects the client to the new page location.
|
void |
destroy()
This method is invoked whenever a page is destoryed/unloaded
|
java.lang.String |
getPagePath(HttpServletRequest req)
Returns the path to this page from the web servers document root.
|
java.lang.String |
getRealPath(HttpServletRequest req)
Returns the real absolute directory path for the
PagePath . |
java.io.CharArrayWriter |
getThreadLocalWriter()
Returns a thread specific CharArrayWriter that can be passed to this method
as various points in the page.
|
void |
init(PageServlet servlet,
java.lang.String contextRelativePagePath)
This method is invoked whenever a page is created and before it
is run.
|
void |
render(HttpServletRequest req,
HttpServletResponse res) |
static final java.lang.String PACKAGE_NAME
static final int DEFAULT_BUFFER_SIZE
static final java.lang.String DEFAULT_MIME_TYPE
ServletResponse.setContentType
method.static final java.lang.String DEFAULT_ENCODING
<head><meta http-equiv=content-type content='text/html; charset=UTF-8'></head>Encodings can be tricky. We are first compiling a page into a java source file, then running the source file and sending it's output to the browser. Read the page encoding and charsets if you are using any non-us-ascii or non- ISO-8859-1 characters in your molly source page.
void render(HttpServletRequest req, HttpServletResponse res) throws java.lang.Exception
java.lang.Exception
void init(PageServlet servlet, java.lang.String contextRelativePagePath) throws ServletException
Pages should override this method to instantiate/set-up page variables as needed. (pages have no-arg constructors so like most of the servlet API, setup and initialization of variables is done in a init method instead).
When overriding this class, you must remember to call: super.init
The page class is reloaded if the page is modified. Variables
should therefore be cleaned up in the destory
method
as needed.
ServletException
void destroy()
java.lang.String getPagePath(HttpServletRequest req)
So for example, if the page is at foo/bar.mp
and is running
under the webapp context of context1
, then the page path
will be: /context1/foo/bar.mp
. If there is no specific
web app (i.e., the most common case of a default "" webapp), then the page
path will be /foo/bar.mp
This page path is essentially what needs to be typed in the browsers URL window to invoke the page. It's also useful as form action parameters. For example, in a molly page:
This will submit the form to the same page where the form is defined. This can be hard coded of course but by using.. <form action="[=getPagePath(req)]" method="post"> .. </form>
getPagePath
, the html
does not have to be changed if the name of the page changes on disk.java.lang.String getRealPath(HttpServletRequest req)
PagePath
.
So, for example, for a webserver document root at
/web/sites/default/
and a page located in
foo/bar.mp
, the real path will be:
/web/sites/default/foo/bar.mp
void clientRedirect(HttpServletRequest req, HttpServletResponse res, java.lang.String newLocation) throws java.io.IOException
HttpServletResponse.sendRedirect
method.
The location parameter can be relative to the specified request's URI or relative to the context root if it contains a leading '/'. The webapp name (if any) does not have to be specified, the redirect will creates a full URL (including the webapp context path) suitable for this purpose.
For example:
webapp context | current page | location parameter | resulting page |
default web app ("/") | foo/bar.mp | baz.mp | foo/baz.mp |
default web app ("/") | foo/bar.mp | /baz.mp | baz.mp |
/myapp | foo/bar.mp | baz.mp | /myapp/foo/baz.mp |
/myapp | foo/bar.mp | /baz.mp | /myapp/baz.mp |
req
- the current requestres
- the current responselocation
- location to redirect to.java.io.IOException
java.io.CharArrayWriter getThreadLocalWriter()
Note: The writer is not reset or flushed when it is retrieved. It
must be reset manually via calling the CharArrayWriter.reset()
method. This design-decision allows request
threads to collect debugging data across multiple pages.
The suggested usage idiom is:
dbg(true); CharArrayWriter cw = getThreadLocalWriter(): bug(cw, "some message"); ... bug(cw, "other message"); ... cw.writeTo(out); cw.reset();