Membuat Aplikasi MVC dengan Menggunakan Servlet

Konsep MVC ( Model, View Controller ) merupakan paradigma pemrograman yang memisahkan antara data layer pada model, presentation layer pada view dan business layer pada controller. Paradigma pemisahan ini ditujukan agar supaya pengembangan aplikasi menjadi lebih mudah, lebih terkontrol , reusable component dan memudahkan dalam proses maintenance. Secara teknis, aplikasi MVC dalam mengunakan servlet dipisah menjadi sebagai berikut. Model dibuat menggunakan standar POJO class, View dibuat menggunakan JSP, sedangkan controller dibuat menggunakan servlet untuk mengendalikan request dan response. Sehingga, servlet akan bekerja untuk mengambil data dari POJO class, kemudian menampikannya pada JSP. Berikut contoh aplikasi MVC menggunakan servlet.

Model = User.java

package com.zisal.loginapp;

import java.io.Serializable;

public class User implements Serializable{
	
	private static final long serialVersionUID = -7218260160925418313L;
	
	private String userId;
	private String userName;
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	@Override
	public String toString() {
		return "User [userId=" + userId + ", userName=" + userName + "]";
	}		
}

view awal = index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Index Page</title>
</head>
<body>
	<form action="Login" method="post">
		User Name : <input type="text" name="userId">
		<br />
		Password : <input type="password" name="password">
		<br />
		<input type="submit" value="Login">
	</form>
	
	<%@ include file="LoginDetail.jsp" %>
</body>
</html>

User akan menginputkan data kedalam form dalam index.jsp kemudian request tersebut akan diproses oleh servlet Login.java

package com.zisal.loginapp;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class Login
 */
@WebServlet(urlPatterns = "/Login")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Login() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String userId = request.getParameter("userId");
		String password = request.getParameter("password");
		
		LoginService loginService = new LoginService();
		boolean result = loginService.authenticate(userId, password);
		if(result){
			request.getSession().setAttribute("user", loginService.getUserName(userId));
			response.sendRedirect("Success.jsp");
		}else{
			response.sendRedirect("index.jsp");
		}
	}
}

Servlet Login.java tersebut akan memproses post method dari inputan form index.jsp Inputan userId, dan password kemudian akan diproses untuk autentikasi menggunakan class LoginService. apabila result = true, maka akan inputan tersebut akan disimpan dalam bentuk session dan page akan di-redirect menuju Success.jsp. jika result = false, maka page akan di-redirect ke halaman awal.

LoginService.java

package com.zisal.loginapp;

import java.util.HashMap;

public class LoginService {

	HashMap<String, String> users = new HashMap<String, String>();
	
	public LoginService() {
		users.put("admin", "admin application");
		users.put("user", "user application");
	}
	
	public boolean authenticate(String userName, String password){			
		if(userName == null || userName.trim() == "" || userName.length()<=0 ){		
			return false;
		}else{
			if(password == null || password.trim() == "" || password.length()<=0){
				return false;
			}else{
				return true;
			}
		}		
	}
	
	public User getUserName(String userId){
		User user = new User();
		user.setUserId(userId);	
		user.setUserName(users.get(userId));		
		return user;
	}
}

Pada LoginService.java secara default akan dipersiapkan 2 user (admin, user), kemudian terdapat method authenticate dan method getUSerName untuk memperoleh detail user object.

success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Success Page</title>
</head>
<body>
	<h3>Login Successfull</h3>
	<%@ include file="LoginDetail.jsp" %>
</body>
</html>

LoginDetail.jsp untuk menangkap data session yang telah dibuat oleh servlet.

<%@page import="com.zisal.loginapp.User"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
	<%
		User user =  (User) session.getAttribute("user");		
		if(user != null){
			out.println("<h3>You Logged in as ".concat(user.getUserName())+"</h3>");
		}
	%>
</body>
</html>

output :

Tagged: , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: