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 από το προηγούμενο παράδειγμα, άρα λογικά θα πρέπει να δείτε ακριβώς το ίδιο μήνυμα.



Μιχάλης Κασάπογλου


Archive

Contact Form

Send