Class WEnvironment
- Direct Known Subclasses:
WTestEnvironment
public class WEnvironment
extends java.lang.Object
The environment provides information on the client, and gives access to startup arguments.
Usage example:
WEnvironment env = WApplication.instance().environment();
// read an application startup argument
// (passed as argument in the URL or POST'ed to the application).
if (!env.getParameterValues("login").isEmpty()) {
String login = env.getParameterValues("login").get(0);
//...
}
// Check for JavaScript/AJAX availability before using JavaScript-only
// widgets
WTextArea textEdit;
if (!env.isAjax())
textEdit = new WTextEdit(); // provide an HTML text editor
else
textEdit = new WTextArea(); // fall-back to a plain old text area.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
WEnvironment.ContentType
Enumeration for HTML content type.static class
WEnvironment.UserAgent
An enumeration type for specific user agent. -
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
timeZoneName_
-
Method Summary
Modifier and Type Method Description boolean
agentIsChrome()
Returns whether the user agent is Chrome.boolean
agentIsGecko()
Returns whether the user agent is Gecko-based.boolean
agentIsIE()
Returns whether the user agent is Microsoft Internet Explorer.boolean
agentIsIElt(int version)
Returns whether the user agent is an older version of IE.boolean
agentIsIEMobile()
Returns whether the user agent is Internet Explorer Mobile.boolean
agentIsMobileWebKit()
Returns whether the user agent is Mobile WebKit-based.boolean
agentIsOpera()
Returns whether the user agent is Opera.boolean
agentIsSafari()
Returns whether the user agent is Safari.boolean
agentIsSpiderBot()
Returns if the user agent is a (known) indexing spider bot.boolean
agentIsWebKit()
Returns whether the user agent is WebKit-based.java.lang.String
getAccept()
Returns the accept header.WEnvironment.UserAgent
getAgent()
Returns the user agent type.java.lang.String
getCgiValue(java.lang.String varName)
Returns a raw CGI environment variable.java.lang.String
getClientAddress()
Returns the IP address of the client.WEnvironment.ContentType
getContentType()
The type of the content provided to the browser.java.lang.String
getCookie(java.lang.String cookieName)
Returns a cookie value.java.util.Map<java.lang.String,java.lang.String>
getCookies()
Returns the cookies from the environment.java.lang.String
getCookieValue(java.lang.String cookieName)
Returns a cookie value.java.lang.String
getDeploymentPath()
Returns the deployment path.double
getDpiScale()
Returns the browser-side DPI scaling factor.java.lang.String
getHeaderValue(java.lang.String name)
Returns a header value.java.lang.String
getHostName()
Returns the server host name that is used by the client.java.lang.String
getInternalPath()
Returns the initial internal path.static java.lang.String
getJavaScriptWtScope()
Wt's JavaScript scope.static java.lang.String
getLibraryVersion()
Returns the version of the JWt library.java.util.Locale
getLocale()
Returns the preferred language indicated in the request header.java.lang.String
getParameter(java.lang.String name)
Returns a single value for a query parameter.java.util.Map<java.lang.String,java.lang.String[]>
getParameterMap()
Parameters passed to the application.java.lang.String[]
getParameterValues(java.lang.String name)
Returns values for a query parameter.java.lang.String
getReferer()
Returns the referer.int
getScreenHeight()
Returns the vertical resolution of the client's screen.int
getScreenWidth()
Returns the horizontal resolution of the client's screen.WtServlet
getServer()
Returns the servlet.java.lang.String
getServerAdmin()
Returns the email address of the server admin.java.lang.String
getServerSignature()
Returns the web server signature.java.lang.String
getServerSoftware()
Returns the web server software.java.lang.String
getSessionId()
Deprecated.java.lang.String
getTimeZoneName()
Returns the time zone name as reported by the client.int
getTimeZoneOffset()
Returns the time zone offset as reported by the client.java.lang.String
getUrlScheme()
Returns the URL scheme used for the current request ("http"
or"https"
).java.lang.String
getUserAgent()
Returns the user agent.boolean
hasAjax()
Returns whether the browser has enabled support for AJAX.boolean
hasJavaScript()
Returns whether the browser has enabled support for JavaScript.boolean
hasWebGL()
Returns whether the browser has support for WebGL.boolean
isInternalPathUsingFragments()
Returns whether internal paths are implemented using URI fragments.boolean
isTest()
Returns whether this is a mocked test environment.boolean
supportsCookies()
Returns whether the browser has enabled support for cookies.boolean
supportsCss3Animations()
Returns whether this agent supports CSS3 animations.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
timeZoneName_
protected java.lang.String timeZoneName_
-
-
Method Details
-
getJavaScriptWtScope
public static java.lang.String getJavaScriptWtScope()Wt's JavaScript scope. -
getParameterMap
public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()Parameters passed to the application.Arguments passed to the application, either in the URL for a http GET, or in both the URL and data submitted in a http POST.
- See Also:
getParameterValues(String name)
-
getParameterValues
public java.lang.String[] getParameterValues(java.lang.String name)Returns values for a query parameter.Returns an empty list if the parameter was not defined.
One or more values may be associated with a single argument.
For example a JWt application
foo.wt
started ashttp://.../foo.wt?hello=Hello&hello=World
will result in both values"Hello"
and"World"
to be associated with the argument"hello"
.- See Also:
getParameterMap()
-
getParameter
public java.lang.String getParameter(java.lang.String name)Returns a single value for a query parameter.Returns the first value for a parameter, or
null
if the parameter is not found.- See Also:
getParameterValues(String name)
-
getCookies
public java.util.Map<java.lang.String,java.lang.String> getCookies()Returns the cookies from the environment.This returns all cookies that were present in initial request for the application. Cookies set with
WApplication#setCookie()
are not taken into consideration.Cookies allow you to persist information across sessions, but note that not all clients may support cookies or may some clients may be configured to block cookies.
-
getCookie
public java.lang.String getCookie(java.lang.String cookieName)Returns a cookie value.Throws a
RuntimeException("Missing cookie: ...")
when the cookie is missing, or returns cookie value otherwise.- See Also:
getCookieValue(String cookieName)
-
getCookieValue
public java.lang.String getCookieValue(java.lang.String cookieName)Returns a cookie value.Returns 0 if no value was set for the given cookie.
- See Also:
getCookie(String cookieName)
-
getHeaderValue
public java.lang.String getHeaderValue(java.lang.String name)Returns a header value.Returns a header value, or an empty string if the header was present.
Note: Currently, the header name is case sensitive, although this should not be the case according to RFC2616
-
supportsCookies
public boolean supportsCookies()Returns whether the browser has enabled support for cookies.When the user disables cookies during the visit of the page, this value is not updated.
- See Also:
getCookies()
,getCookie(String cookieName)
-
hasJavaScript
public boolean hasJavaScript()Returns whether the browser has enabled support for JavaScript.This is the same as
hasAjax()
: JWt only considers using JavaScript when it has detected AJAX support.- See Also:
hasAjax()
-
hasAjax
public boolean hasAjax()Returns whether the browser has enabled support for AJAX.Without support for JavaScript/AJAX, JWt will still be able to serve the application, but with one considerable limitation: only the
WTimer.timeout()
,WInteractWidget.clicked()
,WApplication.internalPathChanged()
, andWAbstractArea.clicked()
signals (and any derived signals) will generate events.Every event will cause the complete page to be rerendered.
- See Also:
hasJavaScript()
-
hasWebGL
public boolean hasWebGL()Returns whether the browser has support for WebGL.Support for WebGL is required for client-side rendering of
WGLWidget
. -
getScreenWidth
public int getScreenWidth()Returns the horizontal resolution of the client's screen.Returns -1 if screen width is not known.
- See Also:
getScreenHeight()
-
getScreenHeight
public int getScreenHeight()Returns the vertical resolution of the client's screen.Returns -1 if screen height is not known.
- See Also:
getScreenWidth()
-
getDpiScale
public double getDpiScale()Returns the browser-side DPI scaling factor.Internet Explorer scales all graphics, fonts and other elements on high-density screens to make them readable. This is controlled by the DPI setting of the display. If all goes well, you do not have to worry about this scaling factor. Unfortunately, not all elements are scaled appropriately. The scaling factor is supposed to be used only internally in JWt and is in this interface for informational purposes.
- See Also:
WVmlImage
-
getLocale
public java.util.Locale getLocale()Returns the preferred language indicated in the request header.The language is parsed from the HTTP
Accept-Language
field, if present. If not, the locale is empty.If multiple languages are present, the one with the highest "q"uality is assumed, and if a tie is present, the first one is taken.
- See Also:
WApplication.setLocale(Locale locale)
-
getTimeZoneOffset
public int getTimeZoneOffset()Returns the time zone offset as reported by the client.This returns the time offset that the client has relative to UTC. A positive value thus means that the local time is ahead of UTC.
This requires JavaScript support.
-
getTimeZoneName
public java.lang.String getTimeZoneName()Returns the time zone name as reported by the client.Note: This requires JavaScript support and is only supported by browsers that implement the JavaScript Internationalization API. No version of Internet Explorer supports this, but modern browsers do. If not supported, this will return the empty string.
-
getHostName
public java.lang.String getHostName()Returns the server host name that is used by the client.The hostname is the unresolved host name with optional port number, which the browser used to connect to the application.
Examples:
www.mydomain.com
localhost:8080
For HTTP 1.1 requests, this information is fetched from the HTTP
Host
header. If JWt is configured behind a reverse proxy, then the last entry in the HTTPX-Forwarded-Host
header field is used instead (to infer the name of the reverse proxy instead).For HTTP 1.0 requests, the HTTP
Host
header is not required. When not present, the server host name is inferred from the configured server name, which defaults to the DNS name. -
getUrlScheme
public java.lang.String getUrlScheme()Returns the URL scheme used for the current request ("http"
or"https"
). -
getUserAgent
public java.lang.String getUserAgent()Returns the user agent.The user agent, as reported in the HTTP
User-Agent
field.- See Also:
getAgent()
-
getReferer
public java.lang.String getReferer()Returns the referer.The referer, as reported in the HTTP
Referer
field. -
getAccept
public java.lang.String getAccept()Returns the accept header.The accept header, as reported in the HTTP
Accept
field. -
agentIsSpiderBot
public boolean agentIsSpiderBot()Returns if the user agent is a (known) indexing spider bot.Note: currently the list of know bots is quite small. This method is used internally to render the web application for optimal indexing by bots:
- there is no detection for JavaScript, instead the application is directly served assuming no JavaScript support.
- session information is omitted from the Urls.
- no sessions are created (they are immediately stopped after the request has been handled).
- auto-generated
id
andname
attributes are omitted from DOM nodes. In this way, the generated page is always exactly the same.
-
getServerSignature
public java.lang.String getServerSignature()Returns the web server signature.The value of the CGI variable
SERVER_SIGNATURE
.Example:
<address>Apache Server at localhost Port 80</address>
. -
getServerSoftware
public java.lang.String getServerSoftware()Returns the web server software.The value of the CGI variable
SERVER_SOFTWARE
.Example:
"Apache"
-
getServerAdmin
public java.lang.String getServerAdmin()Returns the email address of the server admin.The value of the CGI variable
SERVER_ADMIN
.Example:
"root@localhost"
-
getClientAddress
public java.lang.String getClientAddress()Returns the IP address of the client.The (most likely) IP address of the client that is connected to this session.
This is taken to be the first public address that is given in the Client-IP header, or in the X-Forwarded-For header (in case the client is behind a proxy). If none of these headers is present, the remote socket IP address is used.
-
getInternalPath
public java.lang.String getInternalPath()Returns the initial internal path.This is the internal path with which the application was started.
For an application deployed at
"/stuff/app.wt"
, the following two URLs are considered equivalent, and indicate an internal path"/this/there"
:http://www.mydomain.com/stuff/app.wt/this/there http://www.mydomain.com/stuff/app.wt/this/there
-
getDeploymentPath
public java.lang.String getDeploymentPath()Returns the deployment path.This is the path at which the application is deployed.
- See Also:
getInternalPath()
-
getLibraryVersion
public static java.lang.String getLibraryVersion()Returns the version of the JWt library.Example:
"1.99.2"
-
getSessionId
public java.lang.String getSessionId()Deprecated.UseWApplication.getSessionId()
insteadReturns the JWt session id (deprecated).Retrieves the session id for this session. This is an auto-generated random alpha-numerical id, whose length is determined by settings in the configuration file.
-
getCgiValue
public java.lang.String getCgiValue(java.lang.String varName)Returns a raw CGI environment variable.Retrieves the value for the given CGI environment variable (like
"SSL_CLIENT_S_DN_CN"
), if it is defined, otherwise an empty string.- See Also:
getServerSignature()
,getServerSoftware()
,getServerAdmin()
-
getContentType
The type of the content provided to the browser.This is here for backwards compatibility, but the implementation now alwasy returns HTML5.
-
getAgent
Returns the user agent type.This returns an interpretation of the
getUserAgent()
. It should be used only for user-agent specific work-arounds (as a last resort). -
agentIsIE
public boolean agentIsIE()Returns whether the user agent is Microsoft Internet Explorer.- See Also:
getAgent()
-
agentIsIElt
public boolean agentIsIElt(int version)Returns whether the user agent is an older version of IE.Returns whether the agent is an IE version older than the given version.
- See Also:
agentIsIE()
-
agentIsIEMobile
public boolean agentIsIEMobile()Returns whether the user agent is Internet Explorer Mobile.Returns also
true
when the agent is Internet Explorer 5 or older.- See Also:
getAgent()
-
agentIsOpera
public boolean agentIsOpera()Returns whether the user agent is Opera.- See Also:
getAgent()
-
agentIsWebKit
public boolean agentIsWebKit()Returns whether the user agent is WebKit-based.Webkit-based browsers include Safari, Chrome, Arora and Konquerer browsers.
- See Also:
getAgent()
-
agentIsMobileWebKit
public boolean agentIsMobileWebKit()Returns whether the user agent is Mobile WebKit-based.Mobile Webkit-based browsers include the Android Mobile WebKit and the iPhone Mobile WebKit browsers.
- See Also:
getAgent()
-
agentIsSafari
public boolean agentIsSafari()Returns whether the user agent is Safari.- See Also:
getAgent()
-
agentIsChrome
public boolean agentIsChrome()Returns whether the user agent is Chrome.- See Also:
getAgent()
-
agentIsGecko
public boolean agentIsGecko()Returns whether the user agent is Gecko-based.Gecko-based browsers include Firefox.
- See Also:
getAgent()
-
getServer
Returns the servlet.This returns the servlet environment of this session.
-
isInternalPathUsingFragments
public boolean isInternalPathUsingFragments()Returns whether internal paths are implemented using URI fragments.This may be the case for older non-HTML5 browsers which do not support HTML5 History APIs.
-
supportsCss3Animations
public boolean supportsCss3Animations()Returns whether this agent supports CSS3 animations. -
isTest
public boolean isTest()Returns whether this is a mocked test environment.
-
WApplication.getSessionId()
instead