Tutorial Programming dan Informasi Teknologi

October 24, 2016

TUTORIAL SPRING MVC HIBERNATE MENGGUNAKAN SPRING TOOL SUITE PART I

Kebutuhan Dasar.

1. Spring Tools Suite V.3.6.4 Release.
2. MySql dan Heidi Sql.
3. Apache Tomcat V 7.0 
4. XAMPP 
5. Java 1.7 [Termasuk konfigurasi project facets]
6. JRE 1.7 [JRE System Lib]

Struktur Project [Default by maven project]



Pembuatan Project Dengan Spring Tool Suite.
Buka Spring Tool Suite, pastikan java telah terinstal pada komputer. dan pastikan anda telah memahami apa itu konsep MVC. jika belum memahaminya silahkan buka turorial sebelumnya tentang konsep MVC pada web development disini .

Jika tela membuka Spring tool suite silahkan klik file - new - maven project, lalu pilih workspace atau folder tempat penyimpanan project, seperti terlihat pada gambar berikut.

Gambar 1. New Maven Project
Klik next, setelah itu akan terlihat beberapa pilihan maven project. karena pada tutorial ini akan membuat sebuah web project maka pilih maven.archetype.webapp. seperti terlihat pada gambar 2.

Gambar 2. Maven archetype webapp
Klik next, kemudian tentukan group id dan artifact id. silah menamai sesuka hati anda. dengan mengikuti format berikut com.yourCompany.yourProjectName artifact Id di isi dengan penamaan project anda. sebagai contoh bisa dilihat pada gambar 3.

Gambar 3. Group Id dan Artifact Id
lalu klik finish. maka maven sudah terbentuk. biasanya akan terdapat error. ini dikarenakan project tersebut belum disertakan server runtime. untuk itu kita harus memasukan server runtimenya dengan cara klik kanan pada project lalu klik properties - pilih Java Build Path - lalu klik Add Library.

*Note : Jangan lupa set JRE System Library menjadi JavaSE-1.7 dan juga project Facetsnya menjadi Java 1.7
Gambar 4. Menambahkan Server Runtime
Pilih Server Runtime lalu klik Next. kemudian pilih Apache Tomcat v 7.0 lalu klik finish. Biasanya error yang ada akan hilang. jika masih terdapat error periksa kembali server tomcat nya apakah sudah terinstal dengan benar atau belum.

Setelah menambahkan server runtime langkah selanjutnya mempersiapkan library yang diperlukan. karena project ini menggunakan spring mvc dan orm yang kita gunakan menggunakan Hibernate. kita harus terlebih dahulu mendownload library tersebut. caranya buka POM.XML pada project. tambahkan library disini. untuk mendapatkan librarynya silahkan buka link berikut : mvnrepository.com
 

Untuk mempermudah saya akan sertakan library yang dibutuhkan pada pom.xml.


 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
      <modelVersion>4.0.0</modelVersion>  
      <groupId>com.webproject.tutorial</groupId>  
      <artifactId>myMvcProject</artifactId>  
      <packaging>war</packaging>  
      <version>0.0.1-SNAPSHOT</version>  
      <name>myMvcProject Maven Webapp</name>  
      <url>http://maven.apache.org</url>  
      <properties>  
           <springframework.version>4.1.6.RELEASE</springframework.version>  
           <springsecurity.version>4.0.1.RELEASE</springsecurity.version>  
      </properties>  
      <dependencies>  
           <dependency>  
                <groupId>junit</groupId>  
                <artifactId>junit</artifactId>  
                <version>3.8.1</version>  
                <scope>test</scope>  
           </dependency>  
           <!-- DBCP -->  
           <dependency>  
                <groupId>commons-dbcp</groupId>  
                <artifactId>commons-dbcp</artifactId>  
                <version>1.4</version>  
           </dependency>  
           <!-- Spring -->  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-web</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-webmvc</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-context</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-aop</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-aspects</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-beans</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-context-support</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-orm</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-tx</artifactId>  
                <version>${springframework.version}</version>  
           </dependency>  
           <!-- HIBERNATE -->  
           <dependency>  
                <groupId>org.hibernate</groupId>  
                <artifactId>hibernate-core</artifactId>  
                <version>4.3.10.Final</version>  
           </dependency>  
           <!-- MySql Conector -->  
           <dependency>  
                <groupId>mysql</groupId>  
                <artifactId>mysql-connector-java</artifactId>  
                <version>5.1.25</version>  
           </dependency>  
      </dependencies>  
      <build>  
           <finalName>myMvcProject</finalName>  
      </build>  
 </project>  

Setelah memasukan library nya pada pom.xml project akan mendownload otomatis library tersebut. tunggu sampai prosesnya selesai. jika proses download selesai buka web.xml untuk melakukan konfigurasi. web.xml terdapat pada folder src/webapp/WEB-INF/ . ketikan dispatcher di antara <webapp></webapp> seperti code yang saya contohkan berikut.
 
 <!DOCTYPE web-app PUBLIC  
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
 <web-app>  
      <display-name>Archetype Created Web Application</display-name>  
      <!-- ketikan "dispatcher servlet kemudian tekan ctrl+space agar tergenerate   
           otomatis seperi kode dibawah. buang code yang tidak digunakan agar konfigurasi   
           terlihat seperti berikut" -->  
      <context-param>  
           <!-- lalu ketikan "context" kemudian tekan ctrl+space agar tergenerate   
                otomatis seperi kode dibawah. buang code yang tidak digunakan agar konfigurasi   
                terlihat seperti berikut -->  
           <!-- daftarkan file applicationContext.xml file ini untuk konfigurasi hibernate   
                dan untuk menentukan scan package/ base package -->  
           <param-name>configureContextLocation</param-name>  
           <param-value>WEB-INF/applicationContext.xml</param-value>  
      </context-param>  
      <servlet>  
           <servlet-name>dispatcher</servlet-name>  
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
           <load-on-startup>1</load-on-startup>  
      </servlet>  
      <!-- Map all requests to the DispatcherServlet for handling -->  
      <servlet-mapping>  
           <servlet-name>dispatcher</servlet-name>  
           <url-pattern>/</url-pattern>  
      </servlet-mapping>  
 </web-app>  

Kemudian buat file configuration xml dengan nama dispatcher-servlet dan applicationContext.xml di folder WEB-INF dengan cara klik kanan di folder WEB-INF - new - other - search Spring Bean Configuration file - next - beri nama dispatcher-servlet.xml.- next - lalu pilih namespace declaration yang dibutuhkan. diantaranya spring beans, spring aop, spring context, dan spring mvc lalu ketikan code berikut.

 <?xml version="1.0" encoding="UTF-8"?>  
 <beans xmlns="http://www.springframework.org/schema/beans"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xmlns:aop="http://www.springframework.org/schema/aop"  
      xmlns:context="http://www.springframework.org/schema/context"  
      xmlns:mvc="http://www.springframework.org/schema/mvc"  
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd  
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd  
           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
 <mvc:annotation-driven />  
 <mvc:default-servlet-handler/>  
 <context:component-scan base-package="com.webproject.controller" />  
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
 <property name="prefix" value="/WEB-INF/views/ "/>  
 <property name="suffix" value=".jsp"/>  
 </bean>  
 </beans>  

property prefix berguna untuk memberitahu dimana tempat penyimpanan file jsp atau view yang kita buat. sedangkan suffix berguna untuk memberitahukan extensi yang digunakan. pada proect ini menggunakan .jsp. sedangkan component scan memberitahu dimana letak controller, saat ini package yang berisi file class controller belum kita buat, namun kita daftarkan terlebih dahulu di dispatcher-servletnya agar memudahkan.

Jika sudah membuat file dispathcer-servlet langkah selanjutnya adalah membuat konfigurasi hibernate. caranya adalah dengan membuat file spring bean configuration, langkahnya sama seperti pembuatan file dispatcher servlet.  pilih  namespace declaration yang dibutuhkan. diantaranya spring beans, spring aop, spring context, spring tx dan spring mvc. seperti code berikut.

 <beans xmlns="http://www.springframework.org/schema/beans"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xmlns:aop="http://www.springframework.org/schema/aop"  
      xmlns:context="http://www.springframework.org/schema/context"  
      xmlns:tx="http://www.springframework.org/schema/tx"  
      xmlns:mvc="http://www.springframework.org/schema/mvc"  
      xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd  
           http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd  
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd  
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
 <mvc:annotation-driven />  
 <mvc:default-servlet-handler/>  
 <context:component-scan base-package="com.webproject.dao" />  
 <context:component-scan base-package="com.webproject.service" />  
  <bean id="propertyConfigurer"  
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
     <property name="locations">  
       <list>  
         <value>WEB-INF/jdbc.properties</value>  
       </list>  
     </property>  
   </bean>  
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
     <property name="driverClassName" value="${jdbc.driverClassName}" />  
     <property name="url" value="${jdbc.url}" />  
     <property name="username" value="${jdbc.username}" />  
     <property name="password" value="${jdbc.password}" />  
     <property name="defaultAutoCommit" value="false" />  
   </bean>  
   <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
     <property name="dataSource" ref="dataSource"/>  
     <property name="packagesToScan" value="com.webproject.model" />  
     <property name="hibernateProperties">  
       <props>  
         <prop key="hibernate.dialect">org.hibernate.dialect.${hibernate.dialect}</prop>  
         <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
         <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
       </props>  
     </property>  
   </bean>  
   <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
     <property name="sessionFactory" ref="sessionFactory" />  
   </bean>  
   <tx:annotation-driven />  
 </beans>  

Pada code diatas terlihat penambahan component scan yaitu dao dan service. dao dan service ini adalah sebuah package interface dan implementasi dari interface yang kita buat. package ini  berisikan class interface dan implementasinya, didalam class tersebut terdapat object object perintah yang berasal dari controller ke model dan basis data. di code tersebut juga terdapat penambahan configuration untuk koneksi ke database yaitu file jdbc.properties yang ditempatkan di folder /WEB-INF/. untuk itu setelah pembuatan konfigurasi ini langkah yang harus dilakukan adalah membuat file dan package yang telah didaftarkan diantaranya. pembuatan package controller, dao, service, dan model. lalu membuat file jdbc.properties dan membuat folder views di /WEB-INF/ folder ini akan berisikan file file jsp.

Dengan demikian file konfigurasi telah selesai dibuat. untuk itu selanjutnya adalah pembuatan package-package nya. lihat struktu project disana terdapat java resource lalu expand, maka akan terlihat src/main/java buat package controller, dao, model, service disini. dengan carai klik kanan di src/main/java lalu klik new - packages - beri nama package. penamaan package bisa seperti penamaan group id dengan format com.yourCompany.controller / dao / model dll. seperti gambar berikut.

Gambar 5. Create Package Controller
kita buat package controllernya terlebih dahulu untuk pengetesan konfigurasi. di dalam package controller buatlah satu class dengan nama MainController. lalu ketikan code berikut.


 /**  
  *   
  */  
 package com.myproject.controller;  
 import org.springframework.stereotype.Controller;  
 import org.springframework.web.bind.annotation.RequestMapping;  
 /**  
  * Created by Muhamad Huda Avianto   
  * Nov 26, 2016  
  */  
 @Controller  
 public class MainController {  
      @RequestMapping (value ={"/","home"})  
      public String index (){  
           return "index";  
      }  
 }  

Bisa terlihat terdapat anotasi @Controller yang menandakan class ini adalah controller yang sebelumnya di daftarkan di konfigurasi xml. kemudian anotasi @RequestMapping adalah anotasi yang bertugas menghandle request url oleh user. jadi ketika user menuliskan alamat home pada alamat path project kita maka jsp yang dipanggil adalah index.jsp. program kemudian akan mencari dimana index.jsp berada. konfigurasi suffix dan preffix berguna untuk handle dimana file jsp berada.

Namun saat ini belum terdapat index.jsp untuk itu buatlah folder views di /WEB-INF/ kemudian buat file jsp beri nama index.jsp. buatlah sesederhana mungkin. contoh index jsp saya hanya menampilkan kata HELLO WORLD.

Silahkan Runing program dengan cara klik kana pada project lalu klik run as - Run on server pilih localhost dan pilih tomcat v7.0 . jika masih belum ada tomcat silahkan choose manualy pilih tomcat v7.0 biasanya akan terdownload otomatis oleh spring tools suite. klik finish. tunggu sampai proses runing berjalan. jika proses sudah selesai berjalan silahkan buka browser lalu ketikan http://localhost:8080/NamaProjectKamu/ maka akan muncul tampilan seperti berikut.

Gambar 6. Tampilan Hello World


Jika sudah tampil gambar berikut itu artinya konfigurasi kamu berhasil. jika masih terdapat error jangan sungkan untuk bertanya ya. silahkan isi di kolom komentar. sekian untuk part 1. di part seanjutnya akan ada pembuatan package lain seperti dao, service dan model selain itu akan kita praktekan contoh CRUD ke database. sampai jumpa dipart selanjutnya



3 comments:

  1. mas boy, part 3 nya dong... ditunggu yah :)

    ReplyDelete
  2. kok apllicationContext & dispatcher-servlet saya error, padahal sdh copas????

    ReplyDelete

Contact Form

Name

Email *

Message *