首页 > 代码库 > Maven 搭建SpringMvc+Spring+Mybatis详细记录

Maven 搭建SpringMvc+Spring+Mybatis详细记录

总觉得,看比人写的总是那么好,每次搭建框架时都会找博客,找教程来跟着一步一步走,虽然很快搭建成功了,但是经常情况是我并不知道我干了什么,也不记得具体步骤,到底为什么要这么做,今天我详细记录了一下自己搭建的过程,并且尽量理解每一步干什么。

SSM框架当下比较流行,我也是用这个框架来作为记录,尝试详细地记录下每一个步骤,学习,不要怕开头难。

一、创建一个新的Maven项目

  1、 new -> Maven -> Maven Project 

技术分享

选择webapp工程。

技术分享

技术分享

2、maven项目建好以后,工程目录如图。可以看到index.jsp文件报错了,那是因为我们工程还没有引入web项目相关包。我们需要项目默认的source folder只有/src/main/resources。我们需要手动建立另外三个source folder。右键工程名->new->source folder,输入文件名(src/main/java src/test/java src/test/resources)

技术分享

3、建立好source folder后,我们需要将文件与项目发布目录关联起来。

右键工程名->build path ->source ,双击对每个文件夹下的output folder。src/main/java和src/main/resources添加到target/classes,另外两个添加到target/teas-class

技术分享

添加完毕后如图:

技术分享

4、将maven引用包关联到项目发布目录里,在不用maven管理项目时,项目导入的包需要放在WEB-INFO/lib下,所以,我们需要将maven引用包也要关联到这个目录下。

build Path -> deployment Assembly

技术分享

技术分享

技术分享

5、在工程最下面,打开pom.xml文件,添加依赖。

技术分享

保存pom文件

技术分享

添加成功后项目没有报错,一个maven创建的javaweb项目基本完成。
src/main/java 下放项目工程源码文件
src/main/resources 下放项目的一些配置文件
src/test/* 这里是测试相关目录。
视图文件一般放在webapp目录下。


到目前为止是一个基本的web项目,需要用到框架,就打入相关包,设置好配置文件就ok。
下面我就开始搭建SpringMvc + Spring + Mybatis

 

二、配置SpringMvc

1、首先需要导入SpringMvc的一些系列包,用maven导入,在pom配置文件里添加如下依赖就行。

我用的springmvc版本是4.1.6。我所有需要依赖的包都是在:http://mvnrepository.com/
上搜索,找到版本,然后把依赖添加到pom文件里,然后让maven自动去下载jar包到本地maven
库,如果有下载失败,也可手动下载jar包,然后通过mvn命令手动添加jar包到本地maven仓库。

我并不知道项目会用哪些jar,我大概知道一些,先添加进来,出错了,根据错误再导入相关jar包。

以下是我在pom文件中添加的依赖:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.6.RELEASE</version>
    </dependency>

2、所有包引入后,配置web.xml,使其具有springmvc特性,主要配置两处,一个是ContextLoaderListener,一个是DispatcherServlet.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
  
    <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                classpath:spring-*.xml
            </param-value>
    </context-param>
  
  <!--配置spring监听器,配置ContextLoaderListener表示,该工程要以spring的方式启动。启动时会默认在/WEB-INF目录下查找spring-*.xml作为spring容器的配置文件,
该文件里可以初始化一些bean
--> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- Spring MVC Servlet 的配置, 配置DispatcherServlet表示,该工程将采用springmvc的方式。启动时也会默认在/WEB-INF目录下查找XXX-servlet.xml作为配置文件,
XXX就是DispatcherServlet的名字,该文件中将配置两项重要的mvc特性:HandlerMapping,负责为DispatcherServlet这个前端控制器的请求查找Controller; ViewResolver,负责为DispatcherServlet查找ModelAndView的视图解析器。也可以配置参数,指定加载的配置文件 此处使用指定的配置文件spring-*.xml
--> <servlet> <servlet-name>Spring-Servlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-*.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring-Servlet</servlet-name> <url-pattern>/</url-pattern> <!--拦截所有请求--> </servlet-mapping> </web-app>

3、接下来添加springmvc的配置文件

在src/main/resources目录下新建spring-servlet.xml文件(满足spring-*.xml格式,可以被扫描到)。

spring-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName">

    <!-- 扫描包下的所有类,该包路径下的类可以不需要配置bean了 -->
    <context:component-scan base-package="cquzrj.vipserver.controller" />

 
    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
            
</beans>

4、我们可以简单测试一下。看是否报错,看到报错,认真看错误信息,找到错误源头,先不百度,尝试自己解决。

在src/main/java下新建包,并建一个类。

package cquzrj.vipserver.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestVip {
    /**
     * 1. 使用RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
     * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作
     * "/WEB-INF/views/success.jsp"
     * @return
     */
    
    @RequestMapping("/helloworld")
    public String hello(){
        System.out.println("hello world");
        return “index”; 
    }
}

  

若pom文件里添加的依赖全部成功,运行可以看到已经成功访问。报异常是因为我们还没有配置视图解析器。

  技术分享

技术分享

5、配置视图解析器

在spring-servlet.xml中加入:

  <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

在这里,由于我配置的是JstlView,需要引入jstl包,在pom文件加入依赖:

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

 

如果下载包失败,在java resource处会有红色感叹号,这就需要手动在下载并引入了,最后检查一下上面第一节的第4步,看maven包有没有引用到发布目录。
当然,也可以配置其他的视图解析器例如org.springframework.web.servlet.view.InternalResourceView

重新启动项目,访问helloworld,会发现页面成功跳转到了index页面。说明视图解析成功。

技术分享

三、配置Mybatis

 

1、 Mybatis整合spring,其实就是需要spring的IOC容器来管理mybatis的SqlSessionFactory,而不需要mybatis自己去管理。

 

依然在src/main/resources下新建配置文件spring-mybatis.xml

 

spring-mybatis.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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byType">

    

         <!--数据库连接,用阿里的druid连接池-->  
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
        init-method="init" destroy-method="close">   
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://10.10.102.6:3306/jeecgmybatis?useUnicode=true&amp;charaterEncoding=utf-8" />
        <!-- 
            打开预编译,并缓存预编译,在执行prepareStatement时,或mybaits中的参数填充时,提高效率。
        jdbc:mysql://10.10.102.6:3306/jeecgmybatis?useServerPrepStmts=true&cachePrepStmts=true&useUnicode=true&amp;charaterEncoding=utf-8 -->
        <property name="username" value="root" />
        <property name="password" value="root" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="0"></property>
        <!-- 连接池最大数量 -->
        <property name="maxActive" value="20"></property>
        <!-- 连接池最大空闲 -->
        <property name="maxIdle" value="15"></property>
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="10"></property>
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000"></property>
    </bean>

  <!-- sqlSessionFactory会被org.mybatis.spring.mapper.MapperFactoryBean使用 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:MyBatis-Config.xml"/>
        <property name="mapperLocations">
            <list>
                <!-- mapper文件的放置位置 -->
                <value>classpath:cquzrj/vipserver/model/xml/*Mapper.xml</value>
             </list>
        </property>
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- mybatis的Mapper的扫描器 MapperScannerConfigure  会自动扫描  
         包下的所有接口自动生成代理对象: 对象名字为Mapper接口类名(首字母小写)  
     -->  
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cquzrj.vipserver.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean> 
    
    
    
</beans>

 

2、加入mybatis相关包,pom文件添加:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.13</version>
    </dependency>
     <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.2.7</version>
     </dependency>
     <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>1.3.0</version>
     </dependency>

同样,导入包失败,请手动下载后导入,在导入完成后,检查第一节第4步。

到目前为止,整个框架整合完毕,需要的就是测试了,我在本机测试通过,并在此记录一下,这里关于如何进行SpringMVC整合Mybatis进行开发,我这里先不写了,留作下次我整理清楚再详细绍介绍,本文是个人学习记录,其中难免有讲述不清和个人理解有误的地方,请谅解并欢迎指正,共同学习。还有,需要说明的一点是,前面工程的名字是ZRJCash,后面是ZRJCashVip,这是因为我后边儿手动改了名字,可以略过。

 

Maven 搭建SpringMvc+Spring+Mybatis详细记录