利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)


前言

  此种方式已过时,不再推荐,当下推荐方式:

  本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读《Maven 实战》。其实园内这方面文章已有不少,那么为什么我还要重复造轮子呢?我只是想记录自己的实践过程罢了,附带着给别人以参考。对于别人的博文,看了固然好,要是能付之实践,那就更好了!

  一直在对整个工程做一些配置上的优化,具体代码可以从我的github下载

  基于目前spring-boot的火热,工程慢慢往springboot上转,码云地址:https://gitee.com/youzhibing/spring-boot-2.0.3

maven搭建

  安装过程挺简单的,去apache下载apache-maven的zip包,解压到一个目录下,如下图

  接下来配置windows环境,右击我的电脑--》属性--》高级系统设置--》环境变量--》系统变量--》新建,如下图

  就是你解压的maven的home目录;接着编辑系统变量的Path,如图

  其实跟配置java环境是一样的,最后几个连续确定之后就好了,这几个确定一定要点,不然配置不会保存,更不会生效! home路径一定要写自己的,别搬我的呀!路径最好是拷贝,手动输入太容易出错了。

  接下来验证环境是否配置成功,打开命令行,输入mvn -v 如果出现下图的信息,那么恭喜你,配置成功了!当然,信息可能有些许出入,如版本不同等,这些不用在意。

Eclipse(java ee版)集成maven

  一般而言,新的eclipse都已经集成了maven,如果没有那么就安装,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven到插件Maven Integration for Eclipse 并点击安装即可,接下来将eclipse集成的maven换成我们自己的,而不用eclipse自带的,重新定位,点击Window -> Preference -> Maven -> Installation -> Add进行设置,如下图

  设置完成,那么eclipse配置maven就完成了,myeclipse配置和这个是一样的。

创建ssm项目

  选择建立Maven Project 选择File -> New -> Other,在New窗口中选择 Maven -> Maven Project;点击next,如下图

  选择项目路径,如下图,然后next

  

  选择项目类型 选择Artifact Id为maven-archetype-webapp那一项,如下图

  输入Group ID和 Artifact ID,以及Package,具体Group ID和 Artifact ID代表什么,可以去阅读《Maven 实战》,Group ID相当于一个组织,而Artifact ID相当于这个组织下的一个具体项目,Packege的话会根据你的Group ID和Artifact ID生成一个默认的名称,就用默认的就可以,如下图

  点finish之后,项目结构如下图

  若目录结构和上面的有差别,那么将perspective改成Java模式就好了。上面的目录结构离标准的maven web结构还有一点差别,少了一个文件夹src/test/resources,我们手动创建下,右键项目根目录点击New -> Source Folder,建出这个文件夹,如下图:

  Finish之后,项目结构图如下所示:

  把项目变成Dynamic Web项目右键项目,properties --》Project Facets,点击Convert to faceted fro,勾上Dynamic Web Module,并将Version为2.3。(3.0为Java7的)。

  设置部署程序集(Web Deployment Assembly)
        上面步骤设置完成后,点击OK,再右键项目,选择properties --》Deployment Assembly,如下图

  此处列表是,部署项目时,文件发布的路径。

        (1)我们删除test的两项,因为test是测试使用,并不需要部署。

        (2)设置将Maven的jar包发布到lib下。

        Add -> JavaBuild Path Entries -> Maven Dependencies -> Finish

        设置完成效果图

构建框架

  在pom.xml中添加所需要的jar包,内容如下图


    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    4.0.0
    com.lee.mvnbook
    maven-ssm-web
    war
    0.0.1-SNAPSHOT
    maven-ssm-web Maven Webapp
    http://maven.apache.org
    
        
        4.0.2.RELEASE
        1.8
        1.8
    
    
        
        
            org.springframework
            spring-core
            ${spring.version}
        

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

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

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

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

        
            org.springframework
            spring-test
            ${spring.version}
        
        
        
            org.mybatis
            mybatis
            3.3.0
        
        
            mysql
            mysql-connector-java
            5.1.38
        
        
        
            com.alibaba
            druid
            1.0.26
        
        
        
            org.mybatis
            mybatis-spring
            1.2.3
        
        
        
            javax.servlet
            jstl
            1.2
        
        
            log4j
            log4j
            1.2.16
        
        
            org.slf4j
            slf4j-api
            1.6.1
        
        
            org.slf4j
            slf4j-nop
            1.6.4
        

        
            junit
            junit
            4.7
            test
        
    
    
        maven-ssm-web
    

  如果依赖不知道怎么写,比如groupId、artifactId、version不知道填什么,那么直接上http://search.maven.org/搜,对应着填写就可以了,如下图

  保存pom.xml,maven就会帮我们下载我们配置的所有jar包了,jar包依赖的jar包也会自动下载,是不是很方便!当然,这个下载可能需要较长的时间,不要急,当eclipse右下角的百分比进度没有了,就下载好了。jar包下载完成后,项目结构图如下

  配置文件

  web.xml

<?xml version="1.0" encoding="UTF-8"?>

  SSM configuration
    
    
        characterEncodingFilter
        class>org.springframework.web.filter.CharacterEncodingFilterclass>
        
            encoding
            UTF-8
        
    
    
        characterEncodingFilter
        /*
    
    
    
    
        contextConfigLocation
        classpath:spring.xml,classpath:mybatis-spring.xml
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
    
        springDispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
    
        springDispatcherServlet
        /
    
    
    
      index.html
      index.jsp
    

  spring.xml

<?xml version="1.0" encoding="UTF-8"?>

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop.xsd
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd">

    
    package="com.huawei.service.impl" />
    
    

  mybatis-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop.xsd
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx.xsd">

    
    class="com.alibaba.druid.pool.DruidDataSource">
          
          
          
          
          
          
           
          
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    class="org.mybatis.spring.SqlSessionFactoryBean">
         
        
        
        
    

    class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        
        
    

    
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        
    
    
    

  spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="  
     http://www.springframework.org/schema/beans   
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
     http://www.springframework.org/schema/context  
     http://www.springframework.org/schema/context/spring-context-3.0.xsd  
     http://www.springframework.org/schema/mvc  
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
     ">

    
    
    
    
    package="com.huawei.controller" />

    
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"
        p:prefix="/" p:suffix=".jsp" />

   mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
DOCTYPE configuration  
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-config.dtd">  
      
  
      
        
           
         
        
          
    
 

  log4j.properties

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

  mysqldb.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.100:3306/mybatis
jdbc.username=root
jdbc.password=root
jdbc.initialSize=1
jdbc.minIdle=1
jdbc.maxActive=20
jdbc.maxWait=60000
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=180
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=300000
jdbc.validationQuery=SELECT 1
jdbc.testWhileIdle=true
jdbc.testOnBorrow=false
jdbc.testOnReturn=false

   项目结构图如下

  java文件与jsp文件

  PersonController.java

package com.huawei.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.huawei.model.Person;
import com.huawei.service.IPersonService;

@Controller
@RequestMapping("/personController")
public class PersonController {
    
    private IPersonService personService;
    
    public IPersonService getPersonService() {
        return personService;
    }

    @Autowired
    public void setPersonService(IPersonService personService) {
        this.personService = personService;
    }

    @RequestMapping("/showPerson")
    public String showPersons(Model model){
        List persons = personService.loadPersons();
        model.addAttribute("persons", persons);
        return "showperson";
    }
}

  PersonMapper.java

package com.huawei.dao;

import java.util.List;

import com.huawei.model.Person;

public interface PersonMapper {
    /**
     * 插入一条记录
     * @param person
     */
    void insert(Person person);
    
    /**
     * 查询所有
     * @return
     */
    List queryAll();
}

  PersonMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
 

      
    

  Person.java

package com.huawei.model;

/**
 * person 实体
 * @author Administrator
 *
 */
public class Person {

    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + "]";
    }
}

  IPersonService.java

package com.huawei.service;

import java.util.List;

import com.huawei.model.Person;

public interface IPersonService {

    /**
     * 加载全部的person
     * @return
     */
    List loadPersons();
}

  PersonServiceImpl.java

package com.huawei.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.huawei.dao.PersonMapper;
import com.huawei.model.Person;
import com.huawei.service.IPersonService;

@Service("personService")
public class PersonServiceImpl implements IPersonService {
    
    private PersonMapper personMapper;

    public PersonMapper getPersonMapper() {
        return personMapper;
    }
    @Autowired
    public void setPersonMapper(PersonMapper personMapper) {
        this.personMapper = personMapper;
    }

    @Override
    public List loadPersons() {
        return personMapper.queryAll();
    }
    
}

  showperson.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>person listtitle>
    head>
    <body>
        <table>
            <tr>
                <th>姓名th>
                <th>年龄th>
            tr>
            <c:forEach items="${persons}" var="person">
                <tr>
                    <td>${person.name }td>
                    <td>${person.age }td>
                tr>
            c:forEach>
        table>
    body>
html>

mysql数据库表

最终效果

  

  那么恭喜你,也恭喜我,搭建ssm成功了!

后话

  用心的小伙伴应该发现了,前面的windows配置maven和我们用eclipse搭建ssm没有一点关系,确实和ssm搭建没有什么卵关系,我写出来是为什么了,就是有时候我们不用IDE工具,而在dos命令下利用maven搭建我们的项目的时候,那么windows配置maven就需用到了!

  搭建过程中如果有什么问题,可以试着在评论区找答案,或者在中找答案