SERVLET - Prof-Matteo-Palitto-Peano/Web-Services GitHub Wiki
Il Servlet e' un programma scritto con il linguaggio di programmazione Java e che usa delle estensioni per poter dialogare con il Servlet-Container di un Web-Server.
Il Servlet viene inizializzato, avviato, e eventualmente stoppato dal Web-Server tramite il Web-Container.
Una volta avviato, il servlet riceve le richieste inoltrate dai Client(Browser) al Web-Server, tramite il Servlet-Container, quindi ne elabora la risposta e la fornisce al Web-Server che a sua volta la inoltra al Client.
Per poter sviluppare dei Servlet usando Netbeans IDE, e' necessario installare installare il Java EE Base Plugin.
Una volta installto il Plugin si avra' la possibilita' di creare un nuovo progetto di tipo Java Web.
Per poter avviare un Servlet sara' necessario aggiungere un nuovo Server dal TAB Services di Netbeans.
Per esempio potremmo usare Tomcat oppure GlassFish.
Sono l'insieme delle classi e interfaccie che permettono al nostro programma Java (Servlet) di comunicare con il Web Server.
Contiene quelle Classi e Interfaccie che permettono al Web/Servlet Container di gestire i Servlet, come per esempio inizializzare, eseguire e fermare l'esecuzione del Servlet.
Questi sono generali e non specifici al protocollo HTTP.
Method | Description |
---|---|
public void init(ServletConfig config) | inizzializza il servlet. Viene invocato dal Servlet/Web Container una sola volta. |
public void service(ServletRequest request,ServletResponse response) | Viene invocato dal Web Container tutte le volte il Web Server riceve una richiesta ed e' usato per elaborare la richiesta e quindi fornire la risposta. |
public void destroy() | Viene invocato dal Web Container una sola volta quando il Servlet sta per essere eliminato. |
public ServletConfig getServletConfig() | restituisce L'Oggetto ServletConfig. |
public String getServletInfo() | restituisce informazioni relative al servlet come chi e' l'autore, copyright, versione etc. |
import java.io.*;
import javax.servlet.*;
public class First implements Servlet {
ServletConfig config=null;
public void init(ServletConfig config) {
this.config=config;
System.out.println("servlet is initialized");
}
public void service(ServletRequest req,ServletResponse res) throws IOException,ServletException {
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello simple servlet</b>");
out.print("</body></html>");
}
public void destroy(){System.out.println("servlet is destroyed");}
public ServletConfig getServletConfig(){return config;}
public String getServletInfo(){return "copyright 2007-1010";}
}
Serve per fornire al programmatore una implementazione di default per l'implementazione di un Servlet.
GenericServlett class implementa tutti i metodi delle interfaccie Servlet, ServletConfig e Serializable tranne del Metodo service.
Questa e' la lista dei metodi implementati dalla classe:
- public void init(ServletConfig config) initializza il servlet.
- public abstract void service(ServletRequest request, ServletResponse response) Viene invocato dal Web Container tutte le volte il Web Server riceve una richiesta ed e' usato per elaborare la richiesta e quindi fornire la risposta. Questo Metodo e' ASTRATTO e dovra' essere implementato dalla classe che eredita la classe GenericServlett.
- public void destroy() Viene invocato dal Web Container una sola volta quando il Servlet sta per essere eliminato.
- public ServletConfig getServletConfig() restituisce L'Oggetto ServletConfig.
- public String getServletInfo() restituisce informazioni relative al servlet come chi e' l'autore, copyright, versione etc.
- public void init() risparmia al programmatore di dover chiamare super.init(config).
- public ServletContext getServletContext() restituisce L'Oggetto ServletContext.
- public String getInitParameter(String name) restituisce il valore del parametero di nome "name" passato al Metodo.
- public Enumeration getInitParameterNames() restituisce tutti i parameteri definiti nel file web.xml.
- public String getServletName() restituisce il nome dell'Oggetto servlet.
- public void log(String msg) scrive il messaggio nel file log del servlet.
- public void log(String msg,Throwable t) scrive il messaggio di spiegazione nel file log del servlet insieme allo stack trace.
import java.io.*;
import javax.servlet.*;
public class First extends GenericServlet{
public void service(ServletRequest req,ServletResponse res) throws IOException,ServletException {
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.print("<html><body>");
out.print("<b>hello generic servlet</b>");
out.print("</body></html>");
}
}
Contiene quelle Classi e Interfaccie per ricevere una Richiesta e inviare una risposta con il Protocollo HTTP.
Questa e' la lista dei metodi implementati dalla classe:
- public void service(ServletRequest req,ServletResponse res) dispatches the request to the protected service method by converting the request and response object into http type.
- protected void service(HttpServletRequest req, HttpServletResponse res) receives the request from the service method, and dispatches the request to the doXXX() method depending on the incoming http request type.
- protected void doGet(HttpServletRequest req, HttpServletResponse res) handles the GET request. It is invoked by the web container.
- protected void doPost(HttpServletRequest req, HttpServletResponse res) handles the POST request. It is invoked by the web container.
- protected void doHead(HttpServletRequest req, HttpServletResponse res) handles the HEAD request. It is invoked by the web container.
- protected void doOptions(HttpServletRequest req, HttpServletResponse res) handles the OPTIONS request. It is invoked by the web container.
- protected void doPut(HttpServletRequest req, HttpServletResponse res) handles the PUT request. It is invoked by the web container.
- protected void doTrace(HttpServletRequest req, HttpServletResponse res) handles the TRACE request. It is invoked by the web container.
- protected void doDelete(HttpServletRequest req, HttpServletResponse res) handles the DELETE request. It is invoked by the web container.
- protected long getLastModified(HttpServletRequest req) returns the time when HttpServletRequest was last modified since midnight January 1, 1970 GMT.
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class DemoServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
res.setContentType("text/html");//setting the content type
PrintWriter pw=res.getWriter();//get the stream to write the data
//writing html in the stream
pw.println("<html><body>");
pw.println("Welcome to servlet");
pw.println("</body></html>");
pw.close();//closing the stream
}
}