JAVA EE 8 - ΕΝΟΤΗΤΑ 2 – SERVLETS WITHOUT WEB.XML REGISTRATION
Στην προηγούμενη
ενότητα δημιουργήσαμε ένα dynamic
web project και αφού δηλώσαμε το Servlet
στο Web.xml αρχείο,
μπορέσαμε να τρέξουμε το project
μας.
Τώρα θα τρέξουμε το ίδιο project
αλλά με την χρήση των annotations
θα αποφύγουμε οποιαδήποτε δήλωση
του Servlet στο Web.xml.
Ας το δούμε όμως το παράδειγμα πιο
αναλυτικά.
Βασικά δημιουργούμε
ένα καινούργιο project ακολουθώντας
τα ίδια ακριβώς βήματα όπως κάναμε στην
προηγούμενη ενότητα. Βεβαιωνόμαστε
επίσης ότι κατά την δημιουργία του
project έχετε τσεκάρει την
επιλογή να δημιουργηθεί ένα web.xml
αρχείο. Εκεί το μόνο που θα δηλώσουμε
είναι από πιο αρχείο θέλουμε να ξεκινήσει
το project μας. Για παράδειγμα,
σκεφτείτε ότι εκτός από το SimpleServlet
υπήρχε στο project και
ένα αρχείο index.html. Πως θα
ήξερε ο Application Server πιο θα
είναι το επιθυμητό home page της
εφαρμογής μας? Αυτή θα είναι και η μόνη
δήλωση που θα κάνουμε στο καινούργιο
project μας.
Αφού δημιουργήσουμε
το καινούργιο Dynamic Web Project και
του δώσουμε όνομα, χρειάζεται να
δημιουργήσουμε και ένα πακέτο και αμέσως
μετά ένα Servlet με το όνομα
SimpleServlet. Αν έχετε ξεχάσει
κάποια από τα βήματα μπορείτε να
ανατρέξετε στην ενότητα 1.
Όταν τελειώσετε με τα
παραπάνω βήματα, θα δείτε ότι πάνω από
το όνομα της κλάσης υπάρχει ένα annotation
με το όνομα @WebServlet. Αυτό
το είχαμε σβήσει στο πρώτο μας παράδειγμα.
Τώρα θα βασιστούμε στην λειτουργία του
για να εκτελεστεί σωστά η εφαρμογή μας.
Αυτό που στην πραγματικότητα κάνει το
συγκεκριμένο annotation είναι
να προσφέρει μια αντιστοιχία του Servlet
και του URL στο οποίο
ακούει χωρίς να χρειάζεται το web.xml.
Υπάρχουν αρκετά στοιχεία (elements)
που μπορούμε να προσθέσουμε αμέσως
μετά το @WebServlet όπως δείχνει
ο πιο κάτω πίνακας:
Element |
Description |
description |
Description of the servlet |
displayName |
The display name of the servlet |
initParams |
Accepts list of @WebInitParam
annotations |
largeIcon |
The large icon of the servlet |
loadOnStartup |
Load on startup order of the
servlet |
name |
Servlet name |
smallIcon |
The small icon of the servlet |
urlPatterns |
URL patterns that invoke the
servlet |
Με
βάση τον πιο πάνω πίνακα, αλλάζουμε τον
κώδικα του Servlet μας ως
εξής:
Το @WebServlet
annotation αντιστοιχεί την κλάση
SimpleServlet στο URL
pattern /SimpleServlet. Επίσης ονομάζουμε το
Servlet σαν SimpleServlet.
Είναι
χρήσιμο να γράφουμε Servlets με
αυτό τον τρόπο; Εξαρτάται, γιατί το
configuration τώρα είναι μέσα
στον κώδικα που σημαίνει ότι αν θέλουμε
να αλλάξουμε κάποιο element ή
κάποιο annotation θα πρέπει
να γίνει recompile το project
μας. Για παράδειγμα, σκεφτείτε ότι
ενώ έχει γίνει deploy το
project θέλουμε να αλλάξουμε
το URL patterns. Επίσης θα πρέπει
να πηγαίνουμε σε μεμονωμένα αρχεία και
να κάνουμε όλες τις αλλαγές που χρειάζονται
σε κάθε κλάση ξεχωριστά.
Οπότε
είμαστε έτοιμοι να τρέξουμε το project
μας? Το project τρέχει
αλλά δεν ξεκινάει από το Servlet
γιατί δεν το έχουμε δηλώσει στο
Web.xml. Χρειάζεται λοιπόν
να προσθέσουμε και την εξής δήλωση μέσα
στο web.xml:
Τώρα μπορείτε να
ξεκινήσετε τον Application Server και
να τρέξετε την εφαρμογή. Επειδή έχουμε
αντιγράψει τα ίδια html tags από
το προηγούμενο παράδειγμα, άρα λογικά
θα πρέπει να δείτε ακριβώς το ίδιο
μήνυμα.
Μιχάλης Κασάπογλου