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

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详细记录的更多相关文章

  1. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  2. 详解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    转载(https://www.jb51.net/article/130560.htm) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

  3. eclipse + maven 搭建springMVC+Spring+mybatis 系统

    首先需要下载maven 安装maven插件.自行百度. 1: 创建maven系统 http://huxiaoheihei.iteye.com/blog/1766986 2:添加pom依赖: pom.x ...

  4. 单工程搭建springmvc+spring+mybatis(maven,idea)

    单工程搭建springmvc+spring+mybatis(maven,idea) 1.pom.xml <properties> <project.build.sourceEncod ...

  5. Maven搭建springMVC+spring+hibernate环境

    这次不再使用struts2做控制器,采用spring自己的springMVC框架实现. 首先,改写pom.xml文件,不需要struts2的相关jar了. pom.xml <project xm ...

  6. Maven构建 SpringMVC+Spring+MyBatis 环境整合

    目录 1. Maven 项目搭建 2. Maven 插件生成 MyBatis 代码 3. 待续 ... 开发环境 开发环境请尽量保持一致,不一致的情况可能存在问题. JDK 1.7 MyEclipse ...

  7. JavaWeb_(SpringMVC框架)测试SpringMVC&Spring&MyBatis三大整合

    搭建 SpringMVC&Spring&MyBatis三大整合 传送门 1.准备 测试搭建S pringMVC&Spring&MyBatis三大整合 用例   a)准备 ...

  8. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

  9. maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    转自:https://www.cnblogs.com/lmei/p/7190755.html?utm_source=itdadao&utm_medium=referral @_@ 写在最前 之 ...

随机推荐

  1. Bash's Big Day

    Bash has set out on a journey to become the greatest Pokemon master. To get his first Pokemon, he we ...

  2. 关于js中window.location.href,location.href,parent.location.href,top.location.href用法

    "window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一 ...

  3. php循环生成的表单如何获得其各项值案例

    思路:输入框和按钮是用for循环生成的,不但要获取输入框里的各项值,并且要获取点击按钮的值,要知道是那个按钮被点击了,这里以生成5个为例.如图: 这是提交页面,点击的是“小米”. 这是显示结果,测试显 ...

  4. 分布式cookie-session的实现(spring-session)

    分布式cookie-session的实现(spring-session) 本文使用的spring-session版本为 1.0.0,地址为: https://github.com/spring-pro ...

  5. html中object标签详解

        定义和用法 object标签定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码. &l ...

  6. ImageView及其子类(一)

    ImageView继承自View组件,它的主要功能是用于显示图片——实际上这个书法不太严谨因为他能显示的不仅是图片,任何Drawable对象都可以使用ImageView来显示.除此之外,ImageVi ...

  7. leetcode[170]Two Sum III - Data structure design

    Design and implement a TwoSum class. It should support the following operations: add and find. add - ...

  8. NOIP 提高组必会!(转)

    1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序)2.DFS/BFS 也就是搜索算法,剪枝务必要学! 学宽搜的时候学一下哈希表!3.树 ①遍历 ②二叉树 ③二叉排序树(查找.生成.删除) ④ ...

  9. JS前端的分享功能

    给网页加上分享代码,借助网友的力量推广网站,目前已经很流行了 以下是网页代码 QQ空间分享代码如下: <a href="javascript:void(0);" onclic ...

  10. 使用AngularJS的三个重要原因

    入门教程:http://www.ituring.com.cn/minibook/303 : http://angularjs.cn/tag/AngularJS 原因一:Google开发的框架 要知道开 ...