To simplify code in JSP expressions and scriptlets, you
are supplied with eight automatically defined variables, sometimes called
implicit objects. The available variables are
request
,
response
,
out
,
session
,
application
,
config
,
pageContext
, and page
.
Details for each are given below.
This is the HttpServletRequest
associated with the request, and lets you look at the request parameters (via
getParameter
), the request
type (GET
,
POST
,
HEAD
, etc.), and the incoming HTTP
headers (cookies, Referer
,
etc.). Strictly speaking, request is allowed to be a subclass of
ServletRequest
other than
HttpServletRequest
, if the protocol
in the request is something other than HTTP. This is almost never done in practice.
This is the HttpServletResponse
associated with the response to the client. Note that, since the output stream
(see out
below) is buffered,
it is legal to set HTTP status codes and response headers, even though
this is not permitted in regular servlets once any output has been sent to the
client.
This is the PrintWriter
used to send output to the client. However, in order to make the
response
object (see the previous
section) useful, this is a buffered version of
PrintWriter
called JspWriter
.
Note that you can adjust the buffer size, or even turn buffering off, through
use of the buffer
attribute
of the page
directive. This
was discussed in
Section 5. Also note that out
is used almost exclusively in scriptlets, since JSP expressions automatically
get placed in the output stream, and thus rarely need to refer to
out
explicitly.
This is the HttpSession
object associated with the request. Recall that sessions are created automatically,
so this variable is bound even if there was no incoming session reference. The
one exception is if you use the session
attribute of the
page
directive (see
Section 5) to turn sessions off, in which case attempts to reference the
session variable cause errors at the time the JSP page is translated into a
servlet.
This is the ServletContext
as obtained via getServletConfig().getContext()
.
This is the ServletConfig
object for this page.
JSP introduced a new class called
PageContext
to encapsulate use
of server-specific features like higher performance
JspWriter
s. The idea is that, if you access them through this
class rather than directly, your code will still run on "regular" servlet/JSP
engines.
This is simply a synonym for
this
, and is not very useful in Java. It was created as a
placeholder for the time when the scripting language could be something other
than Java.