[Java] Class ServletBinding
- groovy.servlet.ServletBinding
public class ServletBinding extends Binding
Servlet-specific binding extension to lazy load the writer or the output stream from the response.
Eager variables
-
"request" : the
HttpServletRequest
object -
"response" : the
HttpServletRequest
object -
"context" : the
ServletContext
object - "application" : same as context
-
"session" : shorthand for
request.getSession(false)
- can be null! - "params" : map of all form parameters - can be empty
- "headers" : map of all request header fields
Lazy variables
-
"out" :
response.getWriter()
-
"sout" :
response.getOutputStream()
-
"html" :
new MarkupBuilder(response.getWriter())
-expandEmptyElements
flag is set to true -
"json" :
new JsonBuilder()
response.getWriter()
should not be done if a call to response.getOutputStream()
has already occurred or the other way around. You may wonder then how the above lazy variables can possibly be provided - since setting them up would involve calling both of the above methods. The trick is catered for behind the scenes using lazy variables. Lazy bound variables can be requested without side effects; under the covers the writer and stream are wrapped. That means response.getWriter()
is never directly called until some output is done using 'out' or 'html'. Once a write method call is done using either of these variable, then an attempt to write using 'sout' will cause an IllegalStateException
. Similarly, if a write method call on 'sout' has been done already, then any further write method call on 'out' or 'html' will cause an IllegalStateException
.
Reserved internal variable names (see "Methods" below)
- "forward"
- "include"
- "redirect"
response.getWriter()
is called directly (without using out), then a write method call on 'sout' will not cause the IllegalStateException
, but it will still be invalid. It is the responsibility of the user of this class, to not to mix these different usage styles. The same applies to calling response.getOutputStream()
and using 'out' or 'html'. Methods
-
"forward(String path)" :
request.getRequestDispatcher(path).forward(request, response)
-
"include(String path)" :
request.getRequestDispatcher(path).include(request, response)
-
"redirect(String location)" :
response.sendRedirect(location)
Constructor Summary
Constructor and description |
---|
ServletBinding
(HttpServletRequest request, HttpServletResponse response, ServletContext context) Initializes a servlet binding. |
Methods Summary
Type Params | Return Type | Name and description |
---|---|---|
public void |
forward(String path) | |
public Object |
getVariable(String name)
| |
public Map |
getVariables() | |
public void |
include(String path) | |
public void |
redirect(String location) | |
public void |
setVariable(String name, Object value) |
Inherited Methods Summary
Methods inherited from class | Name |
---|---|
class Binding | getProperty, getVariable, getVariables, hasVariable, removeVariable, setProperty, setVariable |
class GroovyObjectSupport | getMetaClass, setMetaClass |
Constructor Detail
public ServletBinding(HttpServletRequest request, HttpServletResponse response, ServletContext context)
Initializes a servlet binding.
- Parameters:
-
request
- the HttpServletRequest object -
response
- the HttpServletRequest object -
context
- the ServletContext object
Method Detail
public void forward(String path)
@Override public Object getVariable(String name)
- Returns:
- a writer, an output stream, a markup builder or another requested object
@Override public Map getVariables()
public void include(String path)
public void redirect(String location)
@Override public void setVariable(String name, Object value)
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/groovy/servlet/ServletBinding.html