FrameWorkII

Pada praktukum hari ini saya akn menjelaskan pembuatan program menggunakan spring dengan nama Uts_kost.

Langkah awal yang harus dilakukan adalah membuat suatu aplikasi di Spring Initializr, dengan alamat http://start.spring.io/. dan caranya seperti pada gambar berikut ini :


langkah ke dua : Open project ke NetBeans seperti gambar berikut


spring adalah :  
Spring merupakan sebuah framework (kerangka kerja) yang digunakan untuk membangun sebuah aplikasi Enterprise. Spring termasuk framework yang lightweight (ringan) untuk mendukung secara penuh dalam pengembangan aplikasi Enterprise siap pakai.
Spring dapat digunakan untuk melakukan pengaturan deklarasi manajemen transaksi, remote access dengan menggunakan RMI atau layanan web lainnya, fasilitas mailing, dan beragam opsi untuk pengaturan data ke database. Spring juga memungkinkan kita menggunakan hanya modul-modul tertentu sehingga kita tidak usah menggunakan semua modul spring dalam aplikasi apabila tidak diperlukan.
Fitur-fitur dari Spring Framework :
1.      Transaction Management : Spring framework menyediakan sebuah layer abstrak yang generik untuk manajemen transaksi, sehingga memudahkan para developer dalam melakukan manajemen transaksi.
2.      JDBC Exception Handling : layer abstrak JDBC menawarkan exception yang bersifat hierarki sehingga memudahkan penanganan error.
3.      Integration with Hibernate, JDO, and iBatis : Spring menawarkan layanan integrasi terbaik dengan Hibernate, JDO dan iBatas
4.      AOP Framework : Spring merupakan framework AOP Terbaik yang pernah ada.
5.      MVC Framework : Spring hadir dengan framework aplikasi web MVC, yang dibangun di atas inti Spring. Spring merupakan framework yang sangat fleksibel dalam pengaturan strategi interface, dan mengakomodasi beberapa teknologi view seperti JSP, Velocity, Tiles, iText, dan POI.
Arsitektur Spring :
1.      Spring AOP
Salah satu komponen utama Spring adalah AOP Framework, AOP framework digunakan untuk :
o    Untuk menyediakan layanan Enterprise, terutama sebagai pengganti EJB. Layanan terpenting dalam layanan ini adalah untuk mendekralitf manajemen transaksi, yang telah disediakan dalam abstraksi spring transaction.
o    Untuk memungkinkan pengguna dalam menerapkan AOP dalam penggunaan OOP.
2.      Spring ORM
Spring ORM berhubungan dengan akses database dan menyediakan lapisan layer terintegrasi dengan ORM yang populer termasuk JDO, Hibernate dan iBatis.
3.      Spring Web
Merupakan bagian dari modul pengembangan Web Spring termasuk Spring Web MVC.
4.      Spring DAO
DAO (Data Access Object) mendukung standarisasi akses data yang menggunakan teknologi seperti JDBC, Hibernate dan JDO.
5.      Spring Context
Paket ini didasari pada paket beans untuk menambah dukungan sumber pesan dan untuk pola desain Observer, dan kemampuan untuk mendapatkan sumber daya yang konsisten dengan menggunakan API.
6.      Spring Web MVC
Menyediakan implementasi MVC untuk aplikasi web.
7.      Spring Core
Paket Spring Core ini merupakan komponen paling penting dari Spring Framework.
Komponen ini menyediakan fitur Dependency Injection. BeanFactory memisahkan dependensi seperti inisialisasi, pembentukan dan akses object dari logika program anda.

itulah sedikit penjelasan tentang spring framework !!

Langkah ke tiga :  setelah itu kita mulai membuat codingnya. dan memulainya adalah sebagai berikut :

1perhatikan gambar berikut :


1. membuat package entity 

di sini saya menggunakan 2 table yakni table admin dan kamar karna aplikasi ini adalah penyewa tempat tinggal/kost

admin.java :

import javax.persistence.*;
import org.hibernate.annotations.CollectionId;
import org.hibernate.annotations.GenericGenerator;

/**
 *
 * @author Lab-MM10
 */
@Entity
@Table (name = "tbl_Admin")
public class Admin {
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid",strategy = "uuid2")
    private String id;
    @Column( nullable = false, length = 20)
    private String username;
    @Column( nullable = false, length = 20)
    private String password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

   
}

kamar.java

package com.megis.kost.entity;

import javax.persistence.*;
import org.hibernate.annotations.CollectionId;
import org.hibernate.annotations.GenericGenerator;

/**
 *
 * @author Lab-MM10
 */
@Entity
@Table (name = "tbl_Siswa")
public class Kamar {
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid",strategy = "uuid2")
    private String id;
    @Column(nullable = false, length = 50)
    private String nama;
    @Column (nullable = false, length = 50)
    private String jekel;
    @Column (nullable = false, length = 50)
    private String pekerjaan;

    public String getId() {
        return id;
    }

    public String getpekerjaan() {
        return pekerjaan;
    }

    public void setpekerjaan(String pekerjaan) {
        this.pekerjaan = pekerjaan;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getjekel() {
        return jekel;
    }

    public void setjekel(String jekel) {
        this.jekel = jekel;
    }
}

2. membuat package dao



admin.dao :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.megis.kost.dao;

import com.megis.kost.entity.Admin;
import java.io.Serializable;
import org.springframework.data.repository.PagingAndSortingRepository;

/**
 *
 * @author Lab-MM10
 */
public interface AdminDao extends PagingAndSortingRepository<Admin, String>{
    
}


kamar.dao :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.megis.kost.dao;

import com.megis.kost.entity.Kamar;
import java.io.Serializable;
import org.springframework.data.repository.PagingAndSortingRepository;

/**
 *
 * @author Lab-MM10
 */
public interface KamarDao extends PagingAndSortingRepository<Kamar, String>{
    
}


3. controller

Admin.controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.megis.kost.controller;

import java.sql.Date;
import java.text.SimpleDateFormat;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.megis.kost.dao.AdminDao;
import com.megis.kost.entity.Admin;

/**
 *
 * @author Aras
 */
@Controller
@RequestMapping("/admin")
public class AdminHtmlController {

    @Autowired
    private AdminDao pd;

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat
                = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class,
                new CustomDateEditor(dateFormat, true));
    }

    @RequestMapping("/list")
    public void daftarAdmin(Model m) {
        m.addAttribute("daftarAdmin", pd.findAll());
    }
    @RequestMapping("/view")
    public void lihatdaftar(Model m){
        m.addAttribute("lihatDaftar", pd.findAll());
    }
    @RequestMapping("/hapus")
    public String hapus(@RequestParam("id") String id) {
        pd.delete(id);
        return "redirect:list";
    }

    @RequestMapping(value = "/form", method = RequestMethod.POST)
    public String form(@Valid Admin p,
            BindingResult errors) {
        if (errors.hasErrors()) {
            return "/admin/form";
        }
        pd.save(p);
        return "redirect:list";
    }

    @RequestMapping(value = "/form", method = RequestMethod.GET)
    public String form(@RequestParam(value = "id",
            required = false) String id, Model m) {
        m.addAttribute("admin", new Admin());
        if (id != null && !id.isEmpty()) {
            Admin p = pd.findOne(id);
            if (p != null) {
                m.addAttribute("admin", p);
            }
        }
        return "/admin/form";
    }
}


kamar.controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.megis.kost.controller;

import java.sql.Date;
import java.text.SimpleDateFormat;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.megis.kost.entity.Kamar;
import com.megis.kost.dao.KamarDao;

/**
 *
 * @author Aras
 */
@Controller
@RequestMapping("/kamar")
public class KamarHtmlController {

    @Autowired
    private KamarDao pd;

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat
                = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class,
                new CustomDateEditor(dateFormat, true));
    }

    @RequestMapping("/list")
    public void daftarKamar(Model m) {
        m.addAttribute("daftarKamar", pd.findAll());
    }
    @RequestMapping("/coba")
    public void coba(Model m) {
        m.addAttribute("daftarKamar", pd.findAll());
    }
    @RequestMapping("/view")
    public void lihatdaftar(Model m){
        m.addAttribute("lihatDaftar", pd.findAll());
    }
    @RequestMapping("/hapus")
    public String hapus(@RequestParam("id") String id) {
        pd.delete(id);
        return "redirect:list";
    }

    @RequestMapping(value = "/form", method = RequestMethod.POST)
    public String form(@Valid Kamar p,
            BindingResult errors) {
        if (errors.hasErrors()) {
            return "/Kamar/form";
        }
        pd.save(p);
        return "redirect:list";
    }

    @RequestMapping(value = "/form", method = RequestMethod.GET)
    public String form(@RequestParam(value = "id",
            required = false) String id, Model m) {
        m.addAttribute("Kamar", new Kamar());
        if (id != null && !id.isEmpty()) {
            Kamar p = pd.findOne(id);
            if (p != null) {
                m.addAttribute("Kamar", p);
            }
        }
        return "/Kamar/form";
    }
}


4. membuat other source

port

spring.datasource.url=jdbc:mysql://localhost/db_kost
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


spring.jpa.generate-ddl=true

server.port = 8082

5. templates.admin


from.html






<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>Tambah Data Admin</title>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
        <h1>Tambah Data Admin</h1>
        <form action="#"
              th:action="@{/admin/form}"
              th:object="${admin}" method="post">
            <table border="1">
                
                <tr>
                    <td>Username</td>
                    <td><input type="text" th:field="*{username}"/></td>
                    <td th:if="${#fields.hasErrors('username')}"
                        th:errors="*{username}"> Pesan Error</td>
                </tr>
                
                <tr>
                    <td>Password</td>
                    <td><input type="text" th:field="*{password}"/></td>
                    <td th:if="${#fields.hasErrors('password')}"
                        th:errors="*{password}"> Pesan Error</td>
                </tr>
                <tr>
                    <td>Aksi</td>
                    <td colspan="2" align="center">
                        <input type="submit" value="simpan"/>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>


List.html

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

    <head>
        <title>Daftar Admin</title>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
        <center>
            <h1>Daftar Admin</h1>
            <a herf="#" th:href="@{/kamar/coba}">
                Kembali</a>

            <table border="1">
                <thead>
                    <tr>
                        <th>Username</th>
                        <th>Password</th>
                        <th>Aksi</th>
                    </tr>
                </thead>
                <tbody>
                    <tr th:each="p : ${daftarAdmin}">
                        <td th:text="${p.username}"></td>
                        <td th:text="${p.password}"></td> 

                        <td>
                          
                            <a href="#" th:href="@{/admin/hapus(id=${p.id})}">
                                Hapus</a>

                        </td>
                    </tr>
                </tbody>
            </table>
        </center>

    </body>
</html>


5. kamar.html

coba.html

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

    <head>
        <title>Daftar Kamar</title>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
        <center>
            <h1>Daftar Kamar dan Admin</h1>
            <a herf="#" th:href="@{/kamar/form}">
                Tambah Data Kamar</a>
            <a herf="#" th:href="@{/admin/form}">
                Tambah Data Admin</a>
         
           
        </center>

    </body>
</html>

from.html

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>Tambah Data Kamar</title>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
        <h1>Tambah Data Kamar</h1>
        <form action="#"
              th:action="@{/kamar/form}"
              th:object="${kamar}" method="post">
            <table border="1">
                
                <tr>
                    <td>Nama</td>
                    <td><input type="text" th:field="*{nama}"/></td>
                    <td th:if="${#fields.hasErrors('nama')}"
                        th:errors="*{nama}"> Pesan Error</td>
                </tr>
                
                <tr>
                    <td>Jekel</td>
                    <td><input type="text" th:field="*{Jekel}"/></td>
                    <td th:if="${#fields.hasErrors('jekel')}"
                        th:errors="*{jekel}"> Pesan Error</td>
                </tr>
                <tr>
                    <td>Pekerjaan</td>
                    <td><input type="text" th:field="*{pekerjaan}"/></td>
                    <td th:if="${#fields.hasErrors('pekerjaan')}"
                        th:errors="*{pekerjaan}"> Pesan Error</td>
                </tr>
                <tr>
                    <td>Aksi</td>
                    <td colspan="2" align="center">
                        <input type="submit" value="simpan"/>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>

list.html

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">

    <head>
        <title>Daftar Kamar</title>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
    <body>
        <center>
            <h1>Daftar Kamar</h1>
            <a herf="#" th:href="@{/kamar/coba}">
                Kembali</a>

            <table border="1">
                <thead>
                    <tr>
                        <th>Nama</th>
                        <th>Jekel/th>
                        <th>Pekerjaan</th>
                        <th>Aksi</th>
                    </tr>
                </thead>
                <tbody>
                    <tr th:each="p : ${daftarKamar}">
                        <td th:text="${p.nama}"></td>
                        <td th:text="${p.jekel}"></td> 
                        <td th:text="${p.pekerjaan}"></td>

                        <td>
                          
                            <a href="#" th:href="@{/kamar/hapus(id=${p.id})}">
                                Hapus</a>

                        </td>
                    </tr>
                </tbody>
            </table>
        </center>

    </body>
</html>


HASIL AKHIR









i


Komentar

Postingan populer dari blog ini

Pindah activity Android Studio

leaflet

MEMBUAT PERHITUNGAN LUAS PERSEGI PANJANG PADA ANDROID