zoukankan      html  css  js  c++  java
  • 浅谈IDEA集成SSM框架(SpringMVC+Spring+MyBatis)

    前言

    学习完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文件

    View Code

    (2)子模块Comon层模块依赖

    common模块中的pom.xml文件

    View Code

    (3)子模块Dao层模块依赖

    Dao模块中的pom.xml文件,这一层中我们需要依赖common层和实体层,因为在这一层中我们涉及到和数据库打交道,一张表就对应一个POJO

    View Code

    (4)子模块Service层模块依赖

    Service模块中的pom.xml文件,这一层中我们需要依赖dao层

    View Code

    (5)子模块Entity层模块依赖

    实体层暂时不需要依赖任何的模块,Entity模块中的pom.xml文件

    View Code

    (6)子模块WEB-UI层模块依赖

     Service模块中的pom.xml文件,这一层中我们需要依赖service层

    View Code

    (7)最终的依赖效果

    这里只展示了common层中的依赖,剩下的依赖也一样

    连接数据库

    1.这是navicat的操作界面,前面的一些连接配置我在这里就不进行过多的描述了。

      

    2.右键localhost_3306选择新建数据库,输入数据的名称,字符集我们选择倒数第二个,也就是utf-8的然后确定就可了

     

    3.数据库脚本

    View Code

    文件配置

    文件配置是一项非常繁琐的工作内容,稍有不慎整个项目就废了,所以需要非常的细心才有可能将这一整个项目搭建成功,否则将会一夜之间回到解放前。所以我所操作的每一个不大家都需要谨慎再谨慎。

    1.首先我们先移除父模块的src目录,其实移不移除都无所谓,在这里我主要是为了影响干扰,移除之后目录如下

      

    2.我们需要在每一个子模块添加对应的包名和配置文件

    子模块common层

    R.java

    View Code

    子模块dao层

    BookMapper.xml

    View Code

    applicationContext.xml

    View Code

    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

    View Code

    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

    View Code

    写了怎么多的东西,我们需要测试一下,减少错误,现在我们只是在做练习,代码量比较少但是到了真正项目的时候代码量肯定比现在多许多,为了养成这种习惯,我一般写到Dao层的时候就进行测试一下。

    BookTest.java

    View Code

    我们看到测试结果已经出来了,如果这一步你成功了的话那么你已经完成了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

    View Code

    web.xml

    View Code

    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{
                 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>
    复制代码

     

  • 相关阅读:
    错误 6 未能找到类型或命名空间名称“BLL”(是否缺少 using 指令或程序集引用?)
    linq 两个字段排序
    设置checkbox只读
    乐蜂网SALES倒计时原码展示
    Value cannot be null. Parameter name: source
    浅谈windows.onload()与$(document).ready()
    MVC之ViewData.Model
    td标签里内容不换行
    input type="image" 提交表单
    扩展Puppet – 建立Puppet CA集群
  • 原文地址:https://www.cnblogs.com/smallfa/p/11604049.html
Copyright © 2011-2022 走看看