基于Spring MVC+Mybatis3+Tomcat+Mysql搭建环境

需求背景:最近需要配合客户端同学做一个线上问题快速定位系统,我负责后台业务逻辑部分的工作,遂自己搭建一套基于Spring MVC及mybatis3的一套web环境,主要用于给客户端提供接口。本文构建的环境使用的IDE为IDEA(acm官方指定),应用maven构建SpringMVC整合Mybatis+MySQL5.7(流行框架)的web项目,目的在于快速构建一个简洁纯净版的web应用工程,将其作为一个基础web-demo,以便类似的项目都可以复用本demo。JDK版本1.8,Tomcat版本8.0。

以下为这次搭建环境的主要步骤:


一、 IDEA下构建maven的web项目

1、新建工程New-->Project,创建maven的web项目,选择maven-archetype-webapp,并配置Project SDK,本次选用的是本机已安装的jdk1.8,如下图所示:

新建maven工程

2、下一步,填写自己项目的GroupId,ArtifactId,如下图:

填写项目groupId,artifactId

3、下一步,设置maven的安装目录,代替IDEA自带的maven版本,我换成了自己手动安装的maven版本,路径存在D盘;设置maven本地的仓库,我配置了本项目单独的仓库,但没去复用之前项目所用的maven仓库,为的是让本工程的依赖jar包保持纯净。

设置maven的安装目录

4、下一步,设置工程的Project Name。

设置工程名

5、Finish,maven的web项目就创建完成,接下来maven会下载相应的资源,下载时速度会很慢(maven加载jar包过程,默认的是先扫描本地仓库,若本地仓库没有,则扫描远程仓库下载。默认的conf/settings.xml文件没有配置远程仓库,所以扫描的是maven的中央仓库(资源镜像一般在国外),所以慢);由于我使用的网络是翻墙外网,直接默认maven下载方式速度还是可以的(或许也是人品好一点☺),如果大家想快一点,也可以参考网上配置maven使用国内镜像的教程。

二、搭建基于SpringMVC整合mybatis的web工程

1、等待maven下载资源完成后,注意到工程目录中会出现src的文件夹,src下默认会存在main目录,main下默认存在resources和webapp文件夹,其中resources文件夹主要存放项目的配置或属性等文件,webapp则是web应用的根目录,会存放HTML,CSS,js,JSP或资源文件等。我们需要再main目录下创建java文件夹,java目录下存放的将是Java程序的package及class文件等。由于我们将搭建springMVC框架,我们可以提前搭建好项目的文件目录结构,如下图所示:

整体结构

其中,java下创建项目的package  com.flh,其下可以再分类不同的package,包括controller,service,service-->impl,entity,dao,dao-->mapper,dao-->xml,common,util等,这些包是基于springmvc+mybatis所需的,还有可以存放一些公共类或工具类。webapp下可创建css,js,image,WEB-INF-->views等。src可创建main的同级目录test,可以用于后续项目开发过程中的Junit程序测试。

2、配置pom.xml文件,maven添加web项目必需的以及SpringMVC所必需的dependencies包。

2.1、以下是引入Junit,日志,MySQL驱动的依赖包,注意此次引入的是最新的mysql-connector-java-6.0.6,会影响后续的SpringMVC及jdbc等的特殊配置,这将和旧版本的mysql驱动包有区别。

这样,已经支持了日志的输出,我们仍然需要日志的属性文件,在resources目录下,新增日志属性文件log4j.properties,并配置如下(配置方式很多种,大家选择一种即可):

其中,开发者可设置rootLogger,开发调试环境时,可设置为DEBUG模式,输出系统的详细日志;生产环境时,可设置为INFO模式。

2.2、以下是引入SpringMVC所必需的依赖包,由于maven自动依赖功能,引入以下包时,会自动引入其他相关的依赖包,其中就包括spring-core,spring-context等重要的包(注意只要能够引入所有的Spring依赖包即可)。

2.3、以下是引入JSP的包,以支持jsp视图的功能。

2.4、以下是引入datasource数据源的包,引入了2种方式,但本次项目中,我们使用的是alibaba的Druid DataSource。

到此,我们已经引入了mysql驱动包,DataSource连接池,我们还需要配置jdbc属性文件,在resources下创建jdbc.properties文件,内容如下:

其中,配置了mysql数据库的连接,用户名,密码等信息。由于使用了最新版本的mysql-connector-java-6.0.6驱动,这要求driver和url的特殊配置,否则项目启动时会报1个警告和2个异常。jdbc.driver配置为com.mysql.cj.jdbc.Driver,可以避免出现警告信息(具体警告信息没有记录下来,大家配置过程中可能会遇到);jdbc.url里添加useSSL属性---配置为true;若出现The server time zone value ‘?й???????’ is unrecognized or represents more than one time zone的错误,则需添加serverTimezone属性,设置为GMT%2B8即可解决

2.5、以下是引入一些其他可能需要的包,包括文件上传等。

3、配置pom.xml文件,设置项目的编译属性,编译后的war包名称(即finalName),存放配置或属性文件到resources目录下。

经过以上的pom.xml的配置,项目及springmvc所需的依赖包就已经基本引入了,通过IDEA右侧栏中的maven projects的reimport按钮实现依赖包的引入下载(并且,其中常用的是clean,package,install等,clean可以清除生成的target目录,install可以重新生成target目录),若pom.xml种引入/修改了新的依赖包/插件或者Dependencies存在红色提示,需要重新reimport以下。

4、配置项目的web.xml文件,包括首页,异常跳转,会话超时,字符编码过滤器CharacterEncodingFilter,监听器ContextLoaderListener,前置控制器DispatcherServlet,静态文件单独处理等等。代码及解释可以参看源码。

5、由web.xml的配置中看出,我们还需要配置applicationContext.xml和spring-mvc.xml,具体参看源码。

其中:

  注解配置:<context:annotation-config/>;

  注解驱动:<mvc:annotation-driven/>;

  自动扫描controller类,自动扫描service类:context:component-scan;

  静态资源映射(我们springmvc配置的是拦截“/”,例如:/user/getUserInfo,REST风格,但会导致静态文件(jpg,js,css等)被拦截后不能正常显示):mvc:resources;

  模型视图名称的解析(默认路径及后缀):InternalResourceViewResolver;

支持返回json格式(前后端分离场景下,返回数据格式):AnnotationMethodHandlerAdapter,MappingJackson2HttpMessageConverter。通常在前后端分离项目中,后台要向前端返回json格式的相应数据,以上已经在spring-mvc.xml中配置了json格式转换的处理,我们仍需要引入json支持的依赖包。

6、配置applicationContext.xml文件,在这里我们配置数据源以及与mybatis的整合配置

在这里,我们引入了之前配置的jdbc.properties属性文件来配置我们的DataSource;配置了对dataSource 数据源进行事务管理;使用annotation注解方式配置事务,启用对事务注解的支持;

注意在这里我们添加了对mybatis的设置,实现springmvc与mybatis的整合,配置可扫描所有mapper.xml和mapper dao文件以及对事务的管理。

我们如果想使用mybatis逆向工程插件生成mybatis的mapper,entity等代码,则需要在之前的<build>标签下添加mybatis-generator插件:

添加后,我们reimport下,会在maven project下新增出相应的插件,我们之后会使用到mybatis-generator:generate自动生成实体类,mapper文件,如下图:

7、在applicationContext.xml的配置中看出,我们仍需要配置mybatis.xml的文件,进行mybatis相关的配置,如下所示:

OK,到目前为止,该web-demo项目的环境搭建就基本完成了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 228,119评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,382评论 3 415
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 176,038评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,853评论 1 309
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,616评论 6 408
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,112评论 1 323
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,192评论 3 441
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,355评论 0 288
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,869评论 1 334
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,727评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,928评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,467评论 5 358
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,165评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,570评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,813评论 1 282
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,585评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,892评论 2 372

推荐阅读更多精彩内容