02.maven分模块构建ssm

maven分模块构建ssm项目

开发工具使用idea;由于内容有点多,很多地方就不用图文解释了;相信读者能选择看此篇文章,idea构建maven普通工程等知识肯定已经烂熟于胸了。

一、数据库环境准备

这里以MySQL数据库为例;

-- 准备数据库环境
CREATE DATABASE maven;
USE maven;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items` (
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) DEFAULT NULL,
  `price` FLOAT(10,0) DEFAULT NULL,
  `pic` VARCHAR(40) DEFAULT NULL,
  `createtime` DATETIME DEFAULT NULL,
  `detail` VARCHAR(200) DEFAULT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

INSERT INTO `items` VALUES
    ('1', '面壁计划', '1000', NULL, '2018-03-13 09:29:30', '带我走上人生巅峰'),
    ('2', '程心', NULL, NULL, '2018-03-28 10:05:52', '插入测试'),
    ('3', '降维打击', '199', NULL, '2018-03-07 10:08:04', '插入测试'),
    ('7', '黑暗森林', NULL, NULL, NULL, NULL),
    ('8', '三体', NULL, NULL, NULL, NULL);
----------------------------------

二、创建父工程

1). 使用骨架创建maven工程/模块

  1. 骨架名: org.apache.maven.archetypes:maven-archetype-site
  2. GroupId: com.itheima 公司域名
  3. Artifactid: B_maven_ssm_parent 父工程项目名
  4. 注意maven的配置,使用本地仓库的配置 (建议配置阿里云镜像)
  5. 注意父工程的pom.xml中的打包方式为 pom
  6. 父工程只需要一个pom.xml文件,可以将其他文件夹删除掉 (千万别删 .imi 文件,这个是idea工具的配置文件,删了此工程就白建了)

2). 父工程项目结构


父工程结构.png

3). 配置jar包坐标,锁定依赖,指定jdk编译版本以及tomcat7插件版本

1.【注意】

  1. 实际生产时可以将下面的配置方式直接拷贝使用。
  2. 如果项目中需要使用到新技术需要导入新的坐标,一定要查看该 maven工程依赖关系图 看是否有jar包冲突,如果有要及时解决掉,否则项目可能会出现问题!

2. 方式①: 【推荐】



    4.0.0

    
    com.itheima
    B_maven_ssm_parent
    pom
    1.0-SNAPSHOT
    
        ssm_dao
        ssm_service
        ssm_web
    
    

    
    
        5.0.2.RELEASE
        1.6.6
        1.2.12
        1.2.3
        5.1.6
        3.4.5
        5.0.1.RELEASE
    

    
    
        
            
                org.springframework
                spring-jdbc
                ${spring.version}
            
            
                org.springframework
                spring-context
                ${spring.version}
            
            
                org.springframework
                spring-web
                ${spring.version}
            
            
                org.springframework
                spring-webmvc
                ${spring.version}
            
            
                org.springframework
                spring-tx
                ${spring.version}
            
            
                org.springframework
                spring-test
                ${spring.version}
            
            
                org.mybatis
                mybatis
                ${mybatis.version}
            
        
    

    
    
        
        
            org.springframework
            spring-jdbc
        
        
            org.aspectj
            aspectjweaver
            1.6.8
        
        
            org.springframework
            spring-aop
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-context-support
            ${spring.version}
        
        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-orm
            ${spring.version}
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
            junit
            junit
            4.12
            test
        
        
            mysql
            mysql-connector-java
            ${mysql.version}
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
            javax.servlet.jsp
            jsp-api
            2.0
            provided
        
        
            jstl
            jstl
            1.2
        
        
        
            log4j
            log4j
            ${log4j.version}
        
        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        
        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        
        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
            org.mybatis
            mybatis-spring
            1.3.0
        
        
            c3p0
            c3p0
            0.9.1.2
            jar
            compile
        
        
            com.github.pagehelper
            pagehelper
            5.1.2
        
        
            org.springframework.security
            spring-security-web
            ${spring.security.version}
        
        
            org.springframework.security
            spring-security-config
            ${spring.security.version}
        
        
            org.springframework.security
            spring-security-core
            ${spring.security.version}
        
        
            org.springframework.security
            spring-security-taglibs
            ${spring.security.version}
        
        
            com.alibaba
            druid
            1.0.9
        
    
    
    
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.7.0
                
                    1.8
                    1.8
                
            
        
    


3. 方式②: (参考) 值提供依赖


    5.0.2.RELEASE
    5.0.2.RELEASE
    3.4.5





    org.mybatis
    mybatis
    ${mybatis.version}



    org.springframework
    spring-webmvc
    ${springmvc.version}


    org.springframework
    spring-context
    ${spring.version}



org.springframework
spring-core
${spring.version}


    org.springframework
    spring-aop
    ${spring.version}


    org.springframework
    spring-web
    ${spring.version}


    org.springframework
    spring-expression
    ${spring.version}


    org.springframework
    spring-beans
    ${spring.version}


    org.springframework
    spring-aspects
    ${spring.version}


    org.springframework
    spring-context-support
    ${spring.version}


    org.springframework
    spring-test
    ${spring.version}


    org.springframework
    spring-jdbc
    ${spring.version}


    org.springframework
    spring-tx
    ${spring.version}






    org.mybatis
    mybatis


    org.mybatis
    mybatis-spring
    1.3.1



    mysql
    mysql-connector-java
    5.1.32



    com.alibaba
    druid
    1.0.9



    org.springframework
    spring-webmvc
    ${springmvc.version}



    org.springframework
    spring-context


    org.springframework
    spring-core


    org.springframework
    spring-aop


org.springframework
    spring-web


    org.springframework
    spring-expression


    org.springframework
    spring-beans


    org.springframework
    spring-aspects


    org.springframework
    spring-context-support


    org.springframework
    spring-test


    org.springframework
    spring-jdbc


    org.springframework
    spring-tx



    org.springframework
    spring-jdbc


    org.springframework
    spring-tx



    junit
    junit
    4.12
    test

    
        javax.servlet
        servlet-api
        2.5
        provided
    
    
        javax.servlet
        jsp-api
        2.0
        provided
    
    
    
        javax.servlet
        jstl
        1.2
    


    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.1
            
                1.8
                1.8
            
        
        
            org.apache.tomcat.maven
            tomcat7-maven-plugin
            2.2
        
    

4). 发布

父工程创建完成执 install 命令将父工程发布到仓库方便子工程继承:


install.png

三、创建ssm_dao层模块

1). 不使用骨架创建ssm_dao层模块

  1. 在idea左侧项目结构父工程上右击创建maven模块
  2. 跳过骨架选择,直接next
  3. 默认继承父工程,别修改,填写模块名即可 ssm_dao next
  4. 注意目录结构,ssm_dao要在B_maven_ssm_parent下 finish

2). 项目结构


ssm_dao.png

3). 代码以及配置文件

1. 配置文件

  1. 配置ssm_dao的pom.xml

注意,打包方式为jar包

ssm_dao
jar


    
        junit
        junit
        4.12
        test
    

  1. spring整合MyBatis的配置模块文件springContext-dao.xml



    
    
    
        
        
        
        
    

     
    
        
        

        
        
    

    
    
   
    
    
        
    
    

1. 代码文件

  1. dao接口 ItemsDao
package com.itheima.dao;
import com.itheima.domain.Items;
public interface ItemsDao {

    Items findById(Integer id);
}
  1. pojo Items: get/set/toString方法请自动补齐
public class Items implements Serializable {

    private Integer id;
    private String name;
    private Double price;
    private String pic;
    private Date createtime;
    private String detail;

    ...
  1. dao接口代理配置文件 ItemsDao.xml



    

  1. 单元测试文件
@Test
public void testDao() {
    // 获取 spring 容器
    ApplicationContext ac = new ClassPathXmlApplicationContext(
            "classpath:spring/applicationContext-dao.xml");
    // 获取dao
    ItemsDao bean = ac.getBean(ItemsDao.class);
    // 调用方法测试
    System.out.println(bean.findById(1));
}

4). 将ss_dao install到本地仓库

四、创建ssm_service层模块

1). 不使用骨架的方式创建ssm_service层模块

  1. 在idea左侧项目结构父工程上右击创建maven模块
  2. 跳过骨架选择,直接next
  3. 默认继承父工程,别修改,填写模块名即可 ssm_service next
  4. 注意目录结构,ssm_service要在B_maven_ssm_parent下 finish

2). 项目结构


ssm_service.png

3). 代码以及配置文件

1.配置文件

  1. pom.xml配置文件:

注意,打包方式为 jar; ssm_service层依赖ssm_dao;需要导入坐标(之前已经install到本地仓库了)

ssm_service
jar

    
        com.itheima
        ssm_dao
        1.0-SNAPSHOT
    
    
        junit
        junit
        4.12
        test
    

  1. spring配置文件分支 applicationContext-service.xml



    
    
    

    
    
    
        
     

    
    
        
            
            
            
            
            
            
            
        
    

    
    
        
        
    
    

    
    
    

2.代码文件

  1. service接口 ItemsService
package com.itheima.service;
import com.itheima.domain.Items;
public interface ItemsService {
    public Items findById(Integer id);
}
  1. service层实现类
package com.itheima.service.impl;
import com.itheima.dao.ItemsDao;
import com.itheima.domain.Items;
import com.itheima.service.ItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ItemsServiceImpl implements ItemsService {

    @Autowired
    private ItemsDao itemsDao;

    @Override
    public Items findById(Integer id) {
        return itemsDao.findById(id);
    }
}
  1. junit测试: 注意上一步中的注释说明!
@Test
public void testService() {
    ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
            "classpath:spring/applicationContext-service.xml");
    ItemsService bean = ac.getBean(ItemsService.class);
    System.out.println(bean.findById(2));
}

4). 将ss_service install 到本地仓库

五、创建ssm_web层模块

1). 选择骨架创建项目

也可以使用非骨架方式创建

  1. 骨架名: org.apache.maven.archetypes:maven-archetype-webapp
  2. 填写工程名:ssm_web
  3. 创建src/main/java Make Directory as Sources Root
  4. 创建src/main/resources Make Directory as Resources Root

2). 项目结构


ssm_web.png

3). 代码以及配置文件

1. 配置文件

  1. pom.xml: 注意,web层打包方式为 war
ssm_web
war

ssm_web Maven Webapp

http://www.example.com

    
        com.itheima
        ssm_service
        1.0-SNAPSHOT
    

  1. web.xml配置文件



  
  
    encoding
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
  
  
    encoding
    /*
  

  
  
    org.springframework.web.context.ContextLoaderListener
  
  
  
    contextConfigLocation
    classpath:applicationContext.xml
  

  
  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath:springmvc.xml
    
    1
  
  
    springmvc
    /
  


  1. spring综合文件applicationContext.xml




    
    

  1. SpringMVC配置文件springmvc.xml



    
    

    
    

    
    
        
        
    

    
    


  1. log4j.properties日志配置文件
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

2. 代码文件

  1. 控制器代码 ItemsController
package com.itheima.controller;

import com.itheima.domain.Items;
import com.itheima.service.ItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/items")
public class ItemsController {

    @Autowired
    private ItemsService itemsService;

    @RequestMapping("/findDetail/{id}")
    public String findDetail(Model model, @PathVariable Integer id) {
        Items item = itemsService.findById(id);
        model.addAttribute("item", item);
        return "itemDetail";
    }

}
  1. 首页测试代码index.jsp 核心
访问测试
  1. 回馈页面 item.Detail.jsp 核心
商品名称 ${item.name }
商品价格 ${item.price }
生成日期
商品简介 ${item.detail}

你可能感兴趣的:(02.maven分模块构建ssm)