IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程

2018.06

本文适合SSM新手玩家,同样作为作者SSM搭建过程的中文记录。

1. Maven安装及配置 —— 多模块工程依赖管理解决方案

Maven官方文档

Maven依赖搜索

i.安装

这里仅给出macOS系统的安装方式:

homebrew —— 一条命令完成下载安装以及环境变量的配置

brew install maven

将 /usr/local/Cellar/maven/3.5.3/libexec/conf/setting.xml 文件拷贝至Users/你的用户名/.m2目录

(该文件配置将优先于前者)

推荐一些源(在.m2/setting.xml文件里面配置)


      UK
      central
      UK Central
      http://uk.maven.org/maven2
    

    
    
        repo1
        central
        Human Readable Name for this Mirror.
        http://repo1.maven.org/maven2/
    

    
    
        repo2
        central
        Human Readable Name for this Mirror.
        http://repo2.maven.org/maven2/
    

    
    
      alimaven
      central
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
    

    
    
      nexus-osc
      *
      Nexus osc
      http://maven.oschina.net/content/groups/public/
  

国内的源,阿里、163、网易等,速度较快,但部分不常用jar包可能没有。

ii . 选择maven的webapp模版

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第1张图片

 

iii. GroupId和ArtifactId的配置 。

GroupId和ArtifactId“坐标”,保证项目唯一性,在maven本地仓库,根据这两个id去查找。

GroupID对应项目组织唯一的标识符, main目录里java的目录结构, 第一段为域,第二段为公司名称,第三段为项目名, 常见的域org为非营利组织,com为商业组织. cn为中国。

ArtifactID对应Maven项目(模块)的唯一的标识符, 项目根目录的名, 如果是模块用项目名作为前缀比较好。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第2张图片

 

iv. 选择maven路径及配置。

该行指定下载archetype元数据,目的是加快Maven项目创建时的数据下载速度,根据实际情况添加,我的网络环境测试结果为无差别。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第3张图片

 

v. Finish ->等待下载生成src目录。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第4张图片

 

vi. 手动创建目录结构如下, 配置文件显红,IDEA强大的自动纠错功能大概可以帮你解决。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第5张图片

 

v. pom.xml概览

该配置文件主要分为三个区域:

属性区

依赖区

插件区

按照固定的格式,向项目添加对应的依赖(jar)和插件,属性是针对于Maven的。

了解它们的作用,用时再添加。

2. mysql-connector-java(jdbc连接mysql驱动)

官网地址

根据自己mysql版本选择合适的Connector/J 

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第6张图片

目前最新版为5.1.46

加入依赖如下:



  mysql
  mysql-connector-java
  5.1.46

在 main/resources目录下创建 .properties文件, 我的命名为jdbc.properties,基本配置代码如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/1806_mall?autoReconnect=true&useSSL=false
jdbc.username=root
jdbc.password=

3. 安装MybatisIntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第7张图片   —— 持久层框架

i. 下载

Mybatis下载地址

Mybatis官方文档

下载release(发布)版本,同时可以下载Source code(源码)其中包含一些示范代码。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第8张图片

 

ii. 将mybatis-3.4.5.jar放至lib文件夹中,右键->点击Add as Library

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第9张图片

确定即可

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第10张图片

 

iii. 推荐maven安装的方式

前面简单的体验一下一般的安装方式,这里推荐maven安装,在pow.xml中加入如下依赖配置即可maven会帮助你,一步到位。


  org.mybatis
  mybatis
  3.4.6

如未自动下载可点击右下角图标,弹出窗口点击import Changes,也可选择自动引入。

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第11张图片

 

iv. 感受一波mybatis的应用

若有实战需求可参考以下视频,重在感受mybatis的使用

通过自动回复机器人学Mybatis---基础版

a. 创建mybatis配置文件

在src/main/resources/mybatis中创建SqlMapConfig.xml文件。





  
  
    
    
      
      
      
        
        
        
        
      
    
  

该配置并非必要的,SSM项目中连接数据库的文件并不是它。

3. Mybatis-generator —— “逆向工程”根据数据库表自动生成Java代码

官方文档

中文文档

这里我选择使用Maven通过插件运行Mybatis-generator的方式

i. 在maven配置文件插件部分加入如下代码:



    org.mybatis.generator
    mybatis-generator-maven-plugin
    ${mybatis-generator.version}
  
    
      
        Generate MyBatis Artifacts
        
          generate
        
      
    

ii. 创建 main/resources/generatorConfig.xml 文件

这个应该是会自动扫描的,可放在resources目录下任意处





  
  
  
  

  
  

    
      
      
    

    
    

    
    
      
    

    
    
      
      
      
      
    

    
    
      
    

    
    
      
    

    
    

iii. 在终端项目路径下执行:mvn mybatis-generator:generate

mapper.xml累加,其他会覆盖。

遇到问题如下: [WARNING] The specified target project directory .\src\main\java does not exist

解决方法:先用绝对路径运行,再改回相对路径(这个坑有点奇怪额。。。)

iv. 总结

逆向工程大大提升了我们编写程序的效率,自动生成的文件可以基本满足前期的开发需求。

如果将前面的这段代码:

改为:

mapper文件夹将在target目录里面生成。

 

4. Spring整合mybatis

mybatis-spring官方文档

mybatis-spring中文文档

druid数据库连接池下载地址

i. 导入jar包


    org.mybatis
    mybatis-spring
    1.3.2


  
    com.alibaba
    druid
    ${druid.version}

ii. 创建配置文件,applicationContext.xml




  
  
  
  
  
    
    
    
    
    

    
    
    
    

    
    

    
    

    
    

    
    
    
    

    
    
    

    
    
  

  
  
    
    
    
    
    
    
  

  
  
    
    
    
    
  

  

iii. Spring特性

相对于单纯的使用mybatis,这里实现了动态实现Dao接口注入到spring容器。

5. SpringMVC配置

i. 导入jar包

    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-beans
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    

ii. 配置web.xml

  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:spring-*.xml
    
    1
    true
  
  
    SpringMVC
    
    /
  

iii. 资源文件目录下子目录spring中创建springmvc-servlet.xml,配置如下



  

  

  

  

  
  
  
  

IV. 创建控制器文件,TestController.java

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第12张图片

package cn.yang.ssm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @program: ssm
 * @description: 静态页面测试控制
 * @author: yangxinyu
 * @create: 2018-07-17 11:33
 **/
@Controller
@RequestMapping("/admin")
public class TestController {

    @RequestMapping("/login")
    public String test(){
        return "login";
    }
}

V. 前端代码布置   SSM中的View层

a. 目录介绍

WEB-INF是客户端无法访问,只有服务端可以访问的目录。

webapp是根目录,若index.jsp放在该目录下,通过http://127.0.0.1:8080/index.jsp可以访问。

验证WEB-INF为安全目录的方法:

http://127.0.0.1:8080/WEB-INF/views/admin/login/login.jsp 浏览器显示404

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第13张图片

b. jsp样式引用

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第14张图片

AdminlLTE后台模版使用MIT协议

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第15张图片


c. servlet映射

  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:spring/springmvc-*.xml
    
    1
  
  
    SpringMVC
    
    /
  

d. 创建springmvc-servlet.xml在资源目录的spring文件夹下



  
  
  
  
  
  
  
  
    
    
    
    
  

VI. Tomctat配置

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第16张图片

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第17张图片

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第18张图片

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第19张图片

VI. 运行程序

http://localhost:8080/admin/login

6.单元测试

i. 引入jar包

  
    
    
      junit
      junit
      4.11
      test
    
    
      javax.servlet
      javax.servlet-api
      3.0.1
      test
    

ii. 与main目录同级建立test文件夹

在需要建立单元测试的类中点击快捷键command+shift+t(command很多情况下相当于windows系统的ctrl键)

iii. 点击创建,选中member

IntelliJ IDEA 创建 Maven 管理下的 SSM 项目基础全过程_第20张图片

iv. 编写测试类

- 对pojo进行测试

package cn.yang.ssm.controller;

import org.junit.Test;
import static org.junit.Assert.*;

public class LoginControllerTest {

    @Test
    public void test1() throws Exception{
        LoginController controller = new LoginController();
        assertEquals("/admin/login/login",controller.test());
    }
}

- SpringMVC特性测试

package cn.yang.ssm.controller;

import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

public class LoginControllerTest {
    @Test
    public void test1() throws Exception {
        LoginController controller = new LoginController();
        MockMvc mockMvc =
                standaloneSetup(controller).build();
        mockMvc.perform(get("/admin/login"))
                .andExpect(view().name("/admin/login/login"));
    }
}

踩坑点:Java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig

原因:未添加javax.servlet依赖

-- NORMAL --

你可能感兴趣的:(Web,SSM,maven,IntelliJ,IDEA)