Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
P13 Bab 9 – Java Web
9.1 Tujuan Mahasiswa mengerti dan memahami java web application.
9.2 Materi 1. 2. 3. 4.
Review JDBC Database SQL JDBC
9.3 Review JDBC •
Please read the course materials "P9 - JDBC” and “P10 - JDBC"
9.4 Project Concept Model User dbase UserDatabase Client Web browser
Controller UserController
Package page UserPage
View index listuser user
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 1
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
9.5 Database •
Create a database : Prak.sql 1
•
CREATE DATABASE `Prak`;
Create a users table : Prak.sql 1 2 3 4 5 6 7
CREATE TABLE IF NOT EXISTS `users` ( `uname` VARCHAR(10) NOT NULL, `password` VARCHAR(10) NOT NULL , `email` VARCHAR(40) NOT NULL, `registeredon` DATE NOT NULL, PRIMARYKEY(`uname`) )ENGINE=MYISAM DEFAULT CHARSET = latin1;
9.6 Project 1. Project Configuration Project Name : jsp_day4 Server : Apache Tomcat Java EE Version : Java EE 6 web 2. Project Structure
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 2
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
3. Library
9.7 Source Packages 1. model •
model contains the Plain Old Java Object. User.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package model; /** * * @author dnd */ import java.util.Date; public class User { String uname, password, email; Date registeredon; //put getter and setter here public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getPassword() { return password; }
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 3
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getRegisteredon() { return registeredon; } public void setRegisteredon(Date registeredon) { this.registeredon = registeredon; } }
2. dbase •
dbase contains the class for initiating database connection. UserDatabase.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dbase; /** * * @author dnd */ import java.sql.Connection; import java.sql.DriverManager; public class UserDatabase { public static Connection getConnection() { try { Class.forName("com.mysql.jdbc.Driver"); Connection con; con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/Prak","root",""); return con; } catch(Exception ex) { System.out.println("Database.getConnection() Error -->" + ex.getMessage()); return null; } } public static void close(Connection con) { try { con.close(); } catch(Exception ex) { } } }
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 4
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
3. page •
page contains the logic for database operation. UserPage.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package page; /** * * @author dnd */ import import import import
dbase.UserDatabase; java.sql.*; java.util.*; model.User;
public class UserPage { private Connection connection; public UserPage() { connection = UserDatabase.getConnection(); } public void checkUser(User user) { try { PreparedStatement ps = connection.prepareStatement("select uname from users where uname = ?"); ps.setString(1, user.getUname()); ResultSet rs = ps.executeQuery(); if (rs.next()) // found { updateUser(user); } else { addUser(user); } } catch (Exception ex) { System.out.println("Error in check() -->" + ex.getMessage()); } } public void addUser(User user) { try { PreparedStatement preparedStatement = connection.prepareStatement("insert into users(uname, password, email, registeredon) values (?, ?, ?, ? )"); // Parameters start with 1 preparedStatement.setString(1, user.getUname()); preparedStatement.setString(2, user.getPassword()); preparedStatement.setString(3, user.getEmail()); preparedStatement.setDate(4, new java.sql.Date(user.getRegisteredon().getTime())); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public void deleteUser(String userId) { try { PreparedStatement preparedStatement = connection.prepareStatement("delete from users where uname=?");
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 5
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
62 // Parameters start with 1 63 preparedStatement.setString(1, userId); 64 preparedStatement.executeUpdate(); 65 66 } catch (SQLException e) { 67 e.printStackTrace(); 68 } 69 } 70 71 public void updateUser(User user) { 72 try { 73 PreparedStatement preparedStatement = connection.prepareStatement("update 74 users set password=?, email=?, registeredon=?" 75 + "where uname=?"); 76 // Parameters start with 1 77 System.out.println(new java.sql.Date(user.getRegisteredon().getTime())); 78 preparedStatement.setString(1, user.getPassword()); 79 preparedStatement.setString(2, user.getEmail()); 80 preparedStatement.setDate(3, new 81 java.sql.Date(user.getRegisteredon().getTime())); 82 preparedStatement.setString(4, user.getUname()); 83 preparedStatement.executeUpdate(); 84 85 } catch (SQLException e) { 86 e.printStackTrace(); 87 } 88 } 89 90 public List<User> getAllUsers() { 91 List<User> users = new ArrayList<User>(); 92 try { 93 Statement statement = connection.createStatement(); 94 ResultSet rs = statement.executeQuery("select * from users"); 95 while (rs.next()) { 96 User user = new User(); 97 user.setUname(rs.getString("uname")); 98 user.setPassword(rs.getString("password")); 99 user.setEmail(rs.getString("email")); 100 user.setRegisteredon(rs.getDate("registeredon")); 101 users.add(user); 102 } 103 } catch (SQLException e) { 104 e.printStackTrace(); 105 } 106 107 return users; 108 } 109 110 public User getUserById(String userId) { 111 User user = new User(); 112 try { 113 PreparedStatement preparedStatement = connection.prepareStatement("select * 114 from users where uname=?"); 115 preparedStatement.setString(1, userId); 116 ResultSet rs = preparedStatement.executeQuery(); 117 118 if (rs.next()) { 119 user.setUname(rs.getString("uname")); 120 user.setPassword(rs.getString("password")); 121 user.setEmail(rs.getString("email")); 122 user.setRegisteredon(rs.getDate("registeredon")); 123 } 124 } catch (SQLException e) { 125 e.printStackTrace(); 126 } 127 128 return user; 129 }
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 6
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
120 }
4. controller •
controller contains the servlets. UserController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package controller; /** * * @author dnd */ import import import import import import import import import import import
java.io.IOException; java.text.ParseException; java.text.SimpleDateFormat; java.util.Date; javax.servlet.RequestDispatcher; javax.servlet.ServletException; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; model.User; page.UserPage;
public class UserController extends HttpServlet { private static final long serialVersionUID = 1L; private static String INSERT_OR_EDIT = "/user.jsp"; private static String LIST_USER = "/listuser.jsp"; private UserPage dao; public UserController() { super(); dao = new UserPage(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String forward=""; String action = request.getParameter("action"); if (action.equalsIgnoreCase("delete")){ String userId = request.getParameter("userId"); dao.deleteUser(userId); forward = LIST_USER; request.setAttribute("users", dao.getAllUsers()); } else if (action.equalsIgnoreCase("edit")){ forward = INSERT_OR_EDIT; String userId = request.getParameter("userId"); User user = dao.getUserById(userId); request.setAttribute("user", user); } else if (action.equalsIgnoreCase("listUser")){ forward = LIST_USER; request.setAttribute("users", dao.getAllUsers()); } else { forward = INSERT_OR_EDIT; } RequestDispatcher view = request.getRequestDispatcher(forward); view.forward(request, response); }
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 7
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User user = new User(); user.setUname(request.getParameter("uname")); user.setPassword(request.getParameter("pass")); try { Date reg = new SimpleDateFormat("yyyy/MM/dd").parse(request.getParameter("dob")); System.out.println("rrrrrrrrrrr"+ reg); user.setRegisteredon(reg); } catch (ParseException e) { e.printStackTrace(); } user.setEmail(request.getParameter("email")); String userid = request.getParameter("uname"); if(userid == null || userid.isEmpty()) { dao.addUser(user); } else { user.setUname(userid); dao.checkUser(user); } RequestDispatcher view = request.getRequestDispatcher(LIST_USER); request.setAttribute("users", dao.getAllUsers()); view.forward(request, response); } }
9.8 Web Pages 1. index.jsp index.jsp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<%-Document : index Created on : Jan 8, 2014, 9:34:06 PM Author : dnd --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
JSP SQL Example <jsp:forward page="/UserController?action=listuser" />
2. listuser.jsp listuser.jsp 1 2 3 4
<%-Document : listuser Created on : Jan 8, 2014, 9:58:45 PM Author : dnd
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 8
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
--%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Show All Users Add User
3. user.jsp user.jsp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
<%-Document : user Created on : Jan 8, 2014, 9:58:24 PM Author : dnd --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Add new user
9.9 WEB-INF web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>UserController <servlet-class>controller.UserController <servlet-mapping> <servlet-name>UserController
/UserController <session-config> <session-timeout> 30 <welcome-file-list> <welcome-file>index.jsp
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 10
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
9.10 Result
9.11 Internet Resource • •
Learn JSP, http://www.tutorialspoint.com/jsp/ Core Servlets and JavaServer Pages, Marty Hall, http://pdf.coreservlets.com/first-edition/
Kemarin adalah sepenggal kisah masa lalu, Esok adalah sebuah bayangan, Hari ini adalah fakta yang dapat menjadikan mimpi indah untuk kemarin, Dan esok menjadi sebuah harapan. (DnD)
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 11
Program Studi Teknik Informatika Fakultas Teknologi Informasi
Universitas Mercu Buana Yogyakarta
Kampus II, Jl. Jembatan Merah, Nomor 84.C. Gejayan, Yogyakarta 55283, Telp: (0274) 584922, Fax (0274) 550703
9.12 Tugas Jangan bilang ini halaman yang dicari dan dibaca pertama kali ! Mohon dipelajari (dicoba), Untuk soal UAS akan diberikan tanggal : 07 Januari 2016 Jika ada kesulitan silahkan tanyakan by FB Dalam mendaki tangga ... akan dimulai dari titik terendah ... selanjutnya naik satu jenjang demi satu jenjang untuk mencapai titik tertinggi
Next time, a task waiting for you !
Time to celebrate the year that was, and look forward to the adventures that will be ! Thanks for a great 2015 and wishing you a happy start to 2016. From all of us at FTI UMBY.
Thanks 4 Participating in My Class C U Next Time … with Different Subject With new smile and new spirit ! ~ DnD ~
SQ – http://sidiq.mercubuana-yogya.ac.id –
[email protected] – 12