Ressourcen in JSF-Seite verwenden

Bei der Entwicklung von Webseiten mit JavaServer Faces (JSF) ist es ratsam, alle einzubindenden Dateien (Bilder, Stylesheets, Sounds, etc.) über einen sogenannten Ressourcen-Ordner zu verwenden. In einer JEE-Webanwendung kann der Ordner für Ressourcen in der Datei web.xml mit folgender Deklaration festgelegt werden:

<context-param>
  <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
  <param-value>/WEB-INF/resources</param-value>
</context-param>

Wird der Ordner für Ressourcen nicht direkt angegeben, existiert standardmäßig trotzdem einer an folgendem Ort: webapp/src/main/resources/META-INF/resources. Die Verwendung des Ressourcen-Ordners in JSF-Seiten hat den Vorteil, dass sich alle darin befindlichen Dateien durch einen ResourceHandler verwalten lassen. Außerdem besteht die Möglichkeit durch Konfiguration des Ressourcen-Ordners, alle Ressourcen auszulagern, etwa in einem Content Delivery Network (CDN).

Verwendet man den standardmäßig vorgegebenen Ressourcen-Ordner, so gibt es viele Wege, um Dateien daraus in einer JSF-Seite anzuzeigen. Das folgende Beispiel zeigt fünf verschiedene Möglichkeiten, um ein Bild einzubinden.
Ressourcen in JSF-Seite verwenden weiterlesen

JSON parsen mit Java

Möglichkeit 1

Maven Dependency:

<dependency>
  <groupId>net.sf.json-lib</groupId>
  <artifactId>json-lib</artifactId>
  <version>2.4</version>
  <classifier>jdk15</classifier>
</dependency>

Code:

import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
...
String json = "{\"name\":\"Benny\",\"email\":\"test\\u0040bennyn.de\"}";
JSONObject object = (JSONObject) JSONSerializer.toJSON(json);
String email = object.getString("email"); // test@bennyn.de

Möglichkeit 2

Maven Dependency:

<dependency>
  <groupId>com.restfb</groupId>
  <artifactId>restfb</artifactId>
  <version>1.6.12</version>
</dependency>

Code:

import com.restfb.json.JsonObject;
...
String json = "{\"name\":\"Benny\",\"email\":\"test\\u0040bennyn.de\"}";
JsonObject object = new JsonObject(json);
String email = object.getString("email"); // test@bennyn.de

Conditional Comments in JSF verwenden

Bei der Verwendung von Conditional Comments mit JavaServer Faces ist mir aufgefallen, dass diese Kontrollstrukturen maskiert werden und so nicht einsetzbar sind.

Aus der Anweisung:

<!--[if lte IE 8]>
  <script src="js/excanvas_r3-compiled.js"/>
<![endif]-->

wurde plötzlich:

<!--[if lte IE 8]&gt;
&lt;script src=&quot;js/excanvas_r3-compiled.js&quot;&gt;&lt;/script&gt;
&lt;![endif]-->

Die Lösung des Problems brachte das verbatim-Tag:

<f:verbatim>
  <!--[if lte IE 8]>
    <script src="js/excanvas_r3-compiled.js"></script>
  <![endif]-->
</f:verbatim>

Zugriffsberechtigte über ein JDBCRealm aus MySQL-Datenbank laden

Im Beitrag [post id=4748]Sicherheit durch Zugriffsbeschränkungen in JEE Web-Anwendungen[/post] wurde gezeigt, wie man bestimmte Seiten nur für gewisse Benutzer und Benutzergruppen sichtbar macht. Allerdings musste man diese Benutzer direkt in der Konfigurationsdatei vom Apache Tomcat 7 Application Server eintragen. Das ist nicht besonders flexibel. Deswegen werden wir im nächsten Schritt die Zugriffsberechtigungen aus einer MySQL-Datenbank holen. Dafür können wir unsere bestehende JDBC-Ressource jdbc/foo4 (aus dem Beispiel [post id=4709]JDBC-Ressource über JNDI referenzieren und mit Tomcat verwenden[/post]) benutzen.
Zugriffsberechtigte über ein JDBCRealm aus MySQL-Datenbank laden weiterlesen