Lezione Servlet Natalizi

928 views

Published on

come organizzare un progetto JavaEE con servlet

Published in: Education
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
928
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
36
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Lezione Servlet Natalizi

  1. 1. Lezione Servlet Silvano Natalizi Mar 29, 2010
  2. 2. Le form Html e le Servlet <ul><li>Le form HTML permettono l’input dei dati tramite le loro caselle di testo, ma non possono elaborare questa informazione per creare una risposta dinamica. </li></ul><ul><li>Per elaborare l’informazione possiamo usare una SERVLET </li></ul><ul><li>Questa è uno speciale programma java che può estrarre l’informazione da una request, ed inviare al cliente la risposta (response) desiderata </li></ul>
  3. 3. Client - Server
  4. 4. Che cosa fa il web server ?
  5. 5. Che cosa fa il client ?
  6. 6. Il client browser ottiene l’HTML e lo visualizza all’utente
  7. 7. Il protocollo HTTP
  8. 8. Html è parte della risposta http
  9. 9. Che cosa c’è nella request ? GET
  10. 10. Che cosa c’è nella Request: POST
  11. 11. Anatomia di una request GET
  12. 12. Anatomia di una richiesta POST
  13. 13. Anatomia di una response HTTP
  14. 14. Tutti i pezzi del puzzle
  15. 15. Il server web ama servire pagine statiche
  16. 16. Web server application
  17. 17. Helper app
  18. 18. Che cosa è un contenitore ?
  19. 19. La servlet <ul><li>Una servlet non ha un metodo main </li></ul><ul><li>Essa è sotto il controllo di un’altra applicazione java </li></ul><ul><li>Questa applicazione java è un container </li></ul>
  20. 20. Come è fatta una servlet
  21. 21. Organizzare un progetto <ul><li>La servlet è salvata in src </li></ul><ul><li>La classe compilata è salvata nella cartella classes </li></ul><ul><li>Il descrittore web.xml nella cartella etc </li></ul>
  22. 22. Organizzazione delle cartelle nel server
  23. 23. Il comando di compilazione
  24. 24. Web.xml
  25. 25. Approfondimento Servlet <ul><li>Il package javax.servlet.http ha la classe HttpServlet che possiamo usare per scrivere la nostra Servlet. </li></ul><ul><li>Javax è un’estensione di java </li></ul><ul><li>HttpServlet è una classe astratta (abstract) </li></ul><ul><li>Dobbiamo pertanto definire la nostra servlet che eredita (extends) HttpServlet e la personalizza per i campi che abbiamo sulla nostra form </li></ul><ul><li>Ad esempio una form con i campi firstName e lastName </li></ul><ul><li>Questa form deve ora puntare alla nostra servlet </li></ul>
  26. 26. Struttura predefinita della servlet <ul><li>Una servlet è una classe java con una struttura predefinita, nonché metodi ed attributi. </li></ul><ul><li>Questi sono mandati in esecuzione con una sequenza preordinata ogni qual volta c’è una request per la servlet </li></ul>
  27. 27. Metodi della servlet <ul><li>Due dei più importanti metodi della servlet sono: </li></ul><ul><li>doGet() </li></ul><ul><li>doPost() </li></ul><ul><li>Questi metodi sono richiamati automaticamente dalla classe genitrice HttpServlet quando c’è rispettivamente una richiesta GET/POST </li></ul><ul><li>Per elaborare un contenuto personalizzato, occorre sovrascrivere i metodi doGet() e doPosto(). </li></ul>
  28. 28. Sovrascrittura doGet <ul><li>Per sovrascrivere il metodo doGet, dobbiamo comprendere la sua dichiarazione (signature) </li></ul><ul><li>protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException </li></ul><ul><li>Ha un parametro HttpServletRequest chiamato req </li></ul><ul><li>Ha un parametro HttpServletResponse chiamatato resp </li></ul>
  29. 29. Il parametro req <ul><li>req rappresenta la richiesta corrente da elaborare </li></ul><ul><li>L’input immesso nella form html è trasportato fino al server dalla richiesta </li></ul><ul><li>quello che ci occorre è un metodo per ricavare dal parametro req questa informazione. </li></ul><ul><li>Questo metodo c’è !! </li></ul><ul><li>Si chiama getParameter() </li></ul>
  30. 30. getParameter() <ul><li>Il metodo getParameter() è dichiarato nella interface HttpServletRequest </li></ul><ul><li>Al metodo getParameter() passiamo il nome del campo di input che vogliamo ricavare </li></ul><ul><li>getParameter ci restituisce il valore che l’utente ha digitato per quella variabile </li></ul>
  31. 31. Esempio getParameter <ul><li>Se vogliamo ottenere il valore digitato dall’utente nel campo di <input> firstName della form html: </li></ul><ul><li>String nome=req.getParameter(“firstName”); </li></ul><ul><li>il valore restituito dal metodo getParameter() è sempre di tipo String e contiene null se il campo cercato non esiste nella request </li></ul>
  32. 32. Il parametro resp <ul><li>Ok abbiamo ottenuto firstName e lastName dalla request ed ora ? </li></ul><ul><li>L’azione successiva da intraprendereè creare una dinamica risponse, magari rinviando al cliente firstName e lastName. </li></ul><ul><li>A questo scopo già abbiamo un puntatore all’oggetto response: resp </li></ul><ul><li>resp è di tipo HttpServletResponse </li></ul>
  33. 33. Il metodo getWriter() <ul><li>La classe HttpServletResponse ha un conveniente metodo chiamato getWriter che restituisce un oggetto di tipo java.io.PrintWriter: </li></ul><ul><li>PrintWriter out=resp.getWriter; </li></ul>
  34. 34. Un oggetto di tipo PrintWriter <ul><li>Usiamo un oggetto di tipo PrintWriter per scrivere qualsiasi elemento HTML che vogliamo mostrare nel browser del client. </li></ul><ul><li>PrintWriter è simile a System.out. </li></ul><ul><li>In entrambi i casi si usa println() per scrivere una stringa di caratteri. Ma nel primo caso questa stringa è visualizzata sullo schermo del computer; nel caso invece del println di PrintWriter il contenuto scritto è trasmesso al cliente e visualizzato come HTML </li></ul>
  35. 35. The End

×