{"id":251,"date":"2018-01-20T18:12:33","date_gmt":"2018-01-20T17:12:33","guid":{"rendered":"https:\/\/www.virtualberater.com\/?p=251"},"modified":"2019-02-03T12:51:40","modified_gmt":"2019-02-03T11:51:40","slug":"die-impliziten-objekte","status":"publish","type":"post","link":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/","title":{"rendered":"Die impliziten Objekte"},"content":{"rendered":"<h4 style=\"text-align: center;\"><a href=\"https:\/\/www.virtualberater.com\/index.php\/java-web-inhalte\/\">Zur \u00dcbersicht<\/a><\/h4>\n<h1 class=\"content_header\"><strong>Die impliziten Objekte<\/strong><\/h1>\n<p>Im vorigen Beitrag wurde gezeigt, wie man mittels Skiptlets Javacode in JSPs einbetten kann, um so bspw. dynamisch auf Nutzereingaben reagieren zu k\u00f6nnen. Dazu ben\u00f6tigt man aber \u00fcber die M\u00f6glichkeit, Java zu benutzen, hinaus noch den Zugriff auf Informationen, die die derzeit g\u00fcltige Session, die Anwendung, den Request oder auch die zu erzeugende Response betreffen. Dazu dienen die impliziten Objekte, auf die man aus Skriptlets heraus zugreifen kann.<br \/>\nInsgesamt stehen neun Objekte zur Verf\u00fcgung, die in den n\u00e4chsten Abschnitten detailliert beschrieben werden. Die folgende \u00dcbersicht zeigt zun\u00e4chst einmal die Namen der Objekte und von welchem Typ diese sind. Es lohnt sich, die verf\u00fcgbaren Methoden dieser Objekte in der API der Java 2 Enterprise Edition anzusehen, da man sie h\u00e4ufig brauchen wird und hier nur die wichtigsten Methoden beschrieben werden. Im \u00dcbrigen braucht man Objekte dieser Interfaces\/Klassen auch dann h\u00e4ufig, wenn man mit einem FrontController-Ansatz arbeitet.<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><span style=\"color: #ffffff;\"><strong>Name<\/strong><\/span><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Interface bzw. Klasse<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\"><a href=\"#request\">request<\/a><\/td>\n<td class=\"normal\">javax.servlet.http.HttpServletRequest<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\"><a href=\"#response\">response<\/a><\/td>\n<td class=\"normal\">javax.servlet.http.HttpServletResponse<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\"><a href=\"#session\">session<\/a><\/td>\n<td class=\"normal\">javax.servlet.http.HttpSession<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\"><a href=\"#pageContext\">pageContext<\/a><\/td>\n<td class=\"normal\">javax.servlet.jsp.PageContext<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\"><a href=\"#application\">application<\/a><\/td>\n<td class=\"normal\">javax.servlet.ServletContext<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\"><a href=\"#config\">config<\/a><\/td>\n<td class=\"normal\">javax.servlet.ServletConfig<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\"><a href=\"#out\">out<\/a><\/td>\n<td class=\"normal\">javax.servlet.jsp.JspWriter<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\"><a href=\"#exception\">exception<\/a><\/td>\n<td class=\"normal\">java.lang.Throwable<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"up\"><span><a href=\"http:\/\/web.archive.org\/web\/20170501101200\/http:\/\/www.jsptutorial.org\/content\/implicitObjects#upmost\" title=\"Zum Seitenanfang\"><\/a><\/span><\/p>\n<h2 class=\"content_header\"><strong>Das Objekt <a id=\"request\"><\/a>request<\/strong><\/h2>\n<p>Das Objekt request, ist vermutlich das meistgenutzte implizite Objekt. Das hei\u00dft, dass es zu jeder Anfrage auch immer genau ein request-Objekt gibt. Mit Hilfe der request Methoden kannst du auf alle Informationen zu dem jeweiligen Request zugreifen.\u00a0 Das kann der HTTP-Header sein, oder auch die Request-Parametern (GET-Parameter oder Formular-Eingaben) sein. Das k\u00f6nnen Cookies sein oder auch die IP Adresse des Client Die wichtigsten Methoden sind in der folgenden \u00dcbersicht zu finden.<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\">Methode<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> R\u00fcckgabewert<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Kurze Beschreibung<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Beispiel<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getCookies()<\/td>\n<td class=\"normal\">Cookie[ ]<\/td>\n<td class=\"normal\">Mit dieser Methode werden alle Cookies des Nutzers als ein Cookie-Array zur\u00fcckgegeben.<\/td>\n<td class=\"normal\"><\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getHeader(String)<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Gibt den benannten Header zur\u00fcck. z.B.. den Browser mit &#8222;user-agent&#8220;.<\/td>\n<td class=\"normal\">\n<pre>.....\n&lt;% \n    out.print(request.getHeader(\"user-agent\"));\n %&gt;\n.....<\/pre>\n<p>Gibt bei einem Opera Browser\u00a0 und Windows 10 folgendes in der Web Seite aus:<\/p>\n<ul>Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/63.0.3239.132 Safari\/537.36 OPR\/50.0.2762.58<\/ul>\n<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getParameter(String)<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Gibt den Wert des request Parameter zur\u00fcck. Dabei ist es egal ob die Get oder die Post Methode f\u00fcr das Request benutzt wurde.<\/td>\n<td class=\"normal\">\n<pre>.....\n&lt;% \n    out.print(request.getParameter(\"name\"));\n %&gt;\n.....<\/pre>\n<p>Gibt die den Wert der zuvor in einem Html Formularelements mit dem Namen &#8222;name&#8220; eingegeben wurde, im darauf folgenden Response aus.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getMethod()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Gibt die HTTP-Methode (bspw. POST oder GET) zur\u00fcck.<\/td>\n<td class=\"normal\"><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getQueryString()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Der Anfrage-String des Clients, der in der Adresszeile des Browsers an die URL angeh\u00e4ngt wurde, oder der die Anfrage eines mit der GET-Methode abgesandten Formulars enth\u00e4lt.<\/td>\n<td class=\"normal\"><\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getRequestURL()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Die URL die f\u00fcr die Anfrage genutzt wurde. Etwaige Anfrage-Parameter, die an die URL im Browser angeh\u00e4ngt wurden, m\u00fcssen aber mit der oben beschriebenen Methode &#8222;getQueryString()&#8220; geholt werden.<\/td>\n<td class=\"normal\"><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getSession()<\/td>\n<td class=\"normal\">HttpSession<\/td>\n<td class=\"normal\">Mit dieser Methode sehen Sie das das request Objekt auch in der Lage ist das session Objekt zur\u00fcck zu geben. Wird in Servlets oder auch Filter gerne gemacht, da dort die impliziten Objekte nicht vorliegen, sondern immer nur das request und das response Objekt..<\/td>\n<td class=\"normal\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"codefragment_inner\"><\/div>\n<h2 class=\"content_header\"><strong>Das Objekt <a id=\"response\"><\/a>response <\/strong><\/h2>\n<p>Das response-Objekt ist das Gegenst\u00fcck zum request-Objekt. In diesem Objekt werden alle Informationen f\u00fcr das HTTP-Response abgelegt, auch hier wieder f\u00fcr das aktuelle. Das response Objekt wird vor allem genutzt, um den Content-Type festzulegen und Response-Header zu erweitern oder um Cookies auf den Client zu setzen.<br \/>\nAuch hier wieder eine \u00dcbersicht der wichtigsten Methoden:<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\">Methode<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> R\u00fcckgabewert<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Kurze Beschreibung<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">addCookie(Cookie cookie)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">F\u00fcgt den \u00fcbergebenen Cookie der Response hinzu. Ob der Client diesen akzeptiert hat, l\u00e4sst sich nat\u00fcrlich erst beim n\u00e4chsten Request feststellen.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">addDateHeader(String name, long date)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Formatiert einen Datums-String entsprechend der HTTP-Spezifikation und f\u00fcgt diesen unter dem angegebenen Namen den Http-Headern hinzu<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">addHeader(String name, String value)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">F\u00fcgt einen Header unter dem angegebenen Namen hinzu<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">addIntHeader(String name, int value)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Unter dem angegebenen Header-Namen wird ein Ganzzahl-Wert hinzugef\u00fcgt<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">encodeURL(String url)<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Bereinigt die URL von Sonderzeichen, Leerzeichen und dergleichen in einer URL nicht zugelassenen Zeichen und gibt diesen bereinigten String zur\u00fcck.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">encodeRedirectURL(String url)<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Bereinigt die URL von Sonderzeichen, Leerzeichen und dergleichen in einer URL nicht zugelassenen Zeichen und gibt diesen bereinigten String zur\u00fcck. Jede Redirect-Adresse sollte zuvor durch diese Methode gegangen sein<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">sendError(String sc)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">L\u00f6scht den Puffer, setzt den Fehlercode und sendet die Response ab.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">sendError(String sc, String message)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">L\u00f6scht den Puffer, setzt den Fehlercode und sendet die Response ab. Zudem wird als Erkl\u00e4rung f\u00fcr den Client der angegebene Text mitgegeben.<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">setDateHeader(String name, long date)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Wie oben bei addHeader(name, date), nur dass hier ein schon zuvor gesetzter Wert \u00fcberschrieben wird<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">setHeader(String name, Strng value)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Setzt einen Header unter dem Namen mit dem angegebenen Wert. Evtl. zuvor gesetzte header mit diesem Namen werden \u00fcberschrieben<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">setIntHeader(String name, int value)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Der int-Wert wird unter diesem Namen in den Http-Headern gesetzt. Ggf. zuvor gesetzte header dieses Namens werden \u00fcberschrieben<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">setStatus(int sc)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Setzt den Statuscode f\u00fcr die Antwort. In JSPs eine untypische Aktion, in Servlets aber durchaus gel\u00e4ufig, wenn die Bearbeitung vom Normalfall abweicht. Im Fehlerfall hingegen kommt eher die Methode setError zur Anwendung<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 class=\"content_header\"><strong>Das Objekt <a id=\"session\"><\/a>session<\/strong><\/h2>\n<p class=\"content_header\">Beim session Objekt die h\u00e4ufig genutzten Methoden:<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\">Methode<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> R\u00fcckgabewert<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Kurze Beschreibung<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getAttribute(String name)<\/td>\n<td class=\"normal\">Object<\/td>\n<td class=\"normal\">Die wohl meist genutzte Methode des session-Objekts. Mit dieser kann man Objekte aus der Session auslesen, die zu einem beliebigen anderen Zeitpunkt der Session hinzugef\u00fcgt wurden.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getAttributeNames()<\/td>\n<td class=\"normal\">Enumeration<\/td>\n<td class=\"normal\">Eigentlich nur sinnvoll zum Debuggen. Hiermit holt man sich eine Enumeration aller Attributnamen der Session. \u00dcber diese k\u00f6nnte man nun iterieren, um eine Liste aller Attribute der Session auszugeben.<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getCreationTime()<\/td>\n<td class=\"normal\">long<\/td>\n<td class=\"normal\">Wenn man wissen will, wann die Session erzeugt wurde, kann man diese Methode nutzen.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getId()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Gibt die eindeutige ID der Session zur\u00fcck.<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getMaxInactiveInterval()<\/td>\n<td class=\"normal\">int<\/td>\n<td class=\"normal\">Ermittelt die Zeit, die h\u00f6chstens vergehen darf, bevor die Session verworfen wird.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getServletContext()<\/td>\n<td class=\"normal\">ServletContext<\/td>\n<td class=\"normal\">Der ServletContext, dem diese Session angeh\u00f6rt, kann hier abgerufen werden. Damit ist auch klar, dass eine Session immer an eine deployte Applikation gebunden ist und sich nicht \u00fcber mehrere Anwendungen erstrecken kann.<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">invalidate()<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Beendet diese Session. Eine sehr wichtige Methode! Jede Session kostet Speicherplatz. Sind sehr viele Session gleichzeitig ge\u00f6ffnet, so kann dies bei umfangreicheren Objekten in der Session schnell zu Speicherproblemen f\u00fchren. invalidate() kann helfen, indem man nicht mehr genutzte Session mittels eines Logout-Vorgangs beendet.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">removeAttribut(String name)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Entfernt ein zuvor hinzugef\u00fcgtes Objekt wieder aus der Session. Als Parameter wird der Attributname angegeben<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">setAttribute(String name, Object object)<\/td>\n<td class=\"normal\">void<\/td>\n<td class=\"normal\">Legt ein Objekt in der Session ab. Zusammen mit getAttribute() die wichtigste Methode der Session.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Das <a href=\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/16\/das-http-protokoll\/\">HTTP-Protokoll<\/a> ist ein sogenanntes zustand loses Protokoll. Das hei\u00dft, dass der Server keine Daten \u00fcber den Nutzer vorr\u00e4tig h\u00e4lt und diesen sozusagen unmittelbar nach erfolgreicher Absendung seiner Antwort auf die Anfrage des Clients vergisst. Dies ist nat\u00fcrlich f\u00fcr die meisten Web-Anwendungen v\u00f6llig inakzeptabel. Daher wurden M\u00f6glichkeiten gefunden, diese Beschr\u00e4nkung des HTTP-Protokolls zu umgehen und sogenannte Sessions zu erm\u00f6glichen. Sessions\u00a0k\u00f6nnen einen kompletten Besuch eines Anwenders auf einer Website \u00fcber alle von ihm aufgesuchten Seiten abbilden. Somit k\u00f6nnen bspw. Login-Informationen gespeichert werden, oder auch Warenkorb Inhalte.<br \/>\nDas JSP\/Servlet-Modell bietet eine umfassende Unterst\u00fctzung von Sessions einer Benutzerin \u00fcber eine Abfolge von Seiten. Daf\u00fcr stellt der Servlet-Container das session Objekt bereit, das vor allem zur Aufnahme von Session-relevanten Informationen genutzt wird. Beliebige Objekte k\u00f6nnen mittels der o.g. Methode setAttribute() im Session Scope\u00a0gespeichert und mittels getAttribute(attributnahme) wieder abgerufen werden.<\/p>\n<h2 class=\"content_header\"><strong>Das Objekt <a id=\"pageContext\"><\/a>pageContext<\/strong><\/h2>\n<p class=\"content_header\">Das pageContext Objekt bietet Zugriff auf Informationen, die die aktuelle JSP-Seite betreffen. Es bietet vor allem die Methode<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\" alt=\"\" width=\"1\" height=\"1\" \/>, die den bequemen Zugriff auf alle Objekte in jedem G\u00fcltigkeitsbereich erlaubt. Das Konzept der G\u00fcltigkeitsbereiche (engl. scope) wird im Beitrag <a href=\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/08\/java-server-pages-2\/\">G\u00fcltigkeitsbereiche<\/a> ausf\u00fchrlich erl\u00e4utert. Ansonsten wird das Objekt vor allem bei der Generierung des aus der JSP erzeugten Servlets genutzt.<\/p>\n<h3><\/h3>\n<h2 class=\"content_header\"><strong>Das Objekt <a id=\"application\"><\/a>application<\/strong><\/h2>\n<p>Das application Objekt enth\u00e4lt wenig Methoden, die man von einer JSP aus nutzen w\u00fcrde. Am ehesten sind noch die setAttribute Methode sinnvoll, die Objekte in dem G\u00fcltigkeitsbereich Application abgelegt. Im Application Scope k\u00f6nnen alle, derzeit auf dem Server, befindliche Benutzer zugreifen. Dort k\u00f6nnten z.b. Der Produktkatalog einer Shop Anwendung optimal abgelegt werden, da der Entwickler Systemressourcen(Arbeitsspeicher, Datenbankzugriffe etc.) einspart<\/p>\n<h2 class=\"content_header\"><strong>Das Objekt<a id=\"config\"><\/a> config<\/strong><\/h2>\n<p>Das config Objekt ist vom Typ javax.servlet.ServletConfig. Es dient vor allem dazu, auf Initialisierungs-Parameter zuzugreifen. Es ist in der Praxis absolut unbedeutend. Initialisierungs Parameter werden nahezu ausschlie\u00dflich f\u00fcr Servlets verwandt. Dennoch ist es auch f\u00fcr JSPs m\u00f6glich, solche Parameter in der Datei web.xml anzulegen. Die wesentliche Methoden sind daher die getInitParameter() Methode, die einen definierten und benannten Initialisierungs Parameter zur\u00fcckgibt und die getInitParameterNames() Methode, die eine Enumeration mit allen Namen der definierten Initialisierungs-Parameter zur\u00fcckgibt.<br \/>\nEin Beispiel f\u00fcr einen definierten Parameter in einer web.xml-Datei:<\/p>\n<div class=\"codefragment_inner\">\n<pre>&lt;?xml\u00a0version=\"1.0\"\u00a0encoding=\"utf-8\"?&gt;\n\n&lt;web-app\u00a0xmlns=\u00a0...\u00a0&gt;\n\n&lt;!--\u00a0andere Konfigurationselemente\u00a0--&gt;\n\n&lt;servlet&gt;\n  &lt;servlet-name&gt;ExampleConfigJsp&lt;\/servlet-name&gt;\n  &lt;jsp-file&gt;\/newjsp.jsp&lt;\/jsp-file&gt;\n  &lt;init-param&gt;\n   &lt;param-name&gt;sampleParm&lt;\/param-name&gt;\n   &lt;param-value&gt;Just\u00a0a\u00a0sample\u00a0value.&lt;\/param-value&gt;\n &lt;\/init-param&gt;\n &lt;\/servlet&gt;\n\n&lt;servlet-mapping&gt;\n   &lt;servlet-name&gt;ExampleConfigJsp&lt;\/servlet-name&gt;\n   &lt;url-pattern&gt;\/newjsp.jsp&lt;\/url-pattern&gt;\n &lt;\/servlet-mapping&gt;\n\n&lt;!--\u00a0weitere konfigurationselemente ...\u00a0--&gt;\n\n&lt;\/web-app&gt;\n\n<\/pre>\n<\/div>\n<p>Und so kann man diesen in einer JSP auslesen:<\/p>\n<div class=\"codefragment_inner\">\n<pre>&lt;%@page contentType=\"text\/html\" pageEncoding=\"UTF-8\"%&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt; \n &lt;head&gt;\n    &lt;title&gt;Config Parameter auslesen config&lt;\/title&gt;\n &lt;\/head&gt; \n &lt;body&gt; \n   &lt;h3&gt;\"config\"&lt;\/h3&gt; \n   &lt;p&gt;init-parameter:&lt;\/p&gt;\n   &lt;table border=\"0\" cellspacing=\"0\" style=\"margin-top:10px;\u00a0margin-bottom:10px;\"&gt; \n \n      &lt;tr&gt; &lt;td&gt;&lt;b&gt;sampleParm&lt;\/b&gt;&lt;\/td&gt;&lt;td&gt;\u00a0&lt;\/td&gt; &lt;td&gt;\n     &lt;%=config.getInitParameter(\"sampleParm\") %&gt;&lt;\/td&gt; \n     &lt;\/tr&gt; \n   &lt;\/table&gt; \n&lt;\/body&gt; \n&lt;\/html&gt;<\/pre>\n<\/div>\n<h2 class=\"content_header\"><strong>Das Objekt\u00a0<a id=\"out\"><\/a>out<\/strong><\/h2>\n<p>Das out Objekt kann bis auf einige Ausnahmen eine Expression ersetzen. Du erinnerst dich, das waren die Ausgaben innerhalb eines Skriptlets. Will man innerhalb von Skriptlets Ausgaben erzeugen, so stehen mit dem out Objekt diverse print Methoden zur Verf\u00fcgung. Die Ausgabe wird dabei zun\u00e4chst stets gepuffert, um ggf. bei Fehlern den Puffer l\u00f6schen zu k\u00f6nnen und bspw. spezielle Ausgaben f\u00fcr den Fehlerfall ausgeben zu k\u00f6nnen. Ein Forwarding(siehe Actions) oder ein Redirect ist nur m\u00f6glich, solange der Puffer oder Teile des Puffers noch nicht mittels flush() tats\u00e4chlich weggeschrieben wurde.<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\">Methode<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> R\u00fcckgabewert<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Kurze Beschreibung<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">flush()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">schreibt den Puffer in den Outputstream des Response.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">print(String)<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">f\u00fcr die Ausgabe des angegebenen Strings<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">println()<\/td>\n<td class=\"normal\">int<\/td>\n<td class=\"normal\">f\u00fcr die Ausgabe des angegebenen Strings mit<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">clearBuffer()<\/td>\n<td class=\"normal\">Throwable<\/td>\n<td class=\"normal\">Liefert den Fehler, der daf\u00fcr verantwortlich ist, dass die Fehlerseite angezeigt wird. Damit stehen auch alle Methoden dieses Objekts der JSP zur Verf\u00fcgung.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Insofern sind neben den diversen print()-Methoden noch die Methoden clear(), bzw. clearBuffer() und flush() wichtig. Letztere schreibt den Pufferinhalt in den Ausgabestrom, wohingegen die beiden ersten den Puffer l\u00f6schen. Ist bereits ein Teil des Puffers geflusht worden, so wirft die erste Methode eine IOException,w\u00e4hrend clearBuffer() einfach den gegenw\u00e4rtigen Pufferinhalt l\u00f6scht. Die Gr\u00f6\u00dfe des Puffers setzt man mittels dem Attribut buffer der Page-Direktive.<\/p>\n<h2><strong>Das Objekt <a id=\"exception\"><\/a>exception<\/strong><\/h2>\n<p>Dieses Objekt steht nur auf speziellen Fehlerseiten zur Verf\u00fcgung. Fehlerseiten sind all die Seiten, bei denen das Attribut isErrorPage der page Direktive auf &#8222;true&#8220; gesetzt ist.<br \/>\nDiese Seiten dienen dazu, spezielle Antwortseiten f\u00fcr diverse m\u00f6gliche Fehlerf\u00e4lle bereitzustellen. Welche Seite aufgerufen wird, bestimmt sich entweder aus dem errorPage Attribut der Page-Direktive oder aus der Konfiguration, die im Deployment-Deskriptor web.xml festgelegt wurde.<br \/>\nIm Falle eines Fehlers wird dann der Request zur passenden Fehler-Seite weitergeleitet und dort kann mittels des exception Objekts auf die Informationen der Exception zugegriffen werden, die zuvor aufgetreten ist. So kann man f\u00fcr die Nutzerin der Seite klare Fehlermeldungen generieren und erspart ihr den ansonsten \u00fcblichen Stacktrace. Genaueres zur Fehlerbehandlung und welche Konfigurationen man dazu im Deployment-Deskriptor vornehmen kann, findet sich im Kapitel Fehler- und Ausnahmenbehandlung.<br \/>\nFolgende Methoden des exception Objekts stehen auf einer Fehlerseite zur Verf\u00fcgung:<\/p>\n<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" bgcolor=\"#333333\">\n<tbody>\n<tr bgcolor=\"#6e8be8\">\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\">Methode<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> R\u00fcckgabewert<\/span><\/strong><\/td>\n<td class=\"normal\"><strong><span style=\"color: #ffffff;\"> Kurze Beschreibung<\/span><\/strong><\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getRequestURI()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Gibt den Request-URI des abgesetzten Requests zur\u00fcck. Wichtig, um festzustellen, wo der Fehler auftrat.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getServletName()<\/td>\n<td class=\"normal\">String<\/td>\n<td class=\"normal\">Eine nur m\u00e4\u00dfig wichtige Methode. Der Servlet-Name ist im Falle einer JSP meist unsch\u00f6n anzuzeigen und u.U. auch zur Auswertung nicht zu gebrauchen, da er auf jedem Fall vom Container ggf. aber zudem sogar vom Zustand zur Zeit der Transformation der JSP in ein Servlet abh\u00e4ngt.<\/td>\n<\/tr>\n<tr bgcolor=\"#a3b3e8\">\n<td class=\"normal\">getStatusCode()<\/td>\n<td class=\"normal\">int<\/td>\n<td class=\"normal\">Wichtige Methode, um den HTTP-Statuscode zu ermitteln. Sowohl zur Anzeige an die Nutzerin, als auch zur flexiblen Reaktion auf diesen Code gut brauchbar.<\/td>\n<\/tr>\n<tr bgcolor=\"#eeeeee\">\n<td class=\"normal\">getThrowable()<\/td>\n<td class=\"normal\">Throwable<\/td>\n<td class=\"normal\">Liefert den Fehler, der daf\u00fcr verantwortlich ist, dass die Fehlerseite angezeigt wird. Damit stehen auch alle Methoden dieses Objekts der JSP zur Verf\u00fcgung.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ein kleines Beispiel: Beachte die page Direktive in beiden jsp Seiten.<\/p>\n<pre>&lt;%-- Die jsp hat den Namen handleError.jsp --%&gt;\n&lt;%@ page isErrorPage=\"true\" %&gt;\n\n&lt;%-- Zur einfacherer Ausgabe importieren Sie 'PrintWriter' --%&gt;\n&lt;%@ page import=\"java.io.PrintWriter\" %&gt;\n\n&lt;html&gt;\n&lt;body&gt;\n&lt;%-- Hier verwenden Sie die zus\u00e4tzliche Variable --%&gt;\nEs ist zu folgender Ausnahme gekommen: &lt;%= exception %&gt; &lt;br\/&gt;\n&lt;a href=\"produceError.jsp\"&gt; Erneut versuchen ?! &lt;\/a&gt; &lt;hr\/&gt;\n\n&lt;%-- Zur Ausgabe des Stacktrace in die JSP verwenden Sie\nauch hier die vordefinierte Variable 'out'. --%&gt;\nDer Stacktrace lautet:\n&lt;% exception.printStackTrace(new PrintWriter(out)); %&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;\n\n\u00a0\n<\/pre>\n<p>Die Seite die den Fehler provoziert bei Eingabe eines nicht numerischen Werts:<\/p>\n<pre>&lt;%-- Hier legen Sie die Fehlerseite fest \nder Name dieser Seite hat den Namen produceError.jsp--%&gt;\n&lt;%@ page errorPage=\"handleError.jsp\" %&gt;\n\n&lt;%\n\/\/ Dieser Code ist fehleranf\u00e4llig f\u00fcr Falscheingaben\nif (request.getParameter(\"number\") != null) {\nDouble myDouble = new Double(request.getParameter(\"number\"));\n}\n%&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n &lt;body&gt;\n\n&lt;!-- Dieses Formular verweist auf sich selbst --&gt;\n   &lt;form action=\"produceError.jsp\"&gt;\n   &lt;p&gt;\n     Wenn Sie in das Feld keine Zahl eingeben,\n     provozieren Sie einen Fehler:\n     &lt;\/p&gt;\n\n  Eingabe: &lt;input type=\"text\" name=\"number\" \/&gt;\n          &lt;input type=\"submit\" value=\"Absenden\" \/&gt;\n   &lt;\/form&gt;\n &lt;\/body&gt;\n&lt;\/html&gt;\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Zur \u00dcbersicht Die impliziten Objekte Im vorigen Beitrag wurde gezeigt, wie man mittels Skiptlets Javacode in JSPs einbetten kann, um so bspw. dynamisch auf Nutzereingaben reagieren zu k\u00f6nnen. Dazu ben\u00f6tigt man aber \u00fcber die M\u00f6glichkeit, Java zu benutzen, hinaus noch den Zugriff auf Informationen, die die derzeit g\u00fcltige Session, die [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,8],"tags":[22,18,15,17,19,16,21,20],"class_list":["post-251","post","type-post","status-publish","format-standard","hentry","category-jsp","category-javaweb","tag-application","tag-implizite-objekte","tag-java","tag-java-server-pages","tag-java-web","tag-jsp","tag-request","tag-response"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Die impliziten Objekte - Virtualberater<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Die impliziten Objekte - Virtualberater\" \/>\n<meta property=\"og:description\" content=\"Zur \u00dcbersicht Die impliziten Objekte Im vorigen Beitrag wurde gezeigt, wie man mittels Skiptlets Javacode in JSPs einbetten kann, um so bspw. dynamisch auf Nutzereingaben reagieren zu k\u00f6nnen. Dazu ben\u00f6tigt man aber \u00fcber die M\u00f6glichkeit, Java zu benutzen, hinaus noch den Zugriff auf Informationen, die die derzeit g\u00fcltige Session, die [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtualberater\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-20T17:12:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-02-03T11:51:40+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\" \/>\n<meta name=\"author\" content=\"Franz-Martin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Franz-Martin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\"},\"author\":{\"name\":\"Franz-Martin\",\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609\"},\"headline\":\"Die impliziten Objekte\",\"datePublished\":\"2018-01-20T17:12:33+00:00\",\"dateModified\":\"2019-02-03T11:51:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\"},\"wordCount\":2038,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609\"},\"image\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\",\"keywords\":[\"application\",\"implizite Objekte\",\"Java\",\"Java Server Pages\",\"Java Web\",\"Jsp\",\"request\",\"response\"],\"articleSection\":[\"Java Server Pages\",\"Java Web\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\",\"url\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\",\"name\":\"Die impliziten Objekte - Virtualberater\",\"isPartOf\":{\"@id\":\"https:\/\/www.virtualberater.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\",\"datePublished\":\"2018-01-20T17:12:33+00:00\",\"dateModified\":\"2019-02-03T11:51:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage\",\"url\":\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\",\"contentUrl\":\"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.virtualberater.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Die impliziten Objekte\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.virtualberater.com\/#website\",\"url\":\"https:\/\/www.virtualberater.com\/\",\"name\":\"Virtualberater\",\"description\":\"Java und mehr\",\"publisher\":{\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609\"},\"alternateName\":\"Java Entwicklung, Microframeworks und Cloud-Native Solutions\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.virtualberater.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609\",\"name\":\"Franz-Martin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/383ead0152e9bb024087006ad8dbfa33de9e321b670411b3370ad907f770a666?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/383ead0152e9bb024087006ad8dbfa33de9e321b670411b3370ad907f770a666?s=96&d=mm&r=g\",\"caption\":\"Franz-Martin\"},\"logo\":{\"@id\":\"https:\/\/www.virtualberater.com\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/www.virtualberater.com\/index.php\/author\/franz-martin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Die impliziten Objekte - Virtualberater","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/","og_locale":"de_DE","og_type":"article","og_title":"Die impliziten Objekte - Virtualberater","og_description":"Zur \u00dcbersicht Die impliziten Objekte Im vorigen Beitrag wurde gezeigt, wie man mittels Skiptlets Javacode in JSPs einbetten kann, um so bspw. dynamisch auf Nutzereingaben reagieren zu k\u00f6nnen. Dazu ben\u00f6tigt man aber \u00fcber die M\u00f6glichkeit, Java zu benutzen, hinaus noch den Zugriff auf Informationen, die die derzeit g\u00fcltige Session, die [&hellip;]","og_url":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/","og_site_name":"Virtualberater","article_published_time":"2018-01-20T17:12:33+00:00","article_modified_time":"2019-02-03T11:51:40+00:00","og_image":[{"url":"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif","type":"","width":"","height":""}],"author":"Franz-Martin","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Franz-Martin","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#article","isPartOf":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/"},"author":{"name":"Franz-Martin","@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609"},"headline":"Die impliziten Objekte","datePublished":"2018-01-20T17:12:33+00:00","dateModified":"2019-02-03T11:51:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/"},"wordCount":2038,"commentCount":0,"publisher":{"@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609"},"image":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage"},"thumbnailUrl":"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif","keywords":["application","implizite Objekte","Java","Java Server Pages","Java Web","Jsp","request","response"],"articleSection":["Java Server Pages","Java Web"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/","url":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/","name":"Die impliziten Objekte - Virtualberater","isPartOf":{"@id":"https:\/\/www.virtualberater.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage"},"image":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage"},"thumbnailUrl":"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif","datePublished":"2018-01-20T17:12:33+00:00","dateModified":"2019-02-03T11:51:40+00:00","breadcrumb":{"@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#primaryimage","url":"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif","contentUrl":"http:\/\/web.archive.org\/web\/20170501101200im_\/http:\/\/www.jsptutorial.org\/pics\/dot.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/www.virtualberater.com\/index.php\/2018\/01\/20\/die-impliziten-objekte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.virtualberater.com\/"},{"@type":"ListItem","position":2,"name":"Die impliziten Objekte"}]},{"@type":"WebSite","@id":"https:\/\/www.virtualberater.com\/#website","url":"https:\/\/www.virtualberater.com\/","name":"Virtualberater","description":"Java und mehr","publisher":{"@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609"},"alternateName":"Java Entwicklung, Microframeworks und Cloud-Native Solutions","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.virtualberater.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/c70d622c592ff122093a39649b040609","name":"Franz-Martin","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/383ead0152e9bb024087006ad8dbfa33de9e321b670411b3370ad907f770a666?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/383ead0152e9bb024087006ad8dbfa33de9e321b670411b3370ad907f770a666?s=96&d=mm&r=g","caption":"Franz-Martin"},"logo":{"@id":"https:\/\/www.virtualberater.com\/#\/schema\/person\/image\/"},"url":"https:\/\/www.virtualberater.com\/index.php\/author\/franz-martin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/posts\/251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/comments?post=251"}],"version-history":[{"count":33,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/posts\/251\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/posts\/251\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/media?parent=251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/categories?post=251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.virtualberater.com\/index.php\/wp-json\/wp\/v2\/tags?post=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}