0.6 Eigenschaftendateien (PROperties) und Ressourcenpakete (Ressourcenpakete)
Viele Java-Anwendungen (einschließlich Webanwendungen) führen häufig einige Konfigurationen über Eigenschaftendateien durch. Eigenschaftendateien sind die Grundlage für das Struts-Framework, um die Bindung von Nachrichtenressourcen an Anwendungen bereitzustellen.
Weitere Informationen zu Eigenschaftendateien finden Sie unter:
.Verwenden von Eigenschaften zum Verwalten von Programmattributen im Java-Tutorial
Die Java-Ressourcenbindung basiert auf dem Benutzerbereich ( Gebietsschema) Bietet Benutzern Unterstützung bei der Internationalisierung über eine oder mehrere Eigenschaftendateien. Struts bietet seit seiner Einführung gute Unterstützung für die Anwendungslokalisierung.
Weitere Informationen zur Lokalisierung und Ressourcenbindung finden Sie unter:
.Über die ResourceBundle-Klasse im Java-Tutorial
0.7 Java Servlet
Weil Java Es ist ein Da es sich hierbei um eine objektorientierte Programmiersprache handelt, erzwingt die Java-Servlet-Plattform, dass HTTP in eine objektorientierte Form gebracht (oder konstruiert) wird. Diese Strategie ermöglicht es Java-Entwicklern, mehr Zeit zu sparen, um sich mit den Funktionen ihrer eigenen Anwendungen zu befassen, anstatt sich mit dem HTTP-Mechanismus auseinanderzusetzen.
HTTP bietet einen grundlegenden Mechanismus zur Erweiterung des Servers, nämlich das Common Gateway Interface (CGI). Der Server kann eine Anfrage an das CGI-Programm weiterleiten und das CGI-Programm gibt eine Antwort zurück. Ebenso kann ein Java-Server eine Anfrage an einen Servlet-Container weiterleiten oder die Anfrage direkt an den HTTP-Server zurücksenden, um zu entscheiden, ob die Anfrage verarbeitet werden soll Die Anfrage Nach der Registrierung eines Servlert überträgt der Container die Anfrage an das Servlet.
Wenn eine Anfrage eingeht, prüft der Container, ob die Anfrage ein registriertes Servlet hat. Wenn nicht, wird die Anfrage an den HTTP-Server zurückgegeben .
Die Verantwortung des Containers besteht darin, den Lebenszyklus des Servlets zu verwalten, das Servlet zu erstellen, das Servlet aufzurufen und schließlich das Servlet freizugeben.
Im Allgemeinen ist ein Servlet eine Unterklasse von [javax.servlet.http.HttpServlet]. Ein Servlet muss die vier Methoden implementieren, die der Container aufrufen muss:
.public void init(ServletConfig config): Der Servlet-Container ruft diese Methode auf, wenn die Servlet-Instanz zum ersten Mal erstellt wird und bevor alle Anforderungen ausgeführt werden. Und generieren Sie eine entsprechende dynamische Antwort;
.public void doPost(HttpServletRequest request HttpServletResponse Response) Diese Methode wird verwendet, um eine Anfrage mithilfe des HTTP-POST-Protokolls zu verarbeiten und eine entsprechende dynamische Antwort zu generieren.
.public void destroy( ) Die Der Container ruft diese Methode auf, wenn die Servlet-Instanz den Dienst beendet, beispielsweise wenn die Bereitstellung der Webanwendung aufgehoben wird oder wenn der gesamte Container heruntergefahren wird.
Das Struts-Framework hat ein fertiges Servlet für unsere Anwendung bereitgestellt [; org. apache.struts.action.ActionServlet]. Als Struts-Anwendungsentwickler ist es bei der Verwendung der ActionServlet-Instanz des Struts-Frameworks auch sehr wichtig, die Grundkenntnisse von Servlet zu verstehen und die Rolle zu verstehen, die es in Webanwendungen spielt.
Weitere Informationen zu Servlets finden Sie unter:
Die Java-Servlet-Technologie in .java.sun.com;
Die Servlet 2.2- und .java.sun.com 2.3-Spezifikationen;
.Die Java-Servlet-Technologie des Java Web Service Tutorials; Leistung, der Container unterstützt Multithread-Servlets. Ein bestimmtes Servlet kann nur eine Instanz erstellen und jede bei diesem Servlet registrierte Anfrage über dasselbe Objekt bedienen. Diese Strategie ermöglicht es dem Container, die Systemressourcen vollständig zu nutzen. Gleichzeitig müssen die Thread-Sicherheitsprobleme der DoGet- und DoPost-Methodencodierung von Servlet berücksichtigt werden.
Weitere Informationen zu Servlets und Thread-Sicherheit finden Sie unter:
.Gleichzeitigen Zugriff auf freigegebene Ressourcen steuern im Java Web Service Tutorialhttp://java.sun.com/webservices/docs /1.0/tutorial/doc/Servlets5.Html#64386;
0.7.2 Servlet-Kontext (Context)
Die ServletContext-Schnittstelle [javax.servlet.ServletContext] stellt den Speicherort des laufenden Servlets A bereit Ansicht des Kontexts (oder der Umgebung) der Webanwendung. Auf Servlets kann über die Methode getServletConfig () zugegriffen werden, und JSP-Seiten können über die implizite Anwendungsvariable abgerufen werden. Der Servlet-Kontext stellt mehrere APIs bereit, die beim Erstellen von Struts-Webanwendungen sehr nützlich sind.
Zugriff auf Webanwendungsressourcen: Servlet kann über die Methoden getResource() und getResourceAsStream() auf statische Ressourcendateien innerhalb der Webanwendung zugreifen.Servlet-Kontextattribute: Kontext kann zum Speichern von Java-Objekten und zum Identifizieren von Objekten über Zeichenfolgenwertschlüssel verwendet werden. Diese Attribute gelten global für die gesamte Webanwendung. Servlet kann die Methoden getAttribute(), getAttributeNames(), removeAtrribute() und setAttribute() verwenden zugreifen. Für JSP-Seiten entsprechen Servlet-Kontextattribute „Anwendungsbereichs-Beans“;
Weitere Informationen zum Servlet-Kontext finden Sie unter:
. sun.com/webservices/docs/1.0/tutorial/doc/Servlets10.html#64724;
0.7.3 Servlet-Anfrage
Jede Servlet-Anfrage wird normalerweise durch eine Java-Schnittstelle dargestellt die HttpServletRequest-Schnittstelle [javax.servlet.http.HttpServletRequest]. Diese Anforderungsschnittstelle bietet eine Reihe objektorientierter Mechanismen für den Zugriff auf alle in der zugrunde liegenden HTTP-Anforderung enthaltenen Informationen, einschließlich:
.Cookie: Erhalten Sie den in der Anforderung enthaltenen gültigen Cookie-Satz über die Methode getCookie()
.Header: Auf die in der Anfrage enthaltenen HTTP-Header kann namentlich zugegriffen werden. Sie können die Namen aller enthaltenen HTTP-Header auflisten; > . Anforderungsmerkmale: Geben Sie einige andere Merkmale der HTTP-Anforderung ein, z. B. die Protokollspezifikation („http“ oder „https“), die von der GET- oder POST-Methode usw. verwendet wird ()-Methode Die ursprüngliche Anforderungs-URL kann abgerufen werden. Darüber hinaus analysiert der Servlet-Container die Anforderungs-URL in einige einzeln zugängliche Komponenten (contextPath, servletPath und pathInfo).
Benutzerinformationen: Wenn Sie benutzerverwaltete Sicherheit verwenden, können Sie nach einem authentifizierten Benutzernamen suchen und einen Principal erhalten Objekt, das den aktuellen Benutzer darstellt und ob der aktuelle Benutzer für eine bestimmte Rolle berechtigt ist;
Darüber hinaus unterstützen Servlet-Anfragen auch Anforderungsattribute (in JSP Request Scope Beans), ähnlich den zuvor erwähnten Servlet-Kontexteigenschaften . Anforderungsattribute werden häufig verwendet, um Statusinformationen zwischen der Geschäftslogikschicht und der Ansichtsschicht zu kommunizieren. Die Geschäftslogikschicht generiert diese Statusinformationen, und die Ansichtsschicht verwendet diese Informationen, um entsprechende Antworten zu generieren.
Der Servlet-Container stellt sicher, dass eine bestimmte Anfrage von einem Servlet in einem separaten Thread verarbeitet wird, sodass Sie sich beim Zugriff auf vom Servlet angeforderte Eigenschaften keine Gedanken über Thread-Sicherheitsprobleme machen müssen.
Weitere Informationen zu Servlet-Anfragen finden Sie unter:
.Informationen aus Anfragen im Java Web Tutorial abrufenhttp://java.sun.com/webservices/docs/1.0/tutorial/ doc/Servlets7.html #64433; Antwort. Der Vorgang zum Generieren einer Antwort wird durch Aufrufen der entsprechenden Methode der Servlet-Antwortschnittstelle [javax.servlet.http.HttpServletResponse] abgeschlossen. Die verfügbaren Methoden sind wie folgt:
HTTP-Header in der Antwort enthalten. Die wichtigste HTTP-Header-Information ist Content-Type, die Ihrem Client mitteilt, welche Art von Informationen im Antworttext enthalten sind. Im Allgemeinen bedeutet die Einstellung auf den Typ „text/html“ eine HTML-Seite oder die Einstellung auf den Typ „text/xml“. ist ein XML-Dokument;
. Sie können Cookies zur aktuellen Antwort hinzufügen.
. Sie können sendErro() verwenden, um eine HTTP-Fehlerstatusmeldung zu senden );
Auf andere Ressourcen umleiten: Sie können den Client mit der sendRedirect()-Methode auf andere von Ihnen angegebene URL-Ressourcen umleiten.
Ein wichtiges Prinzip bei der Verwendung von Servlet zum Antworten auf die API ist das Aufrufen und Verwalten Header-Informationen und Cookies Alle Methoden müssen abgeschlossen sein, bevor der gesamte zwischengespeicherte Antwortinhalt zum ersten Mal auf dem Client aktualisiert wird. Der Grund dafür ist, dass diese Informationen als erster Teil der HTTP-Antwort übertragen werden. Daher ist der Versuch, Header-Informationen hinzuzufügen, nachdem die Header-Informationen gesendet wurden, zwangsläufig sinnlos.
Wenn Sie die Präsentationsschicht einer Modell-2-Anwendung verwenden, können Sie die Servlet-Antwort-APIs möglicherweise nicht direkt zum Generieren von Antworten verwenden. Dies geschieht normalerweise mithilfe von JSP-Seiten. Im Servlet-Container wird die JSP-Seite vom JSP-Compiler in ein Servlet umgewandelt, das einige dynamische Informationen enthalten kann, die von JSP-Tags generiert werden.
Andere Präsentationssysteme, wie das Struts-Tool Velocity Framework, delegieren möglicherweise die Aufgabe der Antwortgenerierung an ein spezialisiertes Servlet, aber das Prinzip ist dasselbe. Sie erstellen eine Vorlage und dynamische Antworten werden dynamisch aus der Vorlage generiert.
Weitere Informationen zu Servlet-Antworten finden Sie unter:
.ConstrUCting Responses in The Java Web Tutorialhttp://java.sun.com/webservices/docs/1.0/tutorial/doc/ Servlets7.html#64531;
0.7.5 Filterung
Wenn Sie einen Servlet-Container mit Version 2.3 oder einer neueren Spezifikation (z. B. Tomcat 4.x) verwenden, können Sie die neuen Filter-APIs [javax.servlet.Filter] verwenden, um einige Komponenten zu kombinieren, um Anfragen zu verarbeiten und Antworten zu generieren. Ein Filter ist eigentlich eine Sammlung von Filterketten. Jeder Filter kann die Anfrage verarbeiten und eine Antwort generieren, dann die Verarbeitungsleistung an den nächsten Filter übertragen und schließlich das Servlet aufrufen.
Die Struts 1.x-Serie (Version 1.0, 1.1 usw.) unterstützt nur Servlet-Container der Version 2.2 oder einer früheren Servlet-Spezifikation, sodass Struts selbst keine Filter verwendet. Die nächste Generation von Struts (2.x-Serie) basiert auf der Spezifikation Servlet2.3 oder höher. Struts Version 2.x verwendet möglicherweise Filter.
Weitere Informationen zu Filtern finden Sie unter:
.Anfragen und Antworten filternhttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets8.html#64572 ;
0.7.6-Sitzung
Das Obige ist der Inhalt des Struts-Benutzer- und Entwicklungshandbuchs (Teil 2). Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www. php.cn) !