Unterschiedliche Ideen, dies ist die prägnanteste und klarste SSM-Framework-Integration, die ich je gesehen habe

Erstellen Sie Ideen für die Integration von Projekten und SSM-Frameworks

Erstens, erstellen Sie ein Projekt

Da springMVC später konfiguriert wird, erstellen Sie ein Maven-Projekt mit dem IDEA-Web-Skelett.

Bild

Erstellen Sie das Projektverzeichnis wie folgt: Gleichzeitig wurden die für das Projekt erforderlichen Pakete und Dateien manuell erstellt:

Bild

In der obigen Abbildung ist application.xml die Spring-Konfigurationsdatei, log4j die Log-Konfigurationsdatei und springMVC.xml die springMVC-Konfigurationsdatei

Konfigurieren Sie die erforderlichen Abhängigkeiten in der Datei pom.xml. Die Abhängigkeiten des gesamten Projekts lauten wie folgt.

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.hust.demo-ssm</groupId>
  <artifactId>demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>demo Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>5.0.2.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.12</log4j.version>
    <mysql.version>5.1.6</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.6.8</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- log end -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>demo</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

</ pre>

Zu diesem Zeitpunkt wurde das Grundgerüst des Projekts erstellt und die Abhängigkeiten des Projekts wurden importiert. Anschließend werde ich die Idee der Integration vorstellen.

2. Ideen zur SSM-Integration

In Bezug auf den Zweck muss die Serviceschicht nach der Integration in der Lage sein, Methoden der Dao-Schicht durch Abhängigkeitsinjektion aufzurufen, und die Controller-Schicht muss Methoden der Serviceschicht durch Abhängigkeitsinjektion aufrufen. Daher besteht die Grundidee der Integration darin, mit spring mybatis und springMVC zu integrieren.

Bild

Mybatis-Konfiguration

Zuerst konfigurieren wir zuerst das mybatis-Framework.

Erstellen Sie zunächst die Datenbank demo_ssm und die Kontotabelle

Die SQL-Anweisung lautet wie folgt:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

CREATE DATABASE `demo_ssm`;
USE `demo_ssm`;
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account`(
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(32),
    `money` DOUBLE,
    PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `account`(`name`,`money`) VALUES('赵敏',99999.99),('张无忌',11111.1),('木婉清',22222.22);

</ pre>

2. Erstellen Sie eine Kontoentitätsklasse:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

public class Account implements Serializable {
    private Integer id;
    private String name;
    private Double money;
 //getter and setter
 //toString
}

</ pre>

Drittens verwenden Sie Anmerkungen, um die Persistenzschichtschnittstelle zu entwickeln

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

package com.hust.dao;

public interface IAccountDao {

    @Select("select * from account")
    public List<Account> findAllAccount();
}

</ pre>

Zu diesem Zeitpunkt ist Mybatis konfiguriert. Zu diesem Zeitpunkt wurde die Datenquelle noch nicht konfiguriert. Bei der Integration von Spring warten wir auf die Konfiguration und den Test.

Federkonfiguration und Integration von Mybatis

Erstens die Federkonfiguration

Zu diesem Zeitpunkt Konfiguration der Datei applicationContext.xml:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--    配置扫描-->
    <context:component-scan base-package="com.hust">
        <context:exclude-filter type="annotation"  expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
</beans>

</ pre>

wichtiger Punkt:

Die automatische Baugruppe muss die Anmerkungen im Paket scannen. Daher muss die Konfiguration so konfiguriert werden, dass das Scannen von Anmerkungen aktiviert wird. Es gibt zwei Möglichkeiten, das Scannen von Anmerkungen zu aktivieren: <context: annotation-config /> und <context: component-scan>. Die Ähnlichkeiten und Unterschiede zwischen den beiden sind wie folgt:

<context: annotation-config>: Das Scannen von Anmerkungen gilt für Beans, die im Spring-Container registriert wurden

<context: component-scan>: Hat nicht nur alle Funktionen von <context: annotation-config>, sondern scannt auch die entsprechende Bean unter dem angegebenen Paket

Zweitens integriert Spring Mybatis

Denkanalyse:

Das Mybatis-Framework kann automatisch ein Proxy-Objekt generieren. Daher haben wir für die Persistenzschicht nur eine Schnittstelle und Anmerkungen geschrieben. Die spezifische Implementierungsklasse wird vom Framework für uns vervollständigt. Die CRUD der Datenbank wird auch über dieses Proxy-Objekt implementiert. Solange wir das generierte Proxy-Objekt im Container speichern und vom Spring-Framework steuern lassen können, ist die Integration daher erfolgreich.

Ein weiterer wichtiger Punkt ist, dass das Mybatis-Framework die SqlSessionFactory-Factory-Instanz verwendet, um eine SqlSession-Instanz zu erstellen. Über die SqlSession-Instanz können wir die Datenbank betreiben.

Kurz gesagt, der Schlüssel zur Spring-Integration in Mybatis besteht darin, dem Container die Steuerung der SqlSessionFactoryBean-Klasse zu ermöglichen.

Spezifische Platzierung

Die spezifische Konfiguration ist in drei Teile unterteilt:

1. Konfigurieren Sie die Verbindung **** pool ****. 2. Konfigurieren Sie die sqlSession-Factory-Klasse. 3. Konfigurieren Sie den Scanner für das Scannen von Paketen

Die Konfiguration ist also wie folgt:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--    配置扫描-->
    <context:component-scan base-package="com.hust">
    </context:component-scan>

    <!--    配置数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql:///demo_ssm"/>
        <property name="user" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <!--    配置SqlSession的工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--  配置扫描的包  -->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.hust.dao"/>
    </bean>
</beans>

</ pre>

Nach dieser Konfiguration kann der Spring-Container die sqlSession-Factory-Klasse erstellen. Fügen Sie dann die Annotation @Repository zu IAccountDao hinzu, und das Proxy-Objekt der AccountDao-Schnittstelle kann vom Container verwaltet und integriert werden. Testen wir es mit der Testklasse:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class SpringTest {

    @Autowired
    private IAccountDao accountDao;

    @Test
    public void testSpring(){
        List<Account> accounts = accountDao.findAllAccount();
        for (Account account:accounts
             ) {
            System.out.println(account);
        }
    }
}

</ pre>

Die Ergebnisse sind wie folgt:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

Account{id=1, name='赵敏', money=99999.99}
Account{id=2, name='张无忌', money=11111.1}
Account{id=3, name='木婉清', money=22222.22}

</ pre>

Alle Konten wurden erfolgreich abgefragt, was darauf hinweist, dass die Abhängigkeitsinjektion über den Container erreicht werden kann, was darauf hinweist, dass sowohl Spring als auch Mybatis erfolgreich konfiguriert und erfolgreich integriert wurden.

PS: Hier verwendet Spring @RunWith und @ContextConfiguration, um junit zu integrieren

springMVC Konfiguration

1. Konfigurieren Sie web.xml

Das SpringMVC-Framework basiert auf DispatcherServlet, mit dem alle HTTP-Anforderungen und -Antworten verarbeitet werden. Daher müssen wir die Datei web.xml so konfigurieren, dass die Anforderungen zugeordnet werden, die DispatcherServlet verarbeiten soll.

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<servlet>
    <servlet-name>demo</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>demo</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

</ pre>

Natürlich müssen Sie das Servlet und die Servlet-Zuordnung konfigurieren.

Mit der Konfiguration <init-param> können wir die Servlet-Konfigurationsdatei während der Initialisierung laden.

2. Setzen Sie die Feder MVC.xml ein

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 配置创建 springMVC要扫描的包 -->
    <context:component-scan base-package="com.hust">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 开启SpringMVC框架注解的支持 -->
    <mvc:annotation-driven/>
</beans>

</ pre>

3. Schreiben Sie die AccountController-Klasse

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

@Controller
@RequestMapping("/account")
public class AccountController {
    @Autowired
    private IAccountService accountService;

    @RequestMapping("/all")
    public String findAllAccounts(){
        return "success";
    }
}

</ pre>

Zu diesem Zeitpunkt wurde springMVC konfiguriert, wir starten den Server und wenn wir nach dem Zugriff auf den Pfad / account / all zur Seite success.jsp springen, wird das folgende Bild angezeigt.

Bild

Es zeigt, dass die springMVC-Konfiguration erfolgreich ist

Feder integriert springMVC

Denkanalyse

Wenn der Server zu diesem Zeitpunkt gestartet wird, wird die Datei applicationContext.xml nicht geladen, und das Spring-Framework spielt keine Rolle. Daher ist es unmöglich, die Abhängigkeitsinjektion über die Annotation @AutoWire zu implementieren und die Methode der Serviceschicht aufzurufen. Daher besteht unsere Idee darin, die Konfigurationsdatei zu laden und den Container beim Start des Servers zu erstellen. Auf diese Weise kann die Präsentationsschicht die Geschäftsschichtmethoden aufrufen.

Implementierung

Wir stellen den Listener so ein, dass nach dem Start des Servers die Konfigurationsdatei geladen und der Container initialisiert wird.

Die endgültige Datei web.xml lautet wie folgt:

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <!-- 配置spring提供的监听器,用于启动服务时加载容器。
    该监听器会加载WEB-INF目录中名称为applicationContext.xml的配置文件-->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <!-- 指定spring配置文件的位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

</ pre>

Ändern Sie gleichzeitig die AccountController-Klasse

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

@Controller
@RequestMapping("/account")
public class AccountController {
    @Autowired
    private IAccountService accountService;

    @RequestMapping("/all")
    public String findAllAccounts(){
        List<Account> all = accountService.findAllAccount();
        for (Account a:all
             ) {
            System.out.println(a);
        }
        return "success";
    }
}

</ pre>

Beim Zugriff auf die Seite success.jsp wird das Backend ausgegeben

<pre style = "Boxgröße: Rahmenbox; Umriss: keine; Rand: 0px; Auffüllung: 0px; Rand: 0px; Schriftstil: normal; Schriftvariantenligaturen: normal; Schriftvariantenkappen: normal ; Schriftvariante-numerisch: erben; Schriftvariante-ostasiatisch: erben; Schriftgröße: 400; Schriftdehnung: erben; Schriftgröße: 18px; Zeilenhöhe: erben; Schriftfamilie: couriernew, Kurier , Monospace; vertikale Ausrichtung: Grundlinie; Farbe: RGB (93, 93, 93); Buchstabenabstand: normal; Waisen: 2; Textausrichtung: Start; Texteinzug: 0px; Texttransformation: keine; Witwen: 2; Wortabstand: 0px; -webkit-Text-Strichbreite: 0px; Hintergrundfarbe: rgb (255, 255, 255); Textdekorationsstil: initial; Textdekorationsfarbe: initial; ">

 

Account{id=1, name='赵敏', money=99999.99}
Account{id=2, name='张无忌', money=11111.1}
Account{id=3, name='木婉清', money=22222.22}

</ pre>

Es zeigt, dass das accountService-Objekt durch den Container injiziert werden kann und die Integration erfolgreich ist.

PS: Verwenden Sie die Annotation @RestController, um die API zu realisieren und den Effekt der Trennung von Vorder- und Rückseite zu erzielen.

Zusammenfassung

Der entscheidende Punkt ist hauptsächlich, wie das Federgerüst zur Integration anderer Gerüste verwendet werden kann. Unter diesen ist das Verständnis der Rolle des Federgerüsts sehr wichtig!

Wenn Sie Fragen haben oder etwas falsch schreiben, hinterlassen Sie bitte eine Nachricht zur Diskussion!

 

Ich denke du magst

Origin blog.csdn.net/yunduo1/article/details/108735504
Empfohlen
Rangfolge