Struts + Velocity, Solusi Mudah dan Ideal

Posted on January 03, 2010 by DWA

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.

Lib

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.FilterDispatcher</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 :

HasilAkhir

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.

Filed under Java | 0 Comments | Permalink

Aplikasi CRUD Sederhana dengan EclipseLink

Posted on August 01, 2009 by DWA

Seperti janji saya kemarin (mungkin dulu), kali ini saya akan membahas mengenai proses CRUD dengan EclipseLink karena pada postingan saya yang terdahulu (nggak dulu-dula amat ah….) hanya membahas mengenai inisialisasi EntityManagerFactory.

Sedikit penjelasan mengenai bahasan kali ini yaitu seperti namanya CRUD merupakan proses Create, Read, Update, dan Delete suatu data ke dalam database. Mohon maaf karena kali ini saya hanya akan membahas Create-nya saja.

Ok langsung saja saya jelaskan ……

Pertama buat entity class kemudian buat konfigurasi persistence nya, untuk mempersingkat waktu silakan lihat di sini. Anda bisa memilih menggunakan persistence.xml ataupun Spring. Dalam contoh kali ini saya kan menggunakan Spring untuk inisialisasi EntityManagerFactory-nya.

Dan berikut ini script-nya

  1: package nagasakti.crud;
  2: 
  3: import javax.persistence.EntityManager;
  4: import javax.persistence.EntityManagerFactory;
  5: import nagasakti.entity.Siswa;
  6: import org.springframework.context.ApplicationContext;
  7: import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {
  8:     private ApplicationContext app;
  9:     private EntityManagerFactory emf;
 10:     private EntityManager em;
 11: 
 12:     public Main() {
 13:         app = new ClassPathXmlApplicationContext("applicationContext-EclipseLink.xml");
 14:         emf = (EntityManagerFactory) app.getBean("myEntityManagerFactory");
 15:         em  = emf.createEntityManager();
 16:     }
 17: 
 18:     public void save(Siswa siswa) {
 19:         em.getTransaction().begin();
 20:         em.persist(siswa);
 21:         em.getTransaction().commit();
 22:     }
 23: 
 24:     public static void main(String[] args) {
 25:         Siswa sis = new Siswa();
 26: 
 27:         sis.setName("Kampret");
 28:         sis.setAge("14");
 29: 
 30:         Main main = new Main();
 31:         main.save(sis);
 32:     }
 33: }

Bisa kita lihat dari baris kode diatas, inisialisasi EntityManager berada pada constructor dari class Main, sedangkan proses save data berada pada method save(). Ketika kode diatas dijalankan lihatlah keajaiban yang terjadi, secara otomatis akan terbentuk sebuah table dengan nama siswa serta di dalamnya sudah terisi satu record dengan value “Kampret, 14”. Dari contoh diatas kita bisa lihat betapa mudahnya mengimplementasikan orm pada aplikasi yang kita buat. Monggo dicoba ……..

Filed under Java | 0 Comments | Permalink

EclipseLink Vs EclipseLink+Spring

Posted on July 30, 2009 by DWA

Lagi kurang kerjaan nih, jadi kemarin saya coba-coba membuat EntityManagerFactory yang ada di persistence diinisialisasikan di spring. Untuk ORM-nya saya coba pakai EclipseLink dan database menggunakan MySQL.


Silakan download library di sini

 

Untuk lebih jelasnya mari kita langsung terjun ke lapangan.

Pertama seperti ORM pada umumnya kita buat Entity class terlebih dahulu.

  1: package nagasakti.entity;
  2: 
  3: import java.io.Serializable;
  4: 
  5: import javax.persistence.Column;
  6: import javax.persistence.Entity;
  7: import javax.persistence.GeneratedValue;
  8: import javax.persistence.Id;
  9: import javax.persistence.Table;
 10: 
 11: @Entity
 12: @Table(name="siswa")
 13: public class Siswa implements Serializable{
 14:     @Id
 15:     @GeneratedValue(generator="system-uuid")
 16:     private String id;
 17: 
 18:     @Column(name="name", nullable=false)
 19:     private String name;
 20: 
 21:     @Column(name="age", nullable=false)
 22:     private String age;
 23: 
 24:     public String getId() {
 25:         return id;
 26:     }
 27: 
 28:     public void setId(String id) {
 29:         this.id = id;
 30:     }
 31: 
 32:     public String getName() {
 33:         return name;
 34:     }
 35: 
 36:     public void setName(String name) {
 37:         this.name = name;
 38:     }
 39: 
 40:     public String getAge() {
 41:         return age;
 42:     }
 43: 
 44:     public void setAge(String age) {
 45:         this.age = age;
 46:     }
 47: }
 48: 

Kemudian kita buat file konfigurasi persistence-nya. Disinilah yang berbeda, jika biasanya kita gunakan persistence.xml yang ditaruh di src/META-INF kita ganti dengan konfigurasi spring (applicationContext-EclipseLink.xml) yang ditaruh di folder src.

Berikut file konfigurasi persistence.xml

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  3:   <persistence-unit name="EclipseLinkPlusSpringPU" transaction-type="RESOURCE_LOCAL">
  4:     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
  5:     <class>nagasakti.entity.Siswa</class>
  6:     <properties>
  7:       <property name="eclipselink.jdbc.password" value="admin"/>
  8:       <property name="eclipselink.jdbc.user" value="root"/>
  9:       <property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
 10:       <property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/coba_spring"/>
 11:       <property name="eclipselink.ddl-generation" value="create-tables"/>
 12:     </properties>
 13:   </persistence-unit>
 14: </persistence>

Dan inilah file konfigurasi persistence bila menggunakan spring

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <beans xmlns="http://www.springframework.org/schema/beans"
  3:        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4:        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
  5: 
  6:     <bean name="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  7:         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  8:         <property name="url" value="jdbc:mysql://localhost:3306/coba_spring" />
  9:         <property name="username" value="root" />
 10:         <property name="password" value="admin" />
 11:     </bean>
 12: 
 13:     <bean name="provider" class="org.eclipse.persistence.jpa.PersistenceProvider"/>
 14: 
 15:     <bean name="myEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
 16:         <property name="persistenceUnitName" value="EclipseLinkPlusSpringPU"/>
 17:         <property name="persistenceProvider" ref="provider"/>
 18:         <property name="jpaProperties">
 19:             <props>
 20:                 <prop key="class">nagasakti.entity.Siswa</prop>
 21:                 <prop key="eclipselink.ddl-generation">create-tables</prop>
 22:             </props>
 23:         </property>
 24:     </bean>
 25: </beans>

Setelah melihat perbedaan di atas sekarang kita lihat lagi perbedaan cara inisialisasi EntityManagerFactory.

Jika kita mengambil EntityManagerFactory dari persistence.xml script-nya adalah sebagai berikut.

  1: package nagasakti.crud;
  2: 
  3: import javax.persistence.EntityManagerFactory;
  4: import javax.persistence.Persistence;
  5: 
  6: public class Main {
  7: 
  8:     public static void main(String[] args) {
  9:         EntityManagerFactory emf = Persistence
 10:                 .createEntityManagerFactory("EclipseLinkPlusSpringPU");
 11:     }
 12: 
 13: }
 14: 

sedangkan jika mengambil EntityManagerFactory dari applicationContext-EclipseLink.xml seperti di bawah ini

  1: package nagasakti.crud;
  2: 
  3: import javax.persistence.EntityManagerFactory;
  4: import org.springframework.context.ApplicationContext;
  5: import org.springframework.context.support.ClassPathXmlApplicationContext;
  6: 
  7: public class Main {
  8:     public static void main(String[] args) {
  9:         ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext-EclipseLink.xml");
 10:         EntityManagerFactory emf = (EntityManagerFactory) app.getBean("myEntityManagerFactory");
 11:     }
 12: }
 13: 

Terlihat jika kita menggunakan spring EntityManagerFactory sudah diinisialisasikan di dalam applicationContext-EclipseLink.xml. Dan sedikit catatan jika kita menginginkan file konfigurasi spring di luar folder src maka tinggal mengganti baris ClassPathApplicationContext menjadi FileSystemApplicationContext(::LokasiFile::).

Cukup sekian saja cerita tentang kerjaan iseng saya. Jika ada kesempatan lagi saya akan membahas tentang proses CRUD dengan EclipseLink+Spring, tentunya jika saya lagi kurang kerjaan :)

Filed under Java | 0 Comments | Permalink

Menjalankan Cimande Pada NetBeans 6.5

Posted on March 13, 2009 by DWA

   Iseng - iseng kemarin waktu pusing ngerjain project di kantor, eh tiba - tiba terbesit sebuah pikiran "Bisa nggak yach kalo cimande dijalankan di NetBeans??" Berbekal sebuah penasaran besar setelah menemui beberapa error akhirnya sukses juga.
   Nah, nggak usah basa-basi lagi, sekarang akan saya jabarkan sedikit eksperimen yang telah saya lakukan tadi ....

Pertama - tama Buka NetBeans IDE, kebetulan NetBeans IDE yang saya pakai versi 6.5 (windows) dan cimande 1.3. Selanjutnya buat project baru, lalu pilih kategori "Java Web". Kemudian isi nama project (Cimande), lalu tekan next, pilih server tomcat (dalam hal ini tomcat sudah saya install bersamaan dengan instalasi netbeans yang defaultnya tomcat tidak ikut diinstall). Lalu Tekan Finish.




   Setelah project selesai dibuat, silakan hapus file "index.jsp" dan yang ada pada folder Web Pages dan folder WEB-INF karena file tersebut merupakan file default dari NetBeans.
   Sekarang sejenak kita tinggalkan NetBeansIDE. Masuk ke direktori cimande berada. Copy semua isi dari folder WebContent kemudian paste pada Netbeans dengan click kanan pada Web Pages kemudian pilih menu paste.



   Setelah selesai lakukan hal yang sama pada folder src/config ke dalam folder Configuration File pada Netbeans. Jangan lupa pula mengisi library dengan click kanan pada folder library lalu pilih "Add JAR/Folder", masukkan *.jar file yang ada pada folder lib.



   Dan yang terakhir copy folder classes ke dalam folder WEB-INF pada netbeans.



Nah Sekarang waktunya anda mencoba menjalankan project yang telah anda buat tadi.



Jika proses berjalan seperti pada gambar di atas maka proses berhasil dan NetBeans otomatis akan membuka web browser. Jangan lupa import database agar cimande dapat berjalan. Selamat mencoba
Special Thanks to : Vick

Filed under Java | 2 Comments | Permalink