SSM框架搭建(Spring+SpringMVC+Mybatis)

SSM框架搭建

Spring+SpringMVC+Mybatis

1.创建Maven项目(javaWeb项目) (org.yn)

1.1 把项目结构写完整

​ (domain,service,mapper,controller )

2.集成Spring

2.1 导入依赖包
  <!--导入spring容器上下文jar-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>
    <!--spring测试-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
2.2加入配置文件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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       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/context
        https://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd"
       >
    
    </beans>
2.3 测试 导入是否成功

写一个bean

<bean id="Date" class="java.util.Date"></bean>

测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class test01 {
    @Autowired
    private Date date;
    @Test
    public void test(){
        System.out.println(date.getTime());
    }
}

3.集成Spring+Mybatis

3.1导入依赖包

(JDBC,mybatis,mysql,连接池,mybatis-spring,日志)

<!--集成Mybatis依赖jdbc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!-- mysql驱动包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.26</version>
    </dependency>

    <!--连接池-->
    <!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
    <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>3.3.1</version>
    </dependency>

    <!--spring和mybatis集成需要一个包-->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
        <!--日志包-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

3.2编写配置文件
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm
jdbc.username=root
jdbc.password=root
LOG4J 日志
#全局日志配置
log4j.rootLogger = info,console
#输出局部的日志信息(自己的包中的日志打印方式)
log4j.logger.com.yn=TRACE
### 配置输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
### 使用System.out打印日志
log4j.appender.console.Target = System.out
### 指定日志的格式布局(日志是有格式的)
log4j.appender.console.layout = org.apache.log4j.PatternLayout
### 日志的打印格式
log4j.appender.console.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n
Mybatis核心类交给Spring管理

applicationContext.xml文件添加如下配置

<!--jdbc.properties-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--dataSource-->
    <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
        <!-- 四大数据库基本信息-->
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

        <!--其他信息-->
        <property name="connectionTimeout" value="3000"></property>
        <property name="maximumPoolSize" value="10"></property>
        <property name="idleTimeout" value="3000"></property>
    </bean>

    <!--SqlSessionFactory
    -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--1 dataSource-->
        <property name="dataSource" ref="dataSource"></property>
       <!-- 2 映射文件-->
        <property name="mapperLocations" value="classpath:com/ronghuanet/mapper/*Mapepr.xml"/>
        <!--3 别名包-->
        <property name="typeAliasesPackage" value="com.ronghuanet.domain"></property>
    </bean>

扫描Mapper包

applicationContext.xml文件添加如下配置

<!--扫描特定包下面的所有的接口,通过动态代理为我们Mapper产生映射器交给Spring管理
      以后需要的时候直接注入
   -->
   <bean id="configurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.ronghuanet.mapper"></property>
       <!--底层操作数据库,需要获取SqlSession,给他sqlSessionFactory一个工厂,它需要的时候通过调用
       工厂的openSession方法获取
       SqlSession sqlSession = factory.openSession();-->
       <!--其实可以不要,会自动在容器中寻找-->
       <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>-->
   </bean>

3.3测试Spring-Mybatis

1.根据数据库创建实体类

2.创建mapper接口 和其对应的xml文件(注意spring配置文件中包扫描的位置是否正确)
3.创建接口方法,并通过xml实现(推荐使用插件MybatisX)
4.创建测试用例 用注解实现

4.Spring+Mybatis+Service事务支持·注解版

4.1导入包

在Spring中使用了AOP来集成事务,支持XML配置和 注解配置两种方式 , 当然需要导入 spring‐tx 包支持

<!--spring事务-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.8</version>
    </dependency>
4.2 核心配置
  • spring核心配置文件中添加 tx 的支持
  • 配置相应的事务管理器: transactionManager
  • 配置tx的注解支持
        <context:component-scan base-package="org.yn.service"></context:component-scan>

        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <property name="dataSource" ref="dataSource" />
        </bean>
        <!-- 开始事务注解支持-->
        <tx:annotation-driven />
4.3使用注解

​ service层中使用注解 @Transactional

@Transactional 
public class EmployeeServiceImpl implements IEmployeeService { 
    .... 
}

5.集成SpringMVC

5.1导入包
 <!--springmvc支持jar包,导入webmvc其实就已经导入web,它依赖于web-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
    </dependency>

    <!--后端返回json数据需要-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.10.8</version>
    </dependency>
    <!--Servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!--jsp支持-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
5.2配置web.xml
  1. 文件头修改(版本问题)
<!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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">

2.配置核心分发器

  <!--配置核心分发器-->
  <!--  拦截所有的请求,-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--  将映射配置文件当做初始化参数配置进dispatcherServlet中-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!--    项目启动就加载-->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!--  / 拦截请求,放行jsp请求,其他请求全部拦截    -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

3.配置字符编码过滤器

<!--处理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>
5.3spring-mvc.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--引入applicationContext方案一   -->
<!--    <import resource="classpath:applicationContext.xml"></import>-->

<!--    放行静态资源请求-->
    <mvc:default-servlet-handler />

<!--    \开启spring对mvc的支持:即能够使用\@RequestMapping注解 \&#45;&#45;\>-->
    <mvc:annotation-driven/>

<!--扫描注解 -->
    <context:component-scan base-package="org.yn.controller" />
    <context:component-scan base-package="org.yn.*"></context:component-scan>

<!--     设置视图路径的前后缀,该配置可以让我们写视图路径的时候更简单 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/" />
        <property name="suffix" value=".jsp" />
    </bean>


    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为1MB -->
<!--        <property name="maxUploadSize">-->
<!--            &lt;!&ndash; spring el写法:1MB &ndash;&gt;-->
<!--            <value>#{1024*1024}</value>-->
<!--        </property>-->
        <!-- 效果同上 -->
<!--        10mb-->
        <property name="maxUploadSize" value="10485760" />
    </bean>


    <!-- 配置拦截器组 -->
<!--    <mvc:interceptors>-->
<!--        &lt;!&ndash; 拦截器 &ndash;&gt;-->
<!--        <mvc:interceptor>-->
<!--            &lt;!&ndash; 要拦截的配置,该配置必须写在不拦截的上面,/*拦截一级请求,/**拦截多级请求 &ndash;&gt;-->
<!--            <mvc:mapping path="/**"  />-->
<!--            &lt;!&ndash; 设置不拦截的配置 &ndash;&gt;-->
<!--            <mvc:exclude-mapping path="/login"/>-->
<!--            &lt;!&ndash; 配置拦截器 &ndash;&gt;-->
<!--            <bean class="com.yn.utils.MyInterceptor" />-->
<!--        </mvc:interceptor>-->
<!--    </mvc:interceptors>-->

</beans>
5.4 将spring配置文件和Spring-MVC配置文件关联启动

方案一:在spring-mvc.xml文件中配置、

<!--引入applicationContext方案一   -->
<import resource="classpath:applicationContext.xml"></import>



方案二:web.xml中配置

<!--方案2-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
#### 5.5 测试

。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值