Dian Aditya

Penjahit Digital.

Struts + Velocity, Solusi Mudah Dan Ideal

Saya masih tertarik nih dengan model aplikasi MVC, kali ini saya akan membahas sedikit tentang Controller pada aplikasi Java Web yang dikenal merupakan solusi MVC paling mudah yaitu Struts2. Tapi ada yang tau apa itu Controller? Nih saya copas dari modul JENI :P ?Controller merupakan sebuah layer yang bekerja untuk mengurusi urusan antar layer, yang artinya bertanggung jawab terhadap eksekusi aplikasi.? Sedangkan untuk masalah Viewer Layer saya menggunakan Velocity yang saya rasa juga lebih mudah dibandingkan dengan JSP. Langsusng saja dari pada bingung apa maksudnya mending kita langsung terjun ke lapangan. Untuk memulai membuat project pertama buka IDE anda :D dalam kasus kali ini saya menggunakan Eclipse IDE. Eits, jangan lupa untuk mendownload library, bagi anda yang belum mempunyai library Struts2 dan Velocity silakan download di sini. Nah mari menuju medan perang! Pertama buat project baru. Untuk Eclipse silakan klik ?File ? New ? Other ? Web ? Dynamic Web Project? Maka otomatis akan langsung terbentuk folder src dan WebContent. Copy semua library yang sudah didownload ke dalam folder WebContent/WEB-INF/lib maka library tersebut akan langsung dikenali sebagai Web App Libraries. Nah setelah semua library siap langkah pertama untuk membuat sebuah aplikasi Struts2 adalah dengan mengkonfigurasi web.xml yang terdapat pada folder WebContent/WEB-INF. Berikut konfigurasi yang harus ditambahkan pada web.xml :

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  3:   <display-name>Struts2</display-name>
  4:   <filter>
  5:     <filter-name>struts2</filter-name>
  6:     <filter-class>org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter</filter-class>
  7:   </filter>
  8:   <filter-mapping>
  9:     <filter-name>struts2</filter-name>
 10:     <url-pattern>/*</url-pattern>
 11:   </filter-mapping>
 12:   <welcome-file-list>
 13:     <welcome-file>index.jsp</welcome-file>
 14:   </welcome-file-list>
 15: </web-app>

Selanjutnya kita buat class action dari Struts2, action ini adalah class yang fungsinya tidak jauh berbeda dengan class POJO yaitu menampung properti-properti yang akan dikenal pada presentation layer MVC yang mengimplementasikan action pada Struts2. Berikut contohnya :

  1: package com.mervpolis.struts;
  2:
  3: import java.sql.Timestamp;
  4:
  5: import com.opensymphony.xwork2.ActionSupport;
  6:
  7: public class HelloWorldAction extends ActionSupport {
  8:     private String pesan;
  9:     private String waktu;
 10:
 11:     public String execute() {
 12:
 13:         pesan = "HELLO WORLD....!!! Method execute telah dijalankan....";
 14:         waktu = new Timestamp(System.currentTimeMillis()).toString();
 15:
 16:         return SUCCESS;
 17:     }
 18:
 19:     public void setPesan(String pesan) {
 20:         this.pesan = pesan;
 21:     }
 22:
 23:     public String getPesan() {
 24:         return pesan;
 25:     }
 26:
 27:     public void setWaktu(String waktu) {
 28:         this.waktu = waktu;
 29:     }
 30:
 31:     public String getWaktu() {
 32:         return waktu;
 33:     }
 34:
 35: }

Contoh diatas hampir mirip dengan class POJO yang memiliki method get dan set, perbedaannya adalah action dari Struts2 memiliki method execute() yang akan dijalankan ketika client memangil action tersebut. Tinggal kita membuat viewnya, pada bagian ini sudah saya jelaskan sebelumnya kita akan menggunakan Velocity sebagai viewer layernya, kita buat file hello.vm pada folder WebContent/view.

  1: <html>
  2:   <head>
  3:     <title>Project Struts2 Pertama</title>
  4:   </head>
  5:   <body>
  6:     <p>Pesan : $pesan</p>
  7:     <p>Waktu hari ini : $waktu</p>
  8:   </body>
  9: </html>

Sepertinya baris kode diatas sudah cukup untuk menjelaskan mengapa saya menyebut Velocity lebih simple daripada JSP. Sekarang bandingkan dengan hello.jsp berikut.

  1: <%@taglib prefix="s" uri="/struts-tags" %>
  2: <html>
  3:   <head>
  4:     <title>Project Struts2 Pertama</title>
  5:   </head>
  6:   <body>
  7:     <p>Pesan : <s:property value="pesan" /></p>
  8:     <p>Waktu hari ini : <s:property value="waktu" /></p>
  9:   </body>
 10: </html>

Nah anda tinggal pilih lebih suka menggunakan viewer yang mana. Sekarang kita masuk ke bagian inti dari semua itu yaitu membuat file konfigurasi struts.xml yang diletakkan pada folder src. Selanjutnya kita hanya perlu memapping action yang telah kita buat ke dalam file konfigurasi ini.

  1: <?xml version="1.0" encoding="UTF-8" ?>
  2:
  3: <!DOCTYPE struts PUBLIC
  4:     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  5:     "http://struts.apache.org/dtds/struts-2.0.dtd">
  6:
  7: <struts>
  8:   <package name="default" extends="struts-default" namespace="/cobastruts">
  9:     <action name="HelloVelocity" class="com.mervpolis.struts.HelloWorldAction">
 10:       <result name="success" type="velocity">/view/hello.vm</result>
 11:     </action>
 12:     <action name="HelloJSP" class="com.mervpolis.struts.HelloWorldAction">
 13:       <result name="success">/view/hello.jsp</result>
 14:     </action>
 15:   </package>
 16: </struts>

Buat file index.jsp yang akan me-redirect halaman langsung ke action, file ini akan dijalankan pertama kali saat aplikasi baru dijalankan.

  1: <%
  2:   response.sendRedirect("cobastruts/HelloVelocity.action");
  3: %>

Sekarang coba jalankan aplikasi tersebut pada server dengan mengetik http://[host]:[port]/[namaproject]/ Dan hasilnya adalah : Selesai sudah bahasan hari ini :D Mudah bukan membuat aplikasi web menggunakan Controller Struts2, tinggal menambahkan kreativitas dan sedikit ide gila anda untuk menjadikan banyak aplikasi yang mungkin tidak pernah terpikirkan sebelumnya.

Comments