Jsp&Servelet-Studiennotizen (1)
Autor:Eve Cole
Aktualisierungszeit:2009-07-02 17:15:10
1.1 Schreiben Sie ein Servelet-Programm
1.2 Schreiben Sie ein Jsp-Programm
1.3 Kompilieren Sie ein Servlet-Programm
1.4 Packen Sie ein Servlets- und Jsps-Programm
1.5 Erstellen Sie einen Bereitstellungsdeskriptor
1.1 Schreiben Sie ein Servelet-Programm
Problem Sie möchten ein Servlet als Webanwendung schreiben. Lösung: Schreiben Sie eine Java-Klasse, die von javax.servlet.http.HttpServlet erbt. Zunächst muss ein Klassenpaket servlet.jar gegossen werden. Sie benötigen die darin enthaltene Klassenbibliothek, um dieses Servlet-Programm zu kompilieren.
Diskussion Ein Servlet-Programm ist eine Java-Klasse, die verwendet wird, um auf dynamische Inhalte zu reagieren, die vom Client über das Netzwerk angefordert werden. Wenn Sie mit (CGI-)Programmen vertraut sind, können Java-Technologie-Servlets CGI-Programme vollständig ersetzen. Ein Servlet-Programm, das oft als Webkomponente bezeichnet wird und in einer Laufzeitumgebung ausgeführt wird, wird von einem Servles-Container wie Tomcat und Bea WebLogic bereitgestellt.
Hinweis: Ein Webcontainer kann sein
Servlets werden als Teil einer Webanwendung in einem Webcontainer installiert. Diese Anwendung enthält WEB-Ressourcen. Wie HTML-Seiten, Bilder, Multimedia-Clips, Servlets, JSPs, XML-Konfigurationsdateien, Java-Laufzeitklassen und Klassenbibliotheken. Wenn eine Webanwendung in einem Webcontainer bereitgestellt wird, generiert der Container Instanzen der Java-Servlet-Klasse und lädt sie in die JVM . Behandeln Sie Anfragen für Servlets.
Alle Servlets erben die Schnittstelle javax.servlet.Servlet. Programmierer, die Webanwendungen entwickeln, schreiben ein spezielles Servlet
Eine von javax.servlet.http.HttpServlet geerbte abstrakte Klasse implementiert die Servlet-Schnittstelle und ist speziell für die Verarbeitung von HTTP-Anfragen konzipiert.
Wenn ein Webcontainer eine Servlet-Instanz generiert, ist die grundlegende Reihenfolge wie folgt:
1. Der Servlet-Container ruft zunächst die init()-Methode des Servlets auf, die eine Ressource initialisiert, die das Servlet verwenden soll. Als Holzfäller gelistet. Diese init()-Methode wird während des gesamten Servlet-Lebenszyklus nur einmal aufgerufen.
2. Die Methode init() initialisiert ein Objekt, das die Schnittstelle java.servlet.ServletConfig erbt. Dieses Objekt ermöglicht es dem Servlet, im Bereitstellungsdeskriptor deklarierte Parameter zu initialisieren. ServletConfig gewährt dem Servlet außerdem Zugriff auf ein javax.servlet.ServletContext-Objekt, mit dem das Servlet Informationen protokollieren, Anforderungen an andere Webkomponenten weiterleiten und andere Webressourcen in derselben Anwendung verwenden kann.
3. Der Servlet-Container ruft die service()-Methode dieses Servlets auf, um auf einige Anforderungen des Servlets zu antworten. Basierend auf HttpServlets ruft service() automatisch die entsprechende HTTP-Methode auf, um die Anfrage zu verarbeiten, indem die Methode doGet() oder doPost() des Servlets aufgerufen wird. In mehreren Beispielen sendet der Benutzer eine Post-Anfrage und das Servlet antwortet auf die Anfrage, indem es die Methode doPost() ausführt.
4. Beim Aufrufen der Methoden doPost () und doGet () der beiden Haupt-HttpServlets generiert der Servlet-Container die Objekte javax..servlet.http.HttpServletRequest und HttpServletResponse und übergibt sie als Parameter an diese Anforderungsverarbeitungsmethoden.
http://www.downcodes.com/
5. Verwalten Sie den Lebenszyklus eines Servlets oder bestimmen Sie die Verarbeitungszeit dieser Servlet-Instanz für die Anforderungsanforderung und die Existenzzeit auf der Java Virtual Machine. Wenn ein Servlet-Container beginnt, ein Servlet zu entfernen, wird die destroy()-Methode des Servlets aufgerufen, in der alle Ressourcen, beispielsweise eine Datenbankverbindung, freigegeben werden können.
Beispiel Ein typisches HttpServlet
Paket com.mydev;
import java.io.IOException; import java.io.PrintWriter;
import java.util.Enumeration; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//Muss die HttpServlet-Schnittstelle erben
Die öffentliche Klasse FirstServlet erweitert HttpServlet ...{
public void doGet(HttpServletRequest request, HttpServletResponse Response) löst eine ServletException, java.io.IOException ...{ aus
//MIME-Typ der Antwort festlegen, „text/html“
Response.setContentType("text/html");
//einen PrintWriter verwenden, um Textdaten an den Client zu senden, der die angefordert hat
//servlet
java.io.PrintWriter out = Response.getWriter( );
//Beginnen Sie mit der Zusammenstellung des HTML-Inhalts out.println("<html><head>");
out.println("<title>Hilfeseite</title></head><body>");
out.println("<h2>Bitte übermitteln Sie Ihre Informationen</h2>");
//Stellen Sie sicher, dass method="post" die Servlet-Servicemethode ist
//ruft doPost in der Antwort auf dieses Formular auf
out.println( "<form method="post" action ="" + request.getContextPath( ) + "/firstservlet" >");
out.println("<table border="0"><tr><td valign="top">");
out.println("Ihr Vorname: </td> <td valign="top">");
out.println("<input type="text" name="firstname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("Ihr Nachname: </td> <td valign="top">");
out.println("<input type="text" name="lastname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("Ihre E-Mail: </td> <td valign="top">");
out.println("<input type="text" name="email" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("<input type="submit" value="Info senden"></td></tr>");
out.println("</table></form>"); out.println("</body></html>");
}
//doGet
public void doPost(HttpServletRequest request, HttpServletResponse Response) löst eine ServletException, java.io.IOException ...{ aus
//zeige die Parameternamen und -werte an
Enumeration paramNames = request.getParameterNames( );
String parName;
//Hier wird der Name des Parameters gespeichert
boolean emptyEnum = false;
if (! paramNames.hasMoreElements( ))
emptyEnum = true;
//MIME-Typ der Antwort festlegen, „text/html“
Response.setContentType("text/html");
//einen PrintWriter verwenden, um Textdaten an den Client zu senden
java.io.PrintWriter out = Response.getWriter( );
//Beginnen Sie mit der Zusammenstellung des HTML-Inhalts
out.println("<html><head>");
out.println("<title>Submitted Parameters</title></head><body>");
if (emptyEnum) ...{
out.println( "<h2>Leider enthält die Anfrage keine Parameter</h2>");
} anders ...{
out.println( "<h2>Hier sind die übermittelten Parameterwerte</h2>");
}
while(paramNames.hasMoreElements( )) ...{
parName = (String) paramNames.nextElement( );
out.println( "<strong>" + parName + "</strong> : " + request.getParameter(parName));
out.println("<br />");
}//während
out.println("</body></html>");
}
//doPost
}
Möglicherweise stellen Sie fest, dass doGet() und doPost() jeweils eine ServletException und eine IOException auslösen. Das liegt daran, dass „response.getWriter()“ eine E/A-Ausnahme auslöst.
http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx