浅谈IDEA搭建SSM框架的集成
前言
学习完MyBatis,Spring,SpringMVC之后,我们需要做的就是将这三者联系起来,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据对象持久化引擎。这样搭配的优点是:轻量、自由度高、Spring与Spring MVC契合度更好。通过一个图书管理示例完成SSM框架的集成。
本章目标
通过图书管理系统完成SSM框架的集成。
项目构建
一.父模块
1.我们打开idea选择create new project,然后选择Maven项目,我们暂时先不要选择maven骨架,等我们的视图层(WEB-UI层)的时候再选择maven骨架
2.这一步输入组织名,模块名称
Groupld:组织名
artifactId:模块名称
version:版本号
在Maven世界中,每个工程都有它唯一的 组织名、模块名、版本 ,这三个就是maven项目的坐标。一个maven工程可以打包成jar、war、pom等形式,但是它们都是拥有上述三个坐标的。我们在项目过程中导入的jar包就是通过上述坐标值唯一确定的。因此,我们在创建一个maven工程时会要求指定具体的 组织名、模块名、版本、打包方式。
二.子模块(common层)
1.创建子模块common层,然后点击next
三.子模块(Dao层)
1.子模块Dao层和Comon一样,这里就不再做过多的描述了
2.直接完成最后一步
四.子模块(Service层)
1.同理,如上
五.子模块(Entity层)
1.实体层和mmon层一样都是同样的操作步骤,这里我们就不进行截图了,操作步骤都一样
六.子模块(WEB-UI层)
1.子模块web-ui层需要讲一下,因为我们这一层是视图层,所以我们需要选择maven骨架。
2.然后点击next,输入模块名之后finish就可以了,在这里我们需要选择自己本地的中央仓库。自此我们的多模块项目已经搭建好了
3.完整的项目结构如下:
4.在这里我们发现视图层多了webapp这个文件夹,以后的开发过程中我们的视图都是放在WEB_INF目录下的
common模块:通用模块,不依赖其它任何模块,主要有utils、可以在多个不同项目中使用
entitie模块:POJO、VO、DTO
dao模块:数据持久化,访问数据库,这里使用Mybatis
service模块:业务模块,处理业务逻辑
webui模块:B/S结构的表示层,主要用于在浏览器中显示数据,提供用户接口
模块依赖
(1)父模块依赖
1.接下来我们去父模块的pom.xml文件进行统一的模块管理,为了方便管理版本和后续添加依赖不那么繁琐,我们在父模块pom.xml文件中只对依赖进行统一管理起来,而不进行依赖,当我们需要哪一个依赖的时候,我们只需要引入即可。
父模块pom.xml文件
(2)子模块Comon层模块依赖
common模块中的pom.xml文件
(3)子模块Dao层模块依赖
Dao模块中的pom.xml文件,这一层中我们需要依赖common层和实体层,因为在这一层中我们涉及到和数据库打交道,一张表就对应一个POJO
(4)子模块Service层模块依赖
Service模块中的pom.xml文件,这一层中我们需要依赖dao层
(5)子模块Entity层模块依赖
实体层暂时不需要依赖任何的模块,Entity模块中的pom.xml文件
(6)子模块WEB-UI层模块依赖
Service模块中的pom.xml文件,这一层中我们需要依赖service层
(7)最终的依赖效果
这里只展示了common层中的依赖,剩下的依赖也一样
连接数据库
1.这是navicat的操作界面,前面的一些连接配置我在这里就不进行过多的描述了。
2.右键localhost_3306选择新建数据库,输入数据的名称,字符集我们选择倒数第二个,也就是utf-8的然后确定就可了
3.数据库脚本
文件配置
文件配置是一项非常繁琐的工作内容,稍有不慎整个项目就废了,所以需要非常的细心才有可能将这一整个项目搭建成功,否则将会一夜之间回到解放前。所以我所操作的每一个不大家都需要谨慎再谨慎。
1.首先我们先移除父模块的src目录,其实移不移除都无所谓,在这里我主要是为了影响干扰,移除之后目录如下
2.我们需要在每一个子模块添加对应的包名和配置文件
子模块common层
R.java
子模块dao层
BookMapper.xml
applicationContext.xml
db.properties
##mysql连接字符串 #驱动 mysql.driver=com.mysql.jdbc.Driver #连接字符串 mysql.url=jdbc:mysql://localhost:3306/booksystem?useUnicode=true&characterEncoding=UTF-8 #用户名 mysql.uid=root #密码 mysql.password=123456 mysql.acquireIncrement=5 mysql.initialPoolSize=10 mysql.minPoolSize=5 mysql.maxPoolSize=20
mybatis.xml
BookDao,java
package com.booksystem.dao; import com.booksystem.entity.Book; import java.util.List; public interface BookDao { //查询全部图书信息 public List<Book> getAllBooks(); }
子模块entity层
Book.java
写了怎么多的东西,我们需要测试一下,减少错误,现在我们只是在做练习,代码量比较少但是到了真正项目的时候代码量肯定比现在多许多,为了养成这种习惯,我一般写到Dao层的时候就进行测试一下。
BookTest.java
我们看到测试结果已经出来了,如果这一步你成功了的话那么你已经完成了80%了,下一步的话我们就配置service层
子模块service层
BookService
package com.booksystem.service; import com.booksystem.entity.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; public interface BookService { //查询全部图书信息 public List<Book> getAllBooks(); }
BookImple
package com.booksystem.imple; import com.booksystem.dao.BookDao; import com.booksystem.entity.Book; import com.booksystem.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class BookImple implements BookService { @Autowired public BookDao bookDao; public List<Book> getAllBooks() { return bookDao.getAllBooks(); } }
子模块webui层
我们发现在这一层中没有存放源代码的文件加,所以我们需要自己添加,选择file,project structure
生成之后的目录
BookController.java
package com.book.controller; import com.booksystem.common.R; import com.booksystem.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/book") public class BookController { @Autowired public BookService bookService; @GetMapping("/getAllBook") @ResponseBody public R getAllBook(){ return R.ok(bookService.getAllBooks()); } }
springmvc-servlet.xml
web.xml
3.配置tomcat
4.项目部署
在这里我们就将项目进行热部署就可以了,我们在开发阶段就暂时不进行打包,以后我们有服务器的时候就可以打包成war或者jar包
5.启动项目
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图书管理系统</title> <style> h1{ text-align: center; } #myTab{ width: 800px; margin: 0 auto; } </style> </head> <body> <h1>图书管理系统</h1> <table id="myTab" cellpadding="0" cellspacing="0" border="1"> <tr> <td>编号</td> <td>名称</td> <td>作者</td> </tr> </table> <script src="js/jquery-1.11.3.min.js"></script> <script> $.ajax({ url:'/book/getAllBook', type:'get', dataType:'json', }).done(function (data) { if(data.code===1){ $("#myTab tr:not(:eq(0))").remove(); for (var i=0;i<data.data.length;i++){ var tr="<tr>"; tr+="<td>"+(i+1)+"</td>"; tr+="<td>"+data.data[i].bname+"</td>"; tr+="<td>"+data.data[i].bauthor+"</td>"; tr+="</tr>" $("#myTab").append(tr); } } }) </script> </body> </html>
浅谈IDEA搭建SSM框架的集成的更多相关文章
- 浅谈一下SSI+Oracle框架的整合搭建
浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...
- Maven项目搭建(二):Maven搭建SSM框架
上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- 快速搭建ssm框架
快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我 ...
- Eclipse中使用Maven搭建SSM框架
Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...
- 第n次搭建 SSM 框架
什么说第 N 次搭建SSM框架呢? 刚学习java的时候,搭建 SSM 框架想做一个个人项目之类的,后来没搭起来,也就拖延了,进入公司之后,接触的第一个项目就是SSM的,模仿了一下,也能搭个简简单单的 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
随机推荐
- git简介 http://msysgit.github.io/
集中式vs分布式 Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央服务 ...
- NOI 2011 兔农 题解
事先声明,本博客代码主要模仿accepoc,且仅针对一般如本博主一样的蒟蒻. 这道题不得不说数据良心,给了75分的水分,但剩下25分真心很难得到,因此我们就来讲一讲这剩下的25分. 首先,有数据可知他 ...
- 树链剖分 [JLOI2014]松鼠的新家
[JLOI2014]松鼠的新家 时间限制: 1 Sec 内存限制: 128 MB 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达, ...
- J2EE:Servlet上传文件到服务器,并相应显示
Servlet 可以与HTML一起使用来允许用户上传文件到服务器 编辑上传文件的页面upload.html 注意事项:上传方式使用POST不能使用GET(GET不能上传文件) 表单 enctype 属 ...
- BI之路学习笔记2--SSIS/ETL设计练习三:《DB->定期生成excel表》
上次笔记记到,用sql任务给参数赋值,映射到变量,然后把数据流任务放到序列容器中进行执行,可以定期生成excel, 现在的问题是: 在EXCEL目标编辑过程中,必须选定某一个特定的excel目标,这样 ...
- 将 unsiged char 转换成对应的十六进制字符用以显示出来如 unsiged char a[]={0x00,0x01,0x30,0x38}转化为“00013038”
int CEnCryptionAndDeCryptionDlg::Byte2Hex(const unsigned char* input,unsigned long inLen, unsigned c ...
- 【CYH-02】NOIp考砸后虐题赛:函数:题解
这道题貌似只有@AKEE 大佬A掉,恭喜! 还有因为c++中支持两个参数数量不同的相同名称的函数调用,所以当时就没改成两个函数,这里表示抱歉. 这道题可直接用指针+hash一下,然后就模拟即可. 代码 ...
- maven打包添加依赖
<plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <versio ...
- 必懂的wenpack优化
webpack优化 1.production 模式打包自带优化 tree shaking tree shaking是一个术语.通常用于打包时移除js中未引用的代码(dead-code),它依赖于ES6 ...
- 关于STM32F103+ESP8266+阿里云过程之环境搭建和阿里云数据格式设置及注意点(一)
计划实现功能:将STM32F103采集到的温湿度,PM2.5等数值,通过UART与ESP8266通讯,使得ESP8266对外仅充当串口功能的黑盒.ESP8266通过MTQQ发布订阅数据,设备上传.接收 ...