subrutin
a sequence of programmer life

Advertisement

Mengubah Project Aplikasi Web Maven Menjadi Servlet 4

0 197

Pada project berbasis web yang di-generate menggunakan Apache Maven pada artikel sebelumnya, spesifikasi servlet yang digunakan adalah servlet 2.3, ini dapat diperhatikan pada file web.xml,serta Project Facets di Project Properties. Sedangkan teknologi servlet terbaru saat tulisan ini dibuat sudah mencapai Servlet 4.1. ( Sedangkan Servlet 5 saat ini masih dalam tahap pengembangan oleh komunitas Eclipse Jakarta EE )

Advertisement

Kali ini, subrutin ingin menujukan kepada pembaca bagaimana mengubah project pertama maven yang semula menggunakan teknologi Servlet 2.3 menjadi Servlet 4.1. Untuk keperluan itu, diasumsikan pembaca sudah mengikuti artikel subrutin sebelumnya yang membahas tentang project aplikasi web menggunakan Apache Maven. Jika pembaca belum mengikuti seri tulisan sebelumnya, silahkan merujuk pada tautan berikut:

  • Prasyarat

Pada tutorial ini, programmer diasumsikan sudah mengenerate aplikasi web menggunakan archetype-web-app sekaligus mengimpornya kedalam Eclipse IDE, sebagaimana dibahas pada artikel berjudul Membangun Project Aplikasi Java Berbasis Web via Apache Maven (Bagian -1)

 mvn archetype:generate -DgroupId=com.subrutin -DartifactId=hello-servlet-v4 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
  • Servlet-api dan jsp-api

Setelah proses impor ke Eclipse IDE, akan muncul error berikut,

the superclass javax.servlet.http.httpservlet was not found on the java build path

Programmer dapat menambahkan dependensi berikut pada pom.xml

<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>4.0.3</version>
    <scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp/jakarta.servlet.jsp-api -->
<dependency>
    <groupId>jakarta.servlet.jsp</groupId>
    <artifactId>jakarta.servlet.jsp-api</artifactId>
    <version>2.3.6</version>
    <scope>provided</scope>
</dependency>

Advertisement

Perhatikan disini, pom.xml telah ditambahkan depedensi jsp-api versi 2.3.6 dan servlet-api versi 4. Berikutnya ubah web.xml dengan schema servlet 2.5 menjadi seperti berikut

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
  version="2.5">
  <display-name>Archetype Created Web Application</display-name>
</web-app>

Jalankan program tersebut menggunakan Apache Tomcat, aplikasi akan berjalan di browser pada http://localhost:8080/hello-servlet-v4 seperti gambar berikut

Advertisement

  • Menghilangkan web.xml

Semenjak Apache Tomcat 7 (Servlet v3.x). Programmer dapat menghapus file web.xml dan menggantinya dengan anotasi @WebServlet sebagai  deployment descriptor dari Servlet.

package com.subrutin.helloservlet;

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;

@WebServlet("/halo")
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        String title = "Halo Servlet";
        String docType ="<!DOCTYPE html>";
        out.println(docType+"<html><head><title>"
        		+ title
        		+ "</title></head>"
        		+ "<body>Halo ini servlet 4</body></html>");

    }

}

Perhatikan pada baris 12, dimana ditulis anotasi @WebServlet("/halo") yang menandakan class HelloServlet akan dipanggil oleh container saat URL /halo diakses oleh pengguna. Bandingkan dengan spesifikasi sebelum menggunakan servlet 3, dimana programmer harus menuliskan deployment descriptor pada web.xml 

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  	<servlet-name>hello-servlet</servlet-name>
  	<servlet-class>com.subrutin.helloservlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>hello-servlet</servlet-name>
  	<url-pattern>/halo</url-pattern>
  </servlet-mapping>
</web-app>

Perhatikan perbedaan penulisan yang cukup signifikan antara penggunaan web.xml dan anotasi, penggunaan anotasi @WebServlet("/halo") dipandang lebih mudah dan lebih sederhana dibandingkan menggunakan tag xml

Kode sumber yang dibahas pada artikel ini dapat diunduh pada repository github pada tautan ini.

 

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.