Sitemesh

Pernah merasakan kesulitan ketika menggabungkan beberapa halaman page yang berbeda-beda platformnya, kemudian ingin dijadikan dalam satu tampilan menu yang sama ?. Atau ketika diminta untuk mengubah tampilan page yang terdiri dari beberapa frame menjadi satu page saja, akan tetapi tidak ingin mengubah banyak code program ?. Mungkin sitemesh adalah jawabannya.

Sitemesh adalah produk dari OpenSymphony, salah satu pengembang komponen-komponen class J2EE. Sitemesh ini berupa paket bantu bagi pembuat web di server J2EE dalam mendekorasi halaman web.

Cara kerjanya secara umum adalah sebagai berikut :

Setiap halaman web akan dikembalikan oleh web server dalam bentuk html yang siap untuk ditampilkan di browser. Akan tetapi, file html yang sudah jadi ini tidak langsung dikirimkan ke komputer client yang melakukan request tsb, melainkan dicegat dulu, kemudian didekorasi oleh sitemesh sesuai dengan pilihan dekorasi yang dipilih. Halaman web yang telah didekorasi inilah yang kemudian dikirimkan ke computer client.

Kalau digambarkan dalam diagram detail, adalah sbb :



(gambar ini diambil dari http://www.opensymphony.com/sitemesh/flow.html)

Secara konsep, sitemesh adalah contoh implementasi dari DecoratorPattern yaitu salah satu Design Pattern yang diajukan oleh GangOfFour (GoF). Implementasi dari sitemesh sendiri dilakukan dengan menggunakan fasilitar Filter di lingkungan J2EE. Filter dalam lingkungan J2EE berfungsi untuk mencegat request dan/atau response http. Di level inilah sitemesh berada.Oleh karena sitemesh adalah implementasi dari DecoratorPattern maka ada 3 pihak yang terlibat dalam hal mendekorasi halaman web ini,yaitu :

1. halaman web yang akan didekorasi.
2. halaman template sebagai pendekorasi.
3. file konfigurasi untuk dekorasi.

Ilustrasi gambar ketika 2 halaman web yang berbeda didekorasi dengan sitemesh.


Kasusnya : 2 halaman web berasal dari sistem yang berbeda (satu dari JSP dan yang lain dari script CGI). Kedua halaman web diparsing dan didekorasi sehingga mendapatkan halaman akhir yang mempunyai tampilan yang konsisten.


(deskripsi dan gambar diambil dari http://www.opensymphony.com/sitemesh/ )


Apa keuntungan memakai sitemesh ?
1. Sitemesh dapat digunakan untuk menampilkan menu yang konsisten di sebuah atau beberapa aplikasi J2EE atau menampilkan menu yang konsisten untuk halaman web yang berasal dari beberapa sumber termasuk ASP, PHP, J2EE, CGI dan bahasa server script lainnya.

2. Mudah dalam me-maintain jika ada perubahan dalam dekorasi web, dan tidak perlu merubah semua halaman web, cukup halaman template dekorasinya.

3. Halaman web yang didekorasi tidak akan menyadari kalau dirinya termasuk dalam dekorasi sitemesh. Akibatnya tidak ada perubahan sama sekali yang perlu dilakukan di halaman web tersebut. Hal ini juga memungkinkan kita untuk mengambil halaman web dari manapun halaman tersebut berasal dengan dekorasi yang kita inginkan.

4. Di browser, halaman yang didekorasi akan dianggap seperti sebuah halaman html biasa. Berbeda ketika memakai frame, yang sebuah halamanweb tersebut akan dibagi menjadi beberapa frame.