Zu Beginn werden alle nötigen Java-Klassen importiert und die Parameter aus der URL gelesen. Die Hilfsklasse Poster wird verwendet, um Informationen über die verfügbaren Jahre und Runden zu erhalten.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import=... %>
...
Poster myPoster = new Poster(app);
String[] rounds = myPoster.GetAllRounds(year);
...
Anschließend werden Informationen für Navigation (z. B. Vorjahr, nächste Runde etc.) berechnet und als Session-Attribute gespeichert, sodass sie später auf der Seite oder in anderen JSPs wiederverwendet werden können.
Im <head>-Bereich werden die Stylesheets geladen und CSS-Regeln definiert. Diese strukturieren die Seite responsiv und sorgen für ein einheitliches Aussehen.
Das <body> enthält ein <div class="container"> mit einem flexiblen Layout für Header, Content-Bereich und Footer. Das Layout passt sich der Höhe des Browserfensters an.
Im oberen Bereich wird ein Header mit Links zu Vor- und Folgejahr angezeigt. Falls Runden aktiv sind, gibt es darunter eine zweite Leiste mit Runden-Navigation.
<header class="header">
<a href="audioplayer.jsp?year=...">« Vorjahr</a>
...
</header>
Abhängig vom Parameter round wird das passende MP3-Verzeichnis ermittelt. Dann werden alle MP3-Dateien geladen und mit mp3agic ausgelesen (z. B. Titel, Artist, Cover).
Falls ein Coverbild vorhanden ist, wird es als Base64 eingebettet und als Hintergrund verwendet. Es wird überprüft, ob es sich um ein Compilation-Album mit mehreren Künstlern handelt.
Der Player zeigt ein zentrales Steuerelement (Play, Nächstes, Zufall, Download) und eine Playlist-Tabelle mit allen Tracks. Die Tabelle enthält Coverbild, Titel und ggf. den Künstler.
Falls keine MP3-Dateien gefunden werden, wird eine Zufallsgrafik angezeigt und eine Fehlermeldung ausgegeben.
Das Skript im <script>-Block am Ende der Seite sorgt für:
Besonderheiten: Base64-Bilder werden per Canvas transparent gemacht, was für den Hintergrundeffekt genutzt wird.
Am unteren Seitenrand wird erneut eine Navigationsleiste angezeigt, inklusive Link zurück zur „Interpreten“-Seite mit Buchstabenfilter.
Die Seite ist modular aufgebaut und erlaubt die Navigation durch Jahre und Runden. Audio-Dateien werden elegant mit Metadaten präsentiert. Die Nutzung von Java, JSP und JavaScript ergibt ein dynamisches und anpassbares Medientool.