快速整合SSM框架,项目开发环境快速搭建,Spring+Spring MVC+MyBatis(MyBatis Plus),附上几个常用小组件

本文详细介绍了如何快速搭建基于SSM(Spring、SpringMVC、MyBatis)的开发环境,包括Maven配置、web.xml、applicationContext.xml、mybatis-config.xml等核心配置文件的设置,以及FreeMarker、Druid、MyBatisPlus等组件的整合。通过此文,开发者可以快速启动新的SSM项目。
摘要由CSDN通过智能技术生成

 

前言

做了一些项目之后,博主发现基于SSM开发的项目最初的开发环境配置大体是相同,因此在此总结一波SSM框架开发的环境搭建,以后做SSM项目时可以基于本文快速搭建起来。现在一般都是IntelLiJ IDEA吧,先来一张maven构建的工程结构图,可能有细微的差异,但大体是一样的。

关于Maven的pom.xml配置说明

很多常用的依赖都放上去了,其余的依赖的jar包根据需求来就行

<?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>xxx.xxx</groupId>
    <artifactId>xxxxxx</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>


    <!--从这以后是我们需要手动搬砖的部分-->

    <!--建议每次项目都引入aliyun的依赖仓库,大部分依赖会优先从aliyun上下载,下载速度快-->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

    <dependencies>
        <!--spring mvc依赖(自动包含spring相关依赖)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.7</version>
        </dependency>

        <!--freemarker spring-context-support支持依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.3.7</version>
        </dependency>

        <!--freemarker-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>

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

        <!--jackson json序列化组件,spring mvc默认支持Jackson,阿里云的fastjson也很好-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.12.3</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.12.3</version>
        </dependency>

        <!--整合mybatis-->
        <!--引入spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.7</version>
        </dependency>
        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!--spring与mybatis整合依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.24</version>
        </dependency>
        <!--Druid数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!--单元测试依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.7</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <!--logback日志管理-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.3.0-alpha5</version>
        </dependency>

        <!--MyBatis Plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.3</version>
        </dependency>

        <!--Kaptcha验证码组件-->
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>

        <!--MD5-->
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.15</version>
        </dependency>

        <!--文件上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>

        <!--Jsoup-->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.13.1</version>
        </dependency>
    </dependencies>

</project>

关于web.xml中的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置Spring MVC中的中央处理器DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext*.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--解决post请求中文乱码-->
    <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>
</web-app>

/main/resources下的applicationContext.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:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/task
            https://www.springframework.org/schema/task/spring-task.xsd
            http://www.springframework.org/schema/tx
            https://www.springframework.org/schema/tx/spring-tx.xsd">
    <!--开启spring注解模式-->
    <context:component-scan base-package="com.imooc"/>
    <!--开启spring mvc注解模式-->
    <mvc:annotation-driven>
        <!--解决响应乱码问题-->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=utf-8</value>
                        <value>application/json;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--过滤静态文件-->
    <mvc:default-servlet-handler/>

    <!--freemarker与Spring MVC的整合-->
    <!--freemarker解析器-->
    <bean name="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <!--解决ftl文件渲染响应时产生的中文乱码问题-->
        <property name="contentType" value="text/html;charset=utf-8"/>
        <property name="suffix" value=".ftl"/>
    </bean>
    <!--freemarker配置-->
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPaths" value="/WEB-INF/ftl"/>
        <property name="freemarkerSettings">
            <props>
                <!--读取ftl文件时用utf-8字符集-->
                <prop key="defaultEncoding">utf-8</prop>
            </props>
        </property>
    </bean>

    <!--mybatis与spring整合-->
    <!--配置数据源-->
    <bean name="datasource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url"
                  value="jdbc:mysql://localhost:3306/imooc_reader?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimeZone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="你的DB用户名"/>
        <property name="password" value="你的DB密码"/>
        <property name="initialSize" value="5"/>
        <property name="maxActive" value="20"/>
    </bean>
    <!--根据配置信息创建SqlSessionFactory-->
    <!--原生mybatis
        <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    -->
    <!--mybatis plus-->
    <bean name="sessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
    <!--配置Mapper接口扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.imooc.reader.mapper"/>
    </bean>

    <!--声明式事务配置-->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"/>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!--配置Kaptcha验证码-->
    <bean name="kaptchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
        <property name="config">
            <bean class="com.google.code.kaptcha.util.Config">
                <constructor-arg>
                    <props>
                        <prop key="kaptcha.border">no</prop>
                        <prop key="kaptcha.imaga.width">160</prop>
                        <prop key="kaptcha.textproducer.font.color">blue</prop>
                        <prop key="kaptcha.textproducer.font.size">40</prop>
                        <prop key="kaptcha.textproducer.char.length">4</prop>
                        <prop key="kaptcha.background.clear.from">white</prop>
                    </props>
                </constructor-arg>
            </bean>
        </property>
    </bean>

    <!--开启Spring Task注解模式-->
    <task:annotation-driven/>

    <!--图片(文件)上传-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"/>
    </bean>

    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="拦截地址"/>
            <mvc:exclude-mapping path="放行地址"/>
            <bean class="拦截器类"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

mybatis-config.xml配置

以下基本上是必添项

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!--驼峰命名与下划线命名之间的自动转换-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <plugins>
        <!--分页插件,不同的MyBatis Plus版本之间会存在差异,具体的见官方文档-->
        <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
            <property name="@page" value="com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor"/>
            <property name="page:dbType" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

"mapper".xml头配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

logback.xml配置,可没有

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="console"/>
    </root>
</configuration>

总结

以上便是SSM整合,建议初学者还是得根据步骤来,方便记忆与理解,我也会在后文中贴上我的整合过程(简单版,我很菜,仅供参考)。

我也是觉得SSM项目配置是比较多的,所有用这篇博文记录一下,用多了之后就会发现,很多配置复制粘贴就行。不过说这么多,还是往Spring Boot靠吧,但我建议在上手Spring Boot之前最好先上手SSM,在上手分布式与Spring Cloud前最好先上手Spring Boot。很多知识点都是层层递进的!

关于SSM整合过程

一、先对Spring 与 Spring MVC进行整合

  1. 向pom.xml中添加相关依赖
  2. 在web.xml中配置DispatcherServlet
  3. 在applicationContext.xml中启动Spring MVC注解模式
  4. 配置请求与响应字符集,解决中文乱码问题,Post请求在web.xml中配置,响应在applicationContext.xml中的<mvc:annotation-driven></mvc:annotation-driven>中配置

二、整合Spring MVC与FreeMarker

  1. 在pom.xml中引入freemarker依赖以及spring的支持依赖
  2. 在applicationContext.xml中配置相关信息(见前文)

三、配置JSON序列化

  1. 这一步直接在pom.xml中添加依赖就好

四、整合MaBatis

  1. 在pom.xml中添加相关依赖及其驱动依赖
  2. 在applicationContext.xml中进行配置(相关配置见上文)
  3. 创建mybatis-config.xml

之后可以根据需要决定是否引入MyBatis Plus及其其它依赖

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值