Category Archives: Servlet

Menggunakan RequestDispatcher pada Servlet dan JSP

RequestDispatcher dapat digunakan sebagai penerus data dari servlet menuju jsp. Apabila sebelumnya kita menggunakan session untuk menyimpan data dan memforward data tersebut menuju jsp. Kali ini kita akan menggunakan RequestDispatcher untuk meneruskan request dari suatu page menuju servlet kemudian langsung diproses oleh page receiver. Berikut contoh penggunaan RequestDispatcher

package com.zisal.loginapp;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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.setAttribute("user", loginService.getUserName(userId));
			RequestDispatcher dispatcher = request.getRequestDispatcher("Success.jsp");
			dispatcher.forward(request, response);			
		}else{
			response.sendRedirect("index.jsp");
		}
	}
}

Request dari page sebelumnya akan disimpan dalam attribut “user” kemudian akan diteruskan ke page Success.jsp melalui RequestDispatcher.

LoginDetail.jsp

<%@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) request.getAttribute("user");		
		if(user != null){
			out.println("<h3>You Logged in as ".concat(user.getUserName())+"</h3>");
		}
	%>
</body>
</html>

Pada LoginDetail.jsp, page tersebut akan menangkap request dari page lain dengan attribu “user”.

output :

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 :

Request, Session dan Context pada Servlet

Pemrograman java web memiliki Servlet, Request, session dan context. Object- object yang dibuat dalam sebuah program memiliki scope (cakupan) masing- masing. Pada dasarnya servlet sendiri adalah sebuah object yang dibuat oleh container atau web server contohnya Tomcat. Setiap user yang mengakses suatu servlet, sebenarnya bukan container tidak menambahkan jumlah servlet tersebut/ menginstansiasi servlet baru. Namun berdasarkan proses “object creation”, container membuat thread baru dari servlet yang diakses tersebut. Berbeda dengan request dan response yang terjadi dalam suatu servlet. Object request maupun response dibuat hanya pada scope akses saja. Dengan hal ini, dapat disimpulkan bahwa setiap setiap request yang berbeda akan memiliki thread servlet yang berbeda, namun tetap instance yang sama dari servlet yang diakses tersebut.
Servlet pada dasarnya mengimplementasikan protokol HTTP. HTTP adalah “stateless protocol” yang mana tidak menyimpan dan mengingat data ataupun user. Namun, ada kalanya kita membutuhkan agar data tersebut diingat dan disimpan oleh Servlet seperti pada proses user login atau keranjang belanja yang mana, data tersebut akan tetap ada selama user masih aktif. Lantas, bagaimana mengimplementasikan hal tersebut dalam servlet, jawabannya adalah Session. Session memungkinkan kita mengakses data yang diinginkan dalam kurun waktu tertentu selama user masih aktif. Session memiliki sifat one per user/ machine yang artinya session di suatu browser hanya akan berlaku pada browser tersebut, namun tidak pada browser yang lain. Berikut merupakan contoh implementasi request object dan session object pada serlet.

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

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 SessionData
 */
@WebServlet("/SessionData")
public class SessionData extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionData() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String userName = request.getParameter("userName");
		HttpSession httpSession = request.getSession();
		if(userName != "" && userName != null){			
			httpSession.setAttribute("userName", userName);
		}
		PrintWriter writer = response.getWriter();
		writer.println("Request Parameter User Name is " + userName);
		try{
			writer.println(" Session Parameter User Name is " + (String) httpSession.getAttribute("userName"));
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

Source code diatas akan membuat Session menggunakan HTTPSession berdasarkan parameter request dari url dan disimpan dengan keyword “userName”.
output dijalankan pada browser mozilla firefox:

User mengakses path aplikasi tanpa request parameter

User mengakses path aplikasi dengan request parameter, sehingga param tersebut menjadi session

User mengakses path aplikasi tanpa request parameter, request menjadi null, namun session tetap ada

User mengakses path aplikasi pada browser lain (Google Chrome), request dan session bernilai null, karena session bersifat one per user/ machine.
Selanjutnya adalah context object. Context/ application object dapat diakses selama container masih aktif. Karena, context object memiliki scope yang sama dengan thread sebuat servlet. Berikut contoh aplikasi servlet menggunakan context object

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
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 SessionData
 */
@WebServlet(urlPatterns = "/ContextData")
public class ContextData extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ContextData() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String userName = request.getParameter("userName");
		HttpSession httpSession = request.getSession();
		ServletContext context = request.getServletContext();
		if(userName != "" && userName != null){			
			httpSession.setAttribute("userName", userName);
			context.setAttribute("userName", userName);
		}
		PrintWriter writer = response.getWriter();
		writer.println("Request Parameter User Name is " + userName);
		try{
			writer.println(" Session Parameter User Name is " + (String) httpSession.getAttribute("userName"));
			writer.println(" Context Parameter User Name is " + (String) context.getAttribute("userName"));
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
}

Sourcecode diatas akan membuat session dan context object berdasarkan request parameter dari user.
output dijalankan pada browser mozilla firefox:

User mengakses path aplikasi tanpa request parameter

User mengakses path aplikasi dengan request parameter, sehingga param tersebut menjadi session dan context object

User mengakses path aplikasi tanpa request parameter, request menjadi null, namun session dan context object tetap ada

User mengakses path aplikasi pada browser lain (Google Chrome), request dan session bernilai null, karena session bersifat one per user/ machine, namun context object masih tetap ada karena container tersebut masih berjalan.
Kesimpulan adalah object- object dalam aplikasi servlet dibedakan berdasarkan scope nya. request/ response hanya memiliki scope pada akses saja. Session object memiliki akses selama user/ session masih aktif. Context object memiliki scope sama dengan container, yang berarti selama container aktif, context object juga tetap aktif.

Menggunakan HTML Tingkat Lanjut dengan Servlet

Penggunaan form kompleks dalam HTML, dapat ditangani dengan servlet sama seperti multiple parameter baik itu berupa method POST ataupun GET. Berikut contoh form dengan HTML tingkat lanjut.
more_html_form.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>More html form</title>
</head>
<body>
	<form action="MoreHtml" method="post">
		Name : <input type="text" name="name">
		<br />
		Gender : 
		<input type="radio" name="gender" value="male">Male</input>
		<input type="radio" name="gender" value="female">Female</input>
		<br />
		Religion : 
		<select name="religion">
			<option value="islam">Islam</option>
			<option value="kristen">Christian</option>
			<option value="katolik">Protestant Christian</option>
			<option value="hindu">Hindu</option>
			<option value="budha">Buddha</option>
		</select>
		<br />
		<input type="submit" value="Send">
	</form>
</body>
</html>

MoreHtml.java

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

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

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String name = request.getParameter("name");
		String gender = request.getParameter("gender");
		String religion = request.getParameter("religion");
		
		if( name != null && gender != null && religion != null ){
			PrintWriter writer = response.getWriter();
			writer.println("Your Name is ".
					concat(name).
					concat(" ").
					concat("You are a ").
					concat(gender).concat(" ").
					concat("and your faith is ").
					concat(religion));
		}
		
		
	}

}

output :

Form dengan Method GET & POST Menggunakan Servlet

Proses pengiriman parameter juga dapat dilakukan dengan menggunakan form html baik menggunakan get dan post. Untuk mengirim parameter tersebut, dibutuhkan html yang memuat form kemudian mengakses servlet untuk memproses parameter post/ get yang dikirim melalui form tersebut.
Berikut contoh penggunaan form menggunakan method GET pada servlet
file name : get_form_page.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Post Form</title>
</head>
<body>
	<form action="GetServlet" method="get">
		Name : <input type="text" name="name"> <br />
		Address : <input type="text" name="address"> <br />
		<input type="submit" value="Send Post">
	</form>
</body>
</html>

file name : “GetServlet.java”

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

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

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String name = request.getParameter("name");
		String address = request.getParameter("address");
		PrintWriter writer = response.getWriter();
		if( name != null && address != null ){
			writer.println("<h3>Get Response : "+name.concat(" ".concat(address))+"</h3>");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

output :


Untuk menerima parameter, dapat menggunakan request.getParameter dengan output berupa String object.Dapat dilihat pada get method, parameter dikirimkan dan ditampilkan pada url browser.
Selanjutnya, post method akan menyembunyikan parameter yang dikirimkan.
Berikut contoh post method menggunakan servlet :
file name : “post_form_page.html”

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Post Form</title>
</head>
<body>
	<form action="PostServlet" method="post">
		Name : <input type="text" name="name"> <br />
		Address : <input type="text" name="address"> <br />
		<input type="submit" value="Send Post">
	</form>
	
</body>
</html>

file name = “PostServlet.java”

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

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

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter in = response.getWriter();
		String name = request.getParameter("name");
		String address = request.getParameter("address");
		in.println("<h3>Your Request is :"+name.concat("-".concat(address))+"</h3>");		
	}

}

output :


Berdasarkan output diatas, dapat dilihat bahwa post method menyembunyikan parameternya dari url.

Servlet Passing Parameters Mengunakan URL

Proses request dan response pada servlet, memungkinkan developer untuk mengirimkan data melalui servlet. Mengirimkan data, bisa melaui form ataupun url langsung baik secara method post maupun get. Untuk menerima parameter dari url, servlet dapat menerimanya dengan menggunakan

request.getParameter("[STRING_PARAM_KEY]")

. Hasil snippet tersebut berupa String, sehingga setiap parameter yang diterima dari url akan diterima dalam bentuk String. Selain itu, Servlet juga dapat menerima multiple url dengan menyertakan wildcard “&” pada parameter yang dikirim.
Berikut contoh multiple parameter servlet.

package zisal.com.simpleweb;

import java.io.IOException;
import java.io.PrintWriter;

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

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String name = request.getParameter("name");
		String address = request.getParameter("address");
		PrintWriter writer = response.getWriter();
		if( name != null && address != null ){
			writer.println("<h3>Get Response : "+name.concat(" ".concat(address))+"</h3>");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

output :

Servlet diatas menerima parameter dengan key “name” dan “address” dan menyimpannya dalam masing- masing String object. Proses pengiriman parameter diawali dengan wildcard “?” dan jika terdapat multiple parameter, dapat disambung dengan menggunakan wildcard “&”.

Java Web dan Servlet

Java sebagai bahasa pemrograman yang menggunakan java virtual machine dapat menjalankan web dengan bantuan application server yang berjalan diatas JVM. Dasar pemrograman web dalam java adalah servlet. Servlet adalah sebuah class Java yang digunakan dalam melakukan operasi- operasi dalam web yakni request dan response. Seperti pada pemrograman web lainnya, proses- proses yang terjadi dalam servlet umumnya terdiri atas dua bagian yakni HTTP post dan HTTP get.
Berikut contoh web java sederhana yang menggunakan servlet untuk melakukan proses GET dan menampilkannya dalam console.

package zisal.com.jsp2;

import java.io.IOException;
import java.io.PrintWriter;

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

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("Hello from GET method");
		PrintWriter writer = response.getWriter();
		writer.println("<h3>Display to browser from servlet</h3>");		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

output:

Berdasarkan sourcecode diatas terdapat anotasi @WebServlet yang mana hal tersebut menentukan deskripsi dan urlPattern. Deskripsi adalah informasi singkat mengenai servlet tersebut. sedangkan urlPattern merupakan path servlet yang dapat diakses dari browser.
@WebServlet(description = “My First Simple Servlet”, urlPatterns = “/Servlet1”)
Dengan informasi @WebServlet tersebut, berarti servlet dapat diakses dengan url “contextPath/Servlet1” dengan deskripsi “My First Simple Servlet”. Anotasi @WebServlet sebenarnya memudahkan developer untuk terlepas dari konfigurasi servlet pada deployment descriptor(web.xml).

Setiap servlet yang kita buat, akan melakukan extend terhadap HTTPServlet sehingga otomatis akan meng-override doPost dan doGet method.Pada masing- masing doPost dan doGet,terdapat HttpServletRequest untuk handling request dan HttpServletResponse untuk handling response dari browser. Pada contoh diatas, saat user mengakses /Servlet1, maka otomatis doGet akan dieksekusi kemudian menampilkan println pada console “Hello from GET method”. Kemudian, menampilkan response yang akan ditampilkan ke dalam browser menggunakan PrintWriter.

Kesimpulannya, dasar pemrograman web dalam java adalah Servlet. Servlet pada dasarnya hanya melakukan proses post dan get yang mana masing- masing dari post dan get tersebut terdapat request dan response.