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 :
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.
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.
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.
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.
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.
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.
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
Posting Komentar