Vorwort
SSH ist kein Framework, sondern eine Integration mehrerer Frameworks (Struts+Spring+Hibernate). Derzeit ist es ein beliebtes Open-Source-Integrationsrahmen für Webanwendungen, das zum Erstellen flexibler und einfach zu skalierender Mehrschicht-Webanwendungen verwendet wird.
Das System, das das SSH -Framework integriert, ist hinsichtlich der Verantwortung in vier Ebenen unterteilt: Präsentationsschicht, Geschäftslogikschicht, Datenpersistenzschicht und Domänenmodulschicht (Entitätsschicht).
Als Gesamtinfrastruktur des Systems ist Struts für die Trennung von MVC verantwortlich. Im Modellteil des Struts -Frameworks kontrolliert es Geschäftssprung und verwendet das Hibernate -Framework, um die Persistenzschicht zu unterstützen. Einerseits ist die Feder ein leichtgewichtiger IOC -Behälter, der für die Suche, Positionierung, Erstellung und Verwaltung von Abhängigkeiten zwischen Objekten und Objekten verantwortlich ist. Andererseits kann es Streben und Hibernate besser funktionieren.
Verwenden Sie MyEclipse, um die drei wichtigsten SSH -Frameworks zu integrieren und eine Demo zu implementieren, die die Benutzerregistrierung simuliert, was der Version entspricht:
Struts -Version: 2.1;
Frühlingsversion: 3.1;
Hibernate -Version: 3.3;
1. Vorbereitung vor Integration
1. Erstellen Sie wie folgt ein Webprojekt:
Hinweis: Der Paketname, der Aktion unterstützt
2. Erstellen Sie eine Datenbank und Tabelle:
Datenbank sshdemo erstellen; Tabelle T_USER erstellen (ID int Primärschlüssel, Benutzername varchar (10), Kennwort varchar (20))
3. Importieren Sie den Datenbankverbindungspool C3P0JAR -Paket und klicken Sie auf Download:
C3P0-0.9.2-pre1.jar, MySQL-Connector-Java-5.1.13-bin.jar
2. Konfiguration des Struts -Frameworks:
1. Wählen Sie das Projekt aus und klicken Sie mit der rechten Maustaste, um auszuwählen: MyeClipse -> Projektfacetten [Funktionen] -> APACHE STRETS (2.x) -Facet installieren, wie folgt:
2. Wählen Sie die Version aus, hier habe ich 2.1 gewählt, klicken Sie auf "Finish" wie folgt:
3. Nachdem Sie die oben genannten Schritte ausgeschlossen haben, werden Sie feststellen, dass im SRC -Verzeichnis eine zusätzliche Stribs.xml -Datei mit den folgenden Inhalten enthält:
<xml Version = "1.0" coding = "utf-8"?> <! docType Struts public "-// Apache-Software-Stiftung // Dtd Struts Konfiguration 2.1 // en" http://struts.apache.org/dtds/struts-2.1.dtd "> <struts> </struts>
4. In der Web.xml-Datei im Web-Inf-Verzeichnis gibt es einen zusätzlichen Abschnitt mit Konfigurationscode für Struts-Filter wie folgt:
5. Siehe die obige Abbildung, ändern Sie *.Action auf "/ *", und das Struts -Framework ist an diesem Punkt konfiguriert.
3. Konfiguration für Spring Framework:
1. Siehe Konfiguration von Struts, wählen Sie das Projekt aus, klicken Sie mit der rechten Maustaste und wählen Sie: MyeClipse -> Projektfacetten [Funktionen] -> Federfacette installieren, die Version auswählen und 3.1 wie folgt auswählen:
2. Klicken Sie auf "Finish" und Sie werden feststellen, dass im SRC-Verzeichnis eine Datei für die SRC, eine Spring-Form.tld- und Spring.TLD-Dateien im Web-Inf-Verzeichnis vorhanden sind, und ein Stück Code, das sich auf die Federkonfiguration bezieht, wird in der Datei web.xml hinzugefügt. Die Konstruktion des Frühlingsgerüsts wurde im Wesentlichen abgeschlossen (die Einführung des Namespace wird später erörtert), wie unten gezeigt:
4. Konfiguration des Hibernate -Frameworks:
1. Siehe Konfiguration von Struts, wählen Sie das Projekt aus, klicken Sie mit der rechten Maustaste und wählen Sie: MyeClipse -> Projektfacetten [Funktionen] -> HibernateFacet installieren, die Version auswählen und hier wie folgt ausgewählt werden:
2. Klicken Sie auf "Finish" und Sie werden feststellen, dass ein zusätzliches Standardpaket im SRC -Verzeichnis (gelöscht werden kann) und ein Code -Stück in der Datei web.xml (es wird später neu konfiguriert werden) wie unten gezeigt:
3. Importieren Sie JAR -Pakete, die die Annotation "@entity" unterstützen: Wählen Sie das Projekt aus, klicken Sie mit der rechten Maustaste, um zu wählen: MyeClipse -> Projektfacetten [Funktionen] -> Verwalten ... und befolgen Sie dann die Schritte in der folgenden Abbildung:
Nach Abschluss der oben genannten Schritte werden die drei Hauptrahmen im Grunde genommen erstellt und dann integriert.
5. Integration
1. Um zu verhindern, dass ApplicationContext.xml zu aufgebläht und einfach zu verwalten, speichern wir die Hibernate-bezogene Konfiguration in einer anderen .xml-Datei und importieren sie dann in applicationContext.xml. Die spezifischen Schritte:
(1) Erstellen Sie eine Datei mit dem Namen hibernateContext.xml im SRC -Verzeichnis (gleiche Ebene wie applicationContext.xml), kopieren Sie den Inhalt in ApplicationContext.xml und nehmen Sie dann Änderungen vor.
(2) Inhalt in der HibernateContext.xml -Datei:
<? xmlns: p = "http://www.springframework.org/schema/p" xsi: Schemalocation = "http://www.springframework.org/schema/beans http://www.sprungramework.org/schema/beans/Spring-bans-bringframework SessionFactory-Konfiguration-> <bean id = "SessionFactory"> <!-Die DataSource-Eigenschaft wird in der Datei applicationContext.xml konfiguriert. Ref = "dataSource"> </property> <!-Setzen Sie Hibernate-bezogene Konfigurationselemente-> <Eigenschaft name = "hibernateProperties"> <!-Requisiten-Tag soll Eigenschaften von Eigenschaften Typ-> <!-Der Schlüssel muss hibernate.prefix-> <props> <Props> <Props> <Props> <props> <props> <props> <props> <props> <props> <Props sein-sein. key = "hibernate.dialect"> org.hibernate.dialect <!-a) Erstellen Sie-Drop: Erstellen Sie eine Datentabelle, wenn Sie das Programm ausführen, und löschen Sie die Tabelle nach der Ausführung. In der tatsächlichen Entwicklung wird es häufig zum Testen b) zum Testen b) erstellen: Nach dem Programm wird bei der Ausführung des Programms die Datentabelle neu erstellen, dass die Tabelle bei der Ausführung des Programms nicht erstellt wird, da die Datentabelle ansonsten erstellt wird, und die Felder in der Datentabelle werden automatisch hinzugefügt. In Übereinstimmung mit den Feldern in der Tabelle wird ein Fehler gemeldet (Produktionsumgebung)-> <Prop Key = "hibernate.hbm2ddl.auto"> validieren </prop> </props> </property> <!-Konfigurieren Sie das Entitätsklasse von Hibernate-> <Eigenschaft "Packagestoscan"> <! ". Sein Wert ist im Allgemeinen der vollständige Name des entsprechenden Bean-Pakets, und die Klassen im Bean-Paket entsprechen im Allgemeinen der Tabelle in der Datenbank-> <List> <wert> com.beauxie ref = "sessionfactory"> </property> </bean> </beans>
(3) Löschen Sie die Konfiguration von "SessionFactory" in applicationContext.xm (weil sie in HibernateContext.xml konfiguriert wurde) und dann den modifizierten HibernateContext.xml -Inhalt importieren. Nach dem Import ist der Inhalt von ApplicationContext.xml wie folgt:
<? xmlns: p = "http://www.springframework.org/schema/p" xsi: scheMalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/Spring-bans- ID = "DataSource"> </bean> <!- Importieren Sie andere Federkonfigurationsdateien. Wenn sie in eine Datei platziert sind, sehen sie aufgebläht aus -> <importieren ressourcen = "hibernateContext.xml"/> </beans>
2. Basierend auf der ursprünglichen DataSource in der Datei applicationContext.xm, ändern Sie deren Konfiguration (Datenbankname, Benutzername, Kennwort usw.) ( Hinweis: Das Wertschild muss keine Leerzeichen enthalten oder eingeben !! ), wie unten gezeigt:
<bean id = "dataSource"> <Eigenschaft name = "jdbcurl"> <!-Wenn Sie das Wert-Attribut direkt anstelle des Wertschilds verwenden, müssen Sie "&" entkommen und das Wertschild verwenden. Das <span style = "color:#ff0000;"> Das Tag darf keine Leerzeichen oder Wagenrendite enthalten, da es die Leerzeichen in "" </span> umwandelt, was dazu führt, dass die Datenbank nur eine Verbindung herstellt, es sei denn, die Datenquelle ist umgeschrieben-> <Vote> <! [CDATA [JDBC: MySQL: // localhost: 3306/sshdemo? useUnicode = true & charakterencodierung = utf8 & useServerprepstMTS = t rue & prepStmtCachesqllimit = 256 & cachePrepstmts = true & prepStMtcacheSize = 256 & rewriteBatchedStatements = true]]> </value> </Property> <Eigenschaft name = "triverClass" value = "com.mysql.jdbc.driver name = "minpoolsize" value = "2"> </property> <Eigenschaft name = "maxpoolsize" value = "10"> </property> </bean>
3. Konfigurieren Sie in ApplicationContext.xm den Federscanner, um unserer Klasse Anmerkungen für Federkomponenten hinzuzufügen, und die Bean kann automatisch geladen werden. Die spezifischen Schritte sind wie folgt: (1) Führen Sie den Kontext -Namespace ein, unterstützen Sie das Kontext -Tag, klicken Sie unten auf "Namespaces" und überprüfen Sie dann das Kontextelement:
(2) Konfigurieren Sie den Federscanner:
<!-Konfigurieren Sie den Federscanner und fügen Sie unserer Klasse Anmerkungen für Federkomponenten hinzu, um Beer automatisch zu laden->
<Kontext: Komponenten-Scan-Basis-Package = "com.beauxie.action, com.beauxie.service, com.beauxie.dao">
</Kontext: Komponenten-scan>
Zu diesem Zeitpunkt wurden die drei großen SSH -Framework -Umgebungen erstellt, und der nächste Schritt besteht darin, die Benutzerregistrierung basierend auf dem SSH -Framework zu implementieren.
6. Fall: Einfache Nachahmung der Benutzerregistrierung
1. Registrierungsseitencode an der Rezeption, Index.jsp:
<%@ page Language = "java" import = "java.util. String basepath = request.getScheme () + ": //" + request.getSerVername () + ":" + request.getServerport () + path + "/"; %> <! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= Basepath%>"> <title> Willkommen bei Registrierung </title> <meta http-acriv = "pragma" content = "no-cache" http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv type = "text/css" href = "styles.css">-> </head> <body> <form action = "$ {pageContext.request.ContextPath}/Benutzer/Regist" methode "post"> <! type = "text" name = "username"> <br> Passwort: <Eingabe type = "password" name = "password"> <br> <Eingabe type = "value =" Registrierung "> </Form> </body> </html>2.Auser Klassencode:
Paket com.beauxie.bean; import Javax.Persistence.Entity; import Javax.Persistence.id; import Javax.Persistence.table; /** * @Author Beauxie * Hier sollten die Eigenschaften des Benutzers mit den Feldern in der T_USER -Tabelle übereinstimmen. Andernfalls müssen Sie die Felder in der entsprechenden Tabelle für verschiedene Eigenschaften manuell angeben. t_user table private int id; // Benutzer -ID private Zeichenfolge Benutzername; // Benutzername private Zeichenfolge Passwort; // Passwort public int getId () {return id; } public void setId (int id) {this.id = id; } public String getUnername () {return userername; } public void setUnername (String -Benutzername) {this.username = userername; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; }} 3.Userdao -Klassencode:
Paket com.beauxie.dao; import org.springframework.beans.factory.annotation.autowired; import org.springframework.orm.hibernate3.hibernatetemplate; import org.springframework.stereotype.repository; import com.beauxie.bean.user; /*** @Author Beauxie* DAO -Schicht, arbeite in der Datenbank*/ @repository // Diese Eigenschaft entspricht der Persistenzschicht (normalerweise DAO -Schicht), was bedeutet, dass sie an Spring Management übergeben wird, und der entsprechende Klassenname unter dem Paket hat auch eine "S" -Anrasse -Benutzerdaoo -Tempo -Tempo -Tempo -Temperation, die in den Frohtemnat -Hibern gekonnt ist. Datei; /*** Benutzerregistrierung, dh ein neuer Datensatz zur Tabelle hinzu. }}
4.Userservice Class Code:
Paket com.beauxie.service; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.service; import com.beauxie.bean.user; import com.beauxie.dao.userdao; /*** @Author Beauxie* Service Layer*/ @Service // Diese Eigenschaft entspricht der Serviceschicht ist im Allgemeinen die Serviceschicht), was bedeutet, dass sie an das Spring -Management übergeben wird, und der entsprechende Klassenname hat auch eine "S" -Klass -UseService { @autowired // Außerdem werden private UserDao Userdao automatisch injiziert. public void adduser (Benutzer Benutzer) {// Aufrufen der AddUser -Methode von DAO Layer UserDao.adduser (Benutzer); }} 5.Useraction Class Code:
Paket com.beauxie.action; importieren javax.servlet.http.httpServletRequest; import org.apache.struts2.servletactioncontext; import org.apache.struts2.Convention.Annotation.Action; import org.apache.struts2.convention.annotation.namePace; import org.apache.struts2.Convention.annotation.Results; import org.springframework.beans.factory.annotation.autowired; import org.springframework.context.annotation.scope; import org.springframework.stereotype.controller; import com.beauxie.bean.user; import com.beauxie.service.userservice; /** * @Author Beauxie * */ @Controller // Wird verwendet, um die Steuerungsschichtkomponente @NameSpace ("/user") // URL-Präfix @Scope ("Prototyp") // Aktion zu einem Singleton standardmäßig zu standardmäßig zu standardmäßig zu erstellen. Standard ist "Struts-Default", also @Results ({@result (name = "Registiccess", location = "/msg.jsp")}) Public Class UserAction { @autowired // Inject Private UserService-Dienst automatisch injizieren; // Striuts Standards zum Abfangen ".Action und ohne Suffix" @Action (value = "Regist") // Access: /User/regist.Action oder/user/Regist public String Regist () {// Anforderung httpServletRequest request = servletactactaceContext.getRequest (); // Formular Suriced Data String username = request.getParameter ("Benutzername"); String password = request.getParameter ("Passwort"); // Capsulate UserBean user user = new user (); user.setId (1000); user.SetUnername (Benutzername); user.setPassword (Passwort); // Rufen Sie die Service Layer -Methode an, um dem Datenbankdienst einen Datensatz hinzuzufügen.adduser (Benutzer). // Speichern Sie die Eingabeaufforderungsinformationen in der Anforderungsdomäne und Anzeigeanforderung. Rückkehr "Registsuccess"; }} 6. Meldung Eingabeaufforderung Schnittstelle: MSG.JSP -Code, wie folgt:
<%@ page Language = "java" import = "java.util. String basepath = request.getScheme () + ": //" + request.getSerVername () + ":" + request.getServerport () + path + "/"; %> <! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> Nachrichtenaufforderung </title> <meta http-actp-actp-actp-cache "chache" Conth "-" Content = "-" No-Cache "> <meta http- actp-cache" cache "Conth"-"no-cache"> <meta http-actp-cache " content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv = "keywords" content = "keyword1, keyword2, keyword3"> <meta http-äquiv href = "styles.css"> -> </head> <body> $ {msg} </body> </html>7. Fügen Sie das Projekt zum Server hinzu, starten Sie den Dienst, öffnen Sie den Browser und besuchen Sie: http: // localhost/sshdemo/user/Regist
8. Geben Sie den Benutzernamen und das Kennwort ein. Klicken Sie auf "Register", um die Ergebnisse anzuzeigen:
9. Die Konsole -Ausgabe der SQL -Anweisung (die Ausgabe wurde konfiguriert und die SQL -Anweisung wurde in der HibernateContext.xml -Datei verschönert):
10. Datenbankergebnisse anzeigen:
Dieser einfache Fall ist beendet. Es gibt kein Problem mit der Überprüfung der durch das Formular und dem verstümmelten Code eingereichten Daten. Es sollte in Zukunft aktualisiert werden.
7. Zusammenfassung:
1. Die Integration der drei Hauptrahmen sollte zuerst eingeführt und dann integriert werden.
2. Denken Sie daran, das Datenbank -JAR -Paket zu importieren.
3. Die Aktionsklasse sollte unter dem Paketnamen "Aktion" platziert werden, und der Klassenname sollte mit Aktion enden, wie "xxxaction";
4. Importieren Sie bei der Konfiguration von Hibernate unbedingt JAR -Pakete, die die Annotation "@Entity" unterstützen.
5. Sie können den Anforderungsart für Struts definieren, die in der Struts.xml -Datei abgefangen wurden, die standardmäßig und ohne Suffixe standardmäßig ist.
6. Sie können den Filtertyp des Streben -Filters in der Datei web.xml definieren. Die Standardeinstellung ist *.Action, und es sollte in / *geändert werden;
7. In der Datei applicationContext.xm müssen Sie konfigurieren: SessionFactory, Hibernate -Entitätsklasse, Hibernatetemplate -Vorlage, Datenquellendatenquelle und Spring -Scanner (einschließlich HibernateContext.xml);
8. Jede Klasse muss entsprechende Anmerkungen hinzufügen, und auch die in Aktionen in Aktion geeigneten Methoden müssen hinzugefügt werden.
Laden Sie den Instanzquellencode herunter: http://xiazai.vevb.com/201610/yuanma/ssshzhuce(vevb.com).rar
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.