Mer om Java Servlets  
 

På denna sida presenteras mer information om hur man implementerar och använder servlets. Informationen på denna sida är dock inte nödvändig men har redovisats för att eventuellt reda ut en del frågetecken som kan uppstå. Bl.a. beskrivs varför

Ärva från klassen GenericServlet

En del litteratur anser/visar på hur man ärver från klassen GenericServlet. Det är inget fel i att göra det, men om man istället ärver ifrån klassen HttpServlet så får man bl.a. mer funktionalitet. Klassen HttpServlet ärver nämligen från klassen GenericServlet samt utökar med mer funktionalitet. 

En skillnad är att en servlet som ärver från GenericServlet kan användas utan HTTP-protokollet. På dessa hemsidor fokuserar jag dock på webbaserade lösningar och använder därför HttpServlet som superklass till alla min serlvets. En annan skillnad är hur man implementerar sin klass och hur servern (t.ex. Resin eller Tomcat) använder (anropar metoder i) objekt av klasserna. 

Klasser för servlets implementeras genom att definera om (eller "överlagra", eng. override) metoden service() från klassen GenericServlet eller metoderna doGet() och doPost() från klassen HttpServlet. När en webbläsare, vid exekvering, begär en servlet från servern kommer servern att anropa metoden service() i klassen (eller snarare ett objekt av klassen). Servlet som ärver från GenericServlet kommer alltså att göra allt i sin metod service(). Men om servlet istället ärver från klassen HttpServlet så kommer metoden service() endast att anropar någon av metodern doGet() eller doPost(), allt beroende på vilket sätt som servlet begärdes av webbläsare.

Servern (som hanterar servlets och JSP-sidor) kallas servlet container (tidigare även för servlet engine).

Enkel serlvet igen

Att låta sin servlet ärva från klassen GenericServlet är ett lättare sätt att skapa en servlet. Man behöver endast implementera en metod: service().

Denna servlet börjar med att tala om för webbserver (och webbläsare) vilken typ av information som kommer skickas - "text/html" i detta exempel. Därefter hämtas ett PrintWriter-objekt för att kunna skriva till den resulterande HTML-sidan. Återstående rader skriver ut själva HTML-koden, komplett med taggar för HTML, HEAD, TITLE och BODY. Det blir därför en del rader med kod för en sån enkel HTML-sida.

/*
* Java Servlet som genererar en hemsida som skriver ut "Hello world!".
* Björn Persson, EkI, MdH - 2001-04-29.
* bjorn.persson@mdh.se
*/

//Importera paket för...
import javax.servlet.*;             //servlet
import javax.servlet.http.*;    
//servlet
import java.io.*;                        
//I/O

public class HelloWorldServlet extends GenericServlet
{

  /***************************************************
  * Implementation av metoden service() som anropas av
  * webbserver då webbläsare begär servlet
  ***************************************************/
public void service(ServletRequest request, ServletResponse response)
  throws IOException
{

     //Tala om för webbserver vad som kommer att skickas (d.v.s.
     // HTML-kod)
   response.setContentType("text/html");

     //Hämta objekt för "output" för att kunna skriva till den
     // genererade hemsidan
   PrintWriter out = response.getWriter();

     //Skriv ut HTML-kod
   out.println("<HTML>");
   out.println("<HEAD>");
   out.println("  <TITLE>Hello world</TITLE>");
   out.println("</HEAD>");
   out.println("<BODY>");
   out.println("<H1>Hello world!</H1>");
   out.println("</BODY>");
   out.println("</HTML>");
}
// service()
} //class HelloWorldServlet


| Till början på sida | Tillbaka till Java Servlets |


Skapad av: Björn G D Persson. Uppdaterad: 2001-09-09