天天看點

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

基于SSM架構快速搭建maven背景項目

環境準備

1.IntelliJ IDEA

2.Maven

https://maven.apache.org/

3.MYSQL

https://www.mysql.com/

4.Tomcat

http://tomcat.apache.org/

5.JDk

https://www.oracle.com/java/technologies/javase-downloads.html

SSM架構簡介

無論你是前端,APP,後端開發工程師,搭建一個自己的背景對于學習都是很有幫助的,本文是作者搭建SSM後端環境的記錄,閱讀完本文你也可以快速搭建一個屬于自己的後端代碼。

SSM架構是Spring MVC ,Spring和Mybatis架構的整合,是标準的MVC模式,将整個系統劃分為View層,Controller層,Service層,DAO層四層,使用Spring MVC負責請求的轉發和視圖管理,Spring實作業務對象管理,Mybatis作為資料對象的持久化引擎。

資料庫配置

首先我們建立一個資料庫和表。

建立資料庫的SQL

CREATE DATABASE time_manager_app           

建立資料表的SQL

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(8) NOT NULL COMMENT '主鍵',
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;           

向資料表中插入一條資料

INSERT INTO `user` VALUES ('1', '1');           

建立工程

現在我們打開IDEA建立我們的maven工程

File->New->Project

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

選擇maven,選中紅框中的選項,點選Next

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

紅框中的兩個選項随便輸入,點選Next

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

紅框中選擇本地安裝的maven軟體的位置,點選Next

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

點選finish

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

現在我們的maven工程就建立好了

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

接下來我們要建立一些工程需要的檔案夾

右鍵選擇SRC->NEW->Directory

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

建立好的檔案目錄如下

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

右鍵JAVA将它設定為Source Root

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

右鍵resource将它設定為Resources Root

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

工程建立完畢,接下來我們編寫我們需要的配置檔案

配置檔案編寫

首先我們在POM.XML中添加我們需要的依賴包

注意,複制時從備注裡的copy開始,複制到copy結束,不要整個檔案複制

<?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.ssmtest</groupId>
    <artifactId>ssmtest</artifactId>
    <version>1.0-SNAPSHOT</version>
      <!--從這裡開始copy -->
    <!-- 用來設定版本号 -->
    <properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <slf4j.version>1.7.12</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <druid.version>1.0.9</druid.version>
    </properties>
  
    <!-- 用到的jar包 -->
    <dependencies>
        <!-- 單元測試 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 表示開發的時候引入,釋出的時候不會加載此包 -->
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>
        <!-- spring架構包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</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>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-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</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>
        <!-- spring架構包 -->
        <!-- mybatis架構包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- mybatis架構包 -->
        <!-- 資料庫驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <!-- 導入dbcp的jar包,用來在applicationContext.xml中配置資料庫 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- jstl标簽類 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- log -->
        <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>
        <!-- 連接配接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!--加入對json轉換-->
        <!-- JSON: jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jr</groupId>
            <artifactId>jackson-jr-all</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.46</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>jackwu</finalName>
        <!-- java編譯插件,如果maven的設定裡配置好jdk版本就不用 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>

        <!--打包配置檔案-->
        <resources>
            <resource>
                <directory>src\main\resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.tld</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src\main\java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
    </build>
    <!--copy在這裡結束 -->

</project>           

PS:如果你的網絡環境不好,Maven下載下傳依賴包需要一段時間,不要着急,繼續接下來的配置就可以了

接下來我們在WEB-INF目錄下建立web.xml

web.xml内容如下,整個copy就可以

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- 配置加載類路徑的配置檔案 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>

    <!-- 配置監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <!-- 解決中文亂碼過濾器 -->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- 前端控制器(加載classpath:springmvc.xml 伺服器啟動建立servlet) -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化參數,建立完DispatcherServlet對象,加載springmvc.xml配置檔案 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 伺服器啟動的時候,讓DispatcherServlet對象建立 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>



    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>
           

接着我們在resources檔案夾下建立applicationContext.xml

同樣内容整個複制

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 開啟注解掃描,管理service和dao -->
    <context:component-scan base-package="service">
    </context:component-scan>
    <context:component-scan base-package="dao">
    </context:component-scan>

    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置連接配接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!-- 把交給IOC管理 SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

    </bean>
    <!-- 掃描dao接口 -->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="dao"/>
    </bean>

    <!-- 配置Spring的聲明式事務管理 -->
    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>           

接着我們在resource檔案夾下建立spring-mvc.xml

<?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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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
           http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
           ">

    <!-- 掃描controller的注解,别的不掃描 -->
    <context:component-scan base-package="controller">
    </context:component-scan>

    <!-- 配置視圖解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- JSP檔案所在的目錄 -->
        <property name="prefix" value="/pages/" />
        <!-- 檔案的字尾名 -->
        <property name="suffix" value=".jsp" />
    </bean>


    <!-- 開啟對SpringMVC注解的支援 -->
    <mvc:annotation-driven />

    <!--
        支援AOP的注解支援,AOP底層使用代理技術
        JDK動态代理,要求必須有接口
        cglib代理,生成子類對象,proxy-target-class="true" 預設使用cglib的方式
    -->

    <!--
        支援AOP的注解支援,AOP底層使用代理技術
        JDK動态代理,要求必須有接口
        cglib代理,生成子類對象,proxy-target-class="true" 預設使用cglib的方式
    -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>
    <!-- 輸出對象轉JSON支援 -->
    <bean
            class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean
                        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>text/plain;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

</beans>           

接着我們在resource檔案夾下建立db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/time_manager_app?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root           

現在我們的工程檔案結構是這樣的

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

接下來我們要編寫我們的java代碼

Java代碼編寫

首先我們建立幾個需要的檔案夾

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

接着我們在相應的檔案夾下建立我們的java檔案

檔案結構如下

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

每個檔案下的代碼如下

UserController

package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/find.do")
    @ResponseBody
    public Object findAll(){
        Object a = userService.findAll();
        System.out.println(a);
        return  a;
    }
}           

UserDao

package dao;

import org.apache.ibatis.annotations.Select;
import pojo.User;

import java.util.List;

public interface UserDao {
    @Select("select * from user")
    public List<User> findAll();
}
           

User

package pojo;

public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}           

UserServiceImpl

package service.impl;

import dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pojo.User;
import service.UserService;

import java.util.List;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public List<User> findAll(){
        return  userDao.findAll();
    }
}           

UserService

package service;

import pojo.User;

import java.util.List;

public interface UserService {

    public List<User> findAll();
}           

到這裡代碼應該是沒有錯誤的.如果有錯誤,可能是依賴包沒有下載下傳好,等待一下

接下來我們配置tomcat

配置tomcat

點選idea右上角的位置,接着點選edit

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

按順序點選紅色框的位置

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

在紅框處選擇tomcat版本

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

接着配置我們的war包,點選紅色框處

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

選擇第二個

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

清空application context中的内容,點選apply

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

NO NO NO配置中間我們出現了一個問題

應該把resource檔案夾更名為resources Sorry

正确的工程路徑如下

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

啟動程式

接下來我們要啟動我們的程式,測試是否配置成功

按順序點選紅框處

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

等待打包成功,會出現target檔案夾,控制台log如下

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

接着點選綠色箭頭,啟動程式

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

測試

打開我們的浏覽器,輸入

http://localhost:8080/user/find.do
基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

Amazing資料庫中的一條資料已經成功傳回了,到此我們的SSM工程配置成功。

代碼倉庫位置

如果你覺得配置太麻煩,你也可以在github上下載下傳作者配置好的項目

項目位址

https://github.com/jack0-0wu/ssm_test

後續還會創作幾篇如何快速使用此項目完善背景邏輯,歡迎關注

歡迎關注微信公衆号,文章會首發在微信公衆号。

可以搜尋公衆号名 ‘’傑克的程式人生‘’

基于SSM架構快速搭建maven背景項目基于SSM架構快速搭建maven背景項目

師者,是以傳道授業解惑也,教師節快樂