Anda di halaman 1dari 23

September 2023

Seri Pemrograman

Java Web Servlet


Hello World && Maven
___

Oleh Riadi Marta Dinata, S.Ti., M.Kom.

PENGUMUMAN
Tim Apache NetBeans mengumumkan bahwa Apache NetBeans 19 dirilis pada 1 September
2023. Halaman unduh Apache NetBeans XIX:
https://cwiki.apache.org/confluence/display/NETBEANS/Release+Schedule
Atau
https://www.apache.org/dyn/closer.cgi/netbeans/netbeans-installers/19/Apache-NetBeans-19-
bin-windows-x64.exe

FSTI ISTN #1
2

BAHAN PRAKTIKUM
Pastikan laptop sudah terinstall Java, misal pada cmd ketik java -version

Kemudian Download Apache Tomcat,

https://tomcat.apache.org/download-10.cg

Lalu di install/extract misal di C:\Program Files\apache-tomcat-10.0.27

Apache Tomcat ini merupakan server aplikasi web open-source yang dikembangkan oleh
Apache Software Foundation/ASF untuk menjalankan aplikasi web berbasis keluaran Java (Like
as Container) servlets dan JSP (JavaServer Pages). Artinya sudah pasti harus ada untuk
menjalankan aplikasi-aplikasi yang kita buat nantinya.

2
3

Lalu Download Template Bootstrap terbaru (5.3.0) sebagai bahan uji web:
https://blog.getbootstrap.com/2023/05/30/bootstrap-5-3-0/
Atau
https://getbootstrap.com/docs/5.3/examples/
Adapun kegunaan Bootstrap adalah untuk pembuatan tampilan dan antarmuka web yang
responsif, menarik, dan mudah diakses. Bootstrap 5 ini mengurangi ketergantungan pada
JavaScript dan jQuery. Sehingga memungkinkan penggunaan JavaScript murni (vanilla
JavaScript) untuk meningkatkan kinerja dan kompatibilitas antar browser.

Beberapa komponen UI seperti modals, alerts, dan forms telah ditingkatkan dalam Bootstrap 5,
efeknya adalah lebih responsif dan mudah digunakan. Fitur Sistem grid Bootstrap V telah juga
ditingkatkan dengan penambahan fitur seperti responsif terhadap ukuran layar yang berbeda.

Bootstrap V menggunakan CSS custom properties (variabel CSS) untuk memudahkan


penyesuaian warna, tipografi, dan gaya lainnya.Misal kita akan menggunakan folder album
dalam praktek ini (hasil download), maka kita duplikasi file album tersebut berikut folder assets
yang berada di luarnya. Lalu jadikan dalam satu folder (misal folder albumq) :

3
4

Lalu Uji untuk menjalankannya (klik 2x pada index.html)

Jika sudah sesuai (posisi path assets terhadap script dalam index.html sudah tepat) maka sudah
bisa kita gunakan pada praktek selanjutnya.

PRAKTEK APACHE NETBEANS

Apache NetBeans adalah salah satu Integrated Development Environment (IDE) untuk
mengembangkan aplikasi dan proyek-proyek berbasis Java dalam hal mengembangkan,
menguji, dan menganalisis sistem yang dibuat.Support untuk keluaran berbasis CLI, Desktop,
Web dan Mobile; Juga sebagai Software versi baru untuk Java Apps yang terintegrasi dan gratis,
dengan bahasa pemrograman yang di supportnya antara lain: Java SE, Java EE, PHP, JavaScript,
dan Groovy. Selain fitur-fiturnya, ada sistem desain berbasis Ant, kontrol versi, dan
pemfaktoran ulang.Juga adanya beberapa peningkatan dukungan telah ditambahkan untuk C /C
++, Java, PHP dan HTML. (https://netbeans.apache.org)

Di dalamnya sudah tersedia:

Editor Kode: menulis dan mengedit kode.


Manajemen Proyek: mengatur sumber daya proyek, mengelola dependensi, koneksi ke Git /SVN.
Debugger: mengidentifikasi dan memperbaiki kesalahan dalam kode.
Manajemen Library: menambahkan dan mengelola pustaka-pustaka eksternal
Desain UI: memiliki GUI untuk aplikasi desktop atau antarmuka pengguna web.

4
5

Manajemen Plugin: memperluas fungsionalitas NetBeans sesuai dengan kebutuhan aplikasi.


Manajemen Database: operasi database seperti pengambilan data, pembaruan, dan lainnya.
Uji Otomatis: untuk menguji fungsi-fungsi dalam aplikasi Anda.
Dokumentasi: dalam bentuk komentar dan dokumentasi terstruktur.
Pembangunan dan Distribusi: membangun dan mendistribusikan proyek.

Nama "Apache" dalam "Apache NetBeans", juga "Apache HTTP Server" dan "Apache Tomcat"
merujuk kepada Apache Software Foundation (ASF), / organisasi nirlaba.Nama "Apache"
digunakan sejalan dengan penggabungannya dengan ASF.

Kini September 2023, Versi terbarunya adalah Apache NetBeans XIX., pada rilis ini sudah
ditambahkan dukungan untuk fitur bahasa Java terbaru, sudah mampu mengintegrasikan
kode-kode baru dari Oracle untuk pengembangan Web Java, meningkatkan perangkat Apache
Maven terbaik, menghadirkan beberapa peningkatan untuk pengguna Gradle, termasuk fitur
bawaan untuk Payara dan WildFly untuk pertama kali, memperkenalkan template baru untuk
JavaFX, meningkatkan dan memperluas editor PHP-nya, menyediakan opsi tampilan dan
nuansa gelap baru, dan mencakup berbagai perbaikan.

Semua fitur yang disediakan oleh Apache NetBeans kini adalah tanpa perlu menginstal plugin
tambahan, dan semuanya gratis. Sebagai info, pada Apache NetBeans 12.0 adalah rilis NetBeans
LTS pertama yang sudah support Long Term Support /dukungan yang diberikan oleh developer
software dalam jangka waktu yang panjang.Aplikasi LTS adalah Sistem Software yang di rilis
dengan dukungan dari developer Netbeans dalam waktu yang lama, yaitu 3 tahun untuk versi
desktop dan 5 tahun untuk versi server.

Sedang yang NON LTS, artinya Developer Sosftware tersebut memiliki repository untuk
melakukan update aplikasi, software dan sistem secara sendiri. Sehingga jika dukungan dari
sistem itu sudah habis (sudah lebih dari 18 bulan) maka repository dari sistem itu sendiri tidak
akan di perpanjang lagi oleh pengembang, tidak dikelola lagi, sehingga repository sistemnya
sendiri bisa hilang atau experied, aplikasi ataupun sistem yang digunakan tidak bisa di upgrade
maupun di update.

5
6

Instalasi Netbeans
Setelah download (Apache-NetBeans-19-bin-windows-x64.exe) cukup klik 2x untuk menjalankan.

Setelah intsalasi, untuk pembuatan project I, pilih menu New Project:

6
7

Lalu pilih Web Application (Maven)

Jalankan pada TOMCAT

Pada menu pemilihan server yang diberikan, arahkan Tomcat Apache kepada posisi path hasil
extract / install Apache Tomcat di atas (C:\Program Files\apache-tomcat-10.0.27):

7
8

Dan diakhir proses Wizard pembuatan web Hello World akan dimunculkan kelengkapan sbb:

Terbentuk file pom.xml , sebagai file konfigurasi Maven tentang proyek, dependensi,
pengaturan build, dan plugin yang akan digunakan dalam proyek tersebut.

Lebih tepatnya, file ini berisi informasi tentang proyek seperti nama proyek, deskripsi, versi
proyek, dan informasi lainnya yang berkaitan dengan identitas proyek.

Didalamnya juga ada fitur pengaturan Dependensi, yaitu pustaka-pustaka eksternal yang
diperlukan oleh proyek Apps. Maven akan mengunduh dan mengelola dependensi ini secara
otomatis.

8
9

Pengaturan Plugin Maven: mengkonfigurasi plugin-plugin Maven dalam file pom.xml untuk
menjalankan berbagai tugas seperti kompilasi kode, pengemasan aplikasi, pengujian, dan
lainnya.

Konfigurasi Build: yaitu mencakup konfigurasi build proyek, seperti direktori output, target
kompilasi, dan lain-lain.

Juga di dalam file ada pengaturan Profil, yaitu sebagai penentu profil-profil khusus dalam file
pom.xml yang memungkinkan aplikasi mengatur konfigurasi berdasarkan lingkungan atau
kondisi tertentu.

Dan xml Repository didalamnya akan mendefinisikan repositori Maven tempat Maven akan
mencari dependensi yang tidak tersedia secara lokal.

Selain itu, direktori terbentuk juga secara automatis folder kerja WEB-INF dan META-INF yang
berguna dalam pengaturan, konfigurasi, dan pemisahan kode sumber dari sumber daya dan
metadata aplikasi.

A. Direktori WEB-INF; untuk menyimpan berbagai file dan konfigurasi:


web.xml: berisi informasi tentang servlet-servlet yang digunakan,parameter-parameter
aplikasi, pemetaan URL, digunakan untuk apps servlet dan JSP.
lib/: berisi file JAR (Java Archive) :kode dan pustaka-pustaka dependensi proyek.
classes/: untuk menyimpan file-file kelas Java: servlet, filter, dan berkas-berkas kelas kustom.
**lib/ dan classes/: untuk memisahkan kode sumber dan file-file pustaka yang diperlukan
aplikasi dari file-file publik yang dapat diakses oleh pengguna melalui browser.

B. Direktori META-INF; digunakan sebagai arsip WAR (Web Application Archive) dan berisi
metadata terkait dengan aplikasi web.
MANIFEST.MF: berisi informasi meta-data mengenai arsip JAR atau WAR, termasuk versi,
nama pengembang, dan lainnya. yaitu untuk mengidentifikasi aplikasi web dan menyertakan
informasi tambahan tentang aplikasi.
context.xml: berisi konfigurasi spesifik konteks untuk aplikasi web: pengaturan sumber daya,
konfigurasi data sumber, dan pengaturan khusus lainnya .

9
10

persistence.xml (jika menggunakan JPA): untuk konfigurasi JPA (Java Persistence API) jika
aplikasi web menggunakan JPA untuk mengakses basis data.

Direktori META-INF terletak di dalam arsip WAR, yang artinya metadata ini akan diakses saat
aplikasi web di-deploy pada server seperti Tomcat. Dan Metadata ini dapat digunakan untuk
konfigurasi tambahan atau untuk mengidentifikasi aplikasi web tertentu.

Pada contoh Web Hello World yang terbentuk, jalankan dengan cara klik kanan RUN FILE

Hasilnya mustinya menampilkan web sbb:

Error Apache
Ada kalanya saat dijalankan ada kesalahan dengan menampilkan pesan sbb:

Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.3:war (default-war) on project


apacheNine1: Execution default-war of goal org.apache.maven.plugins:maven-war-plugin:2.3:war failed:
Unable to load the mojo 'war' in the plugin 'org.apache.maven.plugins:maven-war-plugin:2.3' due to an API
incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: null

10
11

-----------------------------------------------------

realm = plugin>org.apache.maven.plugins:maven-war-plugin:2.3
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/C:/Users/adiarray/.m2/repository/org/apache/maven/plugins/maven-war-plugin/2.3/maven-war-plugin-2.3.jar
urls[1] = file:/C:/Users/adiarray/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
urls[2] = file:/C:/Users/adiarray/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar

SOLUSI MAVEN
Gunakan posisi Plugin Maven sbb untuk menggantikan plugins di file POM.xml:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>

atau yang lebih baru:


<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<compilerArgs>
<args>-Djava.endorsed.dirs=${endorsed.dir}</args>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.3.0</version>

11
12

<executions><execution>
<phase>validate</phase>
<goals><goal>copy</goal></goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems> <artifactItem>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${jakartaee}</version>
<type>jar</type>
</artifactItem> </artifactItems>
</configuration>
</execution></executions>
</plugin>
</plugins>

Menggunakan Bootstrap Template


Tempatkan template, assets dan sesuaikan Path dan posisi pada index.html,, Lalu jalankan
(Pada index.html milk kanan RUN-FILE)

12
13

hasilnya adalah web aplikasi aktif pada port :8080:

Tambahkan New File-JSP, beri nama index.jsp,

13
14

lalu copas semua ke isi index.html ke dalam index.jsp; dan jalankan (Klik kanan Run File):

14
15

hasilnya adalah sama…..hanya dengan menggunakan extensi .jsp, kita sudah bisa melakukan
pemrograman Java….berbasis Web !

Coba uji selanjutnya pada script index.jsp berikan script sbb:


<%@ page import = "java.io.*,java.util.*, javax.servlet.*" %>
<%
Date date = new Date();
out.print( "<h2 align = \"center\">" +date.toString()+"</h2>");
%>

15
16

Saat di Klik kanan RUN FILE:

Pengujian File Servlet: New -> Servlet

16
17

Beri nama silakan menyesuaikan:

Konfigurasi Automatis akan masuk ke file web.xml, berupa mapping address file; yang artinya
file bisa berdiri sendiri tanpa harus dipanggil melalui link utama lainnya.

17
18

Selanjutnya untuk uji Hello World pada Servlet, lakukan klik kanan pada servlet terbentuk=>
RUN-> File

Selanjutnya, kita akan dibawa ke menu configure servlet; dan Path pemanggilan link bisa diatur
di menu ini:

Dan akan menampilkan pesan Hello World Servlet sbb:

18
19

ERROR SERVLET
Jika ada pesan kesalahan:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile
(default-compile) on project apacheNine1: Compilation failure: Compilation failure:
latServlet/NewServlet.java:[9,21] package javax.servlet does not exist
latServlet/NewServlet.java:[10,26] package javax.servlet.http does not exist
latServlet/NewServlet.java:[11,26] package javax.servlet.http does not exist
latServlet/NewServlet.java:[12,26] package javax.servlet.http does not exist
latServlet/NewServlet.java:[18,33] cannot find symbol
symbol: class HttpServlet
latServlet/NewServlet.java:[29,35] cannot find symbol
symbol: class HttpServletRequest
location: class latServlet.NewServlet …..

Dan saat aplikasi di “Clean and Build” :

19
20

muncul tanda merah sbb:

Dan juga kadang muncul pesan error sbb:

jakarta.servlet.ServletException: Error instantiating servlet class


hal ini terjadi dikarenakan Apache Tomcat yang kita gunakan adalah bukan Apache Tomcat
Defaultnya (XAMPP Tomcat), kecuali versi Apache Tomcat 10 : Jakarta Tomcat.Sehingga kita
sesuaikan import library dan pengaturan POX.xml nya.

20
21

Lakukan solusi sbb:

ubah javax menjadi jakarta; sehingga menjadi:


import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

Demikian pula pada file yang lain sekiranya ada pesan kesalahan dan library yang digunakan
masih javax. (Bukan jakarta).jakarta.servlet (Jakarta Servlet API): adalah versi dari paket servlet
yang diperbarui dan berada di bawah proyek Jakarta EE setelah migrasi dari Oracle ke Eclipse
Foundation.

Jakarta Servlet API (biasanya disebut Jakarta Servlet) adalah kelanjutan dari Java Servlet API
(javax.servlet) dengan beberapa perubahan dan perbaikan. Jakarta Servlet API memiliki struktur
paket yang serupa dengan javax.servlet, tetapi dengan nama paket yang berbeda.

Perubahan ini termasuk migrasi dari nama paket javax.servlet ke jakarta.servlet. Ini dilakukan
karena masalah lisensi yang melibatkan merek dagang "Java EE" yang dimiliki oleh Oracle.

Seiring dengan perubahan nama paket, juga terdapat perubahan pada kelompok nama paket
terkait lainnya seperti javax.servlet.http, yang berubah menjadi jakarta.servlet.http.

21
22

Catatan:
1.Antara servlet EE dan jakarta EE
jika kita mengembangkan aplikasi web dengan menggunakan Jakarta EE (sebelumnya Java EE)
versi terbaru, maka kita akan menggunakan jakarta.servlet daripada javax.servlet.
Perubahan ini terutama memengaruhi impor paket dalam kode sumber Anda dan penggunaan
dependensi dalam proyek kita nantinya. Jakarta EE bertujuan untuk melanjutkan
pengembangan platform Java EE yang sudah mapan dengan komunitas Jakarta EE yang terbuka
dan beragam.

2.Antara Gradle atau Maven


yaitu keduanya sebagai tools manajemen proyek dalam pengembangan perangkat lunak dalam
hal mengotomatisasi pembangunan, dan mengelola proyek secara efisien,

A. DSL (Domain-Specific Language):

Gradle: menggunakan bahasa DSL (Domain-Specific Language) berbasis Groovy atau Kotlin untuk mendefinisikan dan
mengkonfigurasi proyek.

Maven: menggunakan format XML untuk konfigurasi proyek. Meskipun XML mudah dibaca, beberapa pengembang
merasa bahwa XML lebih kaku dan kurang ekspresif daripada DSL seperti yang digunakan oleh Gradle.

B. Konfigurasi Proyek:

22
23

Gradle: memungkinkan pengembang untuk mendefinisikan alur kerja yang sangat disesuaikan sesuai dengan kebutuhan
proyek Apps. Ini memungkinkan penyesuaian tingkat tinggi dan kompleksitas dalam konfigurasi proyek.

Maven:
mengikuti konvensi-over-konfigurasi, yang berarti banyak konfigurasi default sudah ada dan diharapkan mengikuti
struktur proyek tertentu. Ini dapat mengurangi keleluasaan dalam menentukan alur kerja proyek.

C. Kinerja:

Gradle: memiliki kinerja yang lebih baik dibandingkan dengan Maven, terutama dalam proyek-proyek besar dengan
banyak dependensi. Ini disebabkan oleh kemampuannya untuk melakukan tugas-tugas build yang lebih cerdas dengan
menggunakan cache.

Maven: umumnya dianggap memiliki kinerja yang baik, tetapi dalam proyek-proyek besar,
kinerja build-nya mungkin menjadi masalah jika tidak diatur dengan benar.

D. Kemampuan Bahasa:
Gradle: Support bahasa pemrograman Groovy dan Kotlin. Ini memungkinkan pengembang untuk menulis kode dalam
bahasa ini dalam file konfigurasi Gradle, yang bisa menjadi kelebihan jika pengembang sudah memiliki pengalaman
dengan bahasa-bahasa ini.
Maven: menggunakan XML untuk konfigurasi, yang bukan bahasa pemrograman seperti Groovy atau Kotlin.

E. Ekosistem Plugin:
Gradle:
memiliki ekosistem plugin yang kuat dan berkembang pesat yang memungkinkan penggunaan plugin pihak ketiga
untuk menambahkan fungsionalitas tambahan ke proyek.

Maven: juga memiliki banyak plugin, tetapi ekosistem plugin Gradle mungkin lebih dinamis dan beragam….

23

Anda mungkin juga menyukai