Spring + SpringMvc + Mybatis 搭建SSM框架

在闲暇之余,又开始玩玩javaEE的东西,不然都要忘记了。初步打算做一个开源的CMS,今天先搭建起框架,提交github后续完善,需要的可以看看,fork下,顺便给个star吧。

什么是SSM?

SSM对应 spring springmvc mybatis
springmvc 采用MVC模式,主要是作用于用户交互
spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合
mybatis 是对象持久化框架,其实就是实体类和数据库表建立关系,通过mapper.xml文件写sql语句,完成数据库编程
SSM就是Spring + SpringMvc + Mybatis 3个Java框架的集合,现在Java开发中常用的框架组合。用来开发后台,与前台和数据库进行数据交互.

环境准备

jdk1.8 :java运行环境

mysql: 数据库

IDE: 代码编辑工具

MAVEN: 项目管理工具

开始搭建

新建maven项目

2种方式:IDE和mvn ,具体自己弄。
以下是结构截图,src和pom.xml必须
Spring + SpringMvc + Mybatis 搭建SSM框架_第1张图片

添加依赖

下面是常用的javaEE开发包的版本

<properties>
    
    <maven.compiler.source>1.8maven.compiler.source>
    <maven.compiler.target>1.8maven.compiler.target>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    <project.build.locales>zh_CNproject.build.locales>
    <project.build.jdk>1.8project.build.jdk>
    <plugin.maven-compiler>3.1plugin.maven-compiler>

    
    <junit.version>4.11junit.version>
    <servlet.version>3.0.1servlet.version>
    <spring.version>4.1.6.RELEASEspring.version>
    <spring-data.version>1.2.0.RELEASEspring-data.version>
    <mybatis-plus.version>2.0.1mybatis-plus.version>
    <mybatis.version>3.4.1mybatis.version>
    <mybatis-spring.version>1.3.0mybatis-spring.version>
    <hibernate.version>5.1.38hibernate.version>
    <shiro.version>1.2.3shiro.version>
    <mysql.connector.version>5.1.38mysql.connector.version>
    <postgresql.version>9.1-901.jdbc4postgresql.version>
    <slf4j.version>1.7.12slf4j.version>
    <log4j.version>1.2.12log4j.version>
    <httpclient.version>4.1.2httpclient.version>
    <jackson.version>2.3.3jackson.version>
    <druid.version>1.0.26druid.version>
    <aspectjweaver.version>1.8.8aspectjweaver.version>
    <jstl.version>1.2jstl.version>
    <standard.version>1.1.2standard.version>
    <google.collections.version>1.0google.collections.version>
    <commons.fileupload.version>1.3.1commons.fileupload.version>
  properties>
  <dependencies>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>${junit.version}version>
      <scope>testscope>
    dependency>
    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-coreartifactId>
      <version>4.3.1.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-oxmartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-txartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-jdbcartifactId>
      <version>${spring.version}version>
    dependency>

    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-ormartifactId>
      <version>4.3.1.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webmvcartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-aopartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-context-supportartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-testartifactId>
      <version>${spring.version}version>
      <scope>testscope>
    dependency>
    

    
   
    
    <dependency>
      <groupId>com.baomidougroupId>
      <artifactId>mybatis-plusartifactId>
      <version>${mybatis-plus.version}version>
    dependency>
    
    
    <dependency>
      <groupId>org.aspectjgroupId>
      <artifactId>aspectjweaverartifactId>
      <version> ${aspectjweaver.version}version>
    dependency>
    
    <dependency>
      <groupId>com.alibabagroupId>
      <artifactId>druidartifactId>
      <version>${druid.version}version>
    dependency>

    
    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>${mysql.connector.version}version>
    dependency>

    
    <dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-coreartifactId>
      <version>${shiro.version}version>
    dependency>
    <dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-ehcacheartifactId>
      <version>${shiro.version}version>
    dependency>
    <dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-webartifactId>
      <version>${shiro.version}version>
    dependency>
    <dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-quartzartifactId>
      <version>${shiro.version}version>
    dependency>
    <dependency>
      <groupId>org.apache.shirogroupId>
      <artifactId>shiro-springartifactId>
      <version>${shiro.version}version>
    dependency>

    
    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-coreartifactId>
      <version>${jackson.version}version>
    dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-annotationsartifactId>
      <version>${jackson.version}version>
    dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-databindartifactId>
      <version>${jackson.version}version>
    dependency>
    
    <dependency>
      <groupId>com.alibabagroupId>
      <artifactId>fastjsonartifactId>
      <version>1.2.6version>
    dependency>

    
    <dependency>
      <groupId>net.sf.json-libgroupId>
      <artifactId>json-libartifactId>
      <version>2.4version>
      <classifier>jdk15classifier>
    dependency>

    
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>${servlet.version}version>
      <scope>providedscope>
    dependency>
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>jsp-apiartifactId>
      <version>2.0version>
      <scope>providedscope>
    dependency>

    

    
    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>jstlartifactId>
      <version>${jstl.version}version>
    dependency>

    <dependency>
      <groupId>taglibsgroupId>
      <artifactId>standardartifactId>
      <version>${standard.version}version>
    dependency>

    
    <dependency>
      <groupId>commons-codecgroupId>
      <artifactId>commons-codecartifactId>
      <version>1.10version>
    dependency>

    <dependency>
      <groupId>commons-langgroupId>
      <artifactId>commons-langartifactId>
      <version>2.5version>
    dependency>

    <dependency>
      <groupId>commons-beanutilsgroupId>
      <artifactId>commons-beanutilsartifactId>
      <version>1.8.0version>
    dependency>

    <dependency>
      <groupId>commons-collectionsgroupId>
      <artifactId>commons-collectionsartifactId>
      <version>3.2.1version>
    dependency>

    <dependency>
      <groupId>commons-fileuploadgroupId>
      <artifactId>commons-fileuploadartifactId>
      <version>1.3version>
    dependency>

    <dependency>
      <groupId>commons-logginggroupId>
      <artifactId>commons-loggingartifactId>
      <version>1.1.1version>
    dependency>

    <dependency>
      <groupId>net.sf.ezmorphgroupId>
      <artifactId>ezmorphartifactId>
      <version>1.0.6version>
    dependency>

    
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-apiartifactId>
      <version>${slf4j.version}version>
    dependency>
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-log4j12artifactId>
      <version>${slf4j.version}version>
    dependency>
    

  dependencies>

搭建springMvc

打开webapp/WEB-INF/web.xml文件,添加请求映射器,添加如下:

  
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    
    <servlet>
        <servlet-name>SpringMVCservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <description>SpringMVCdescription>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring-mvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>SpringMVCservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>

我们可以看到上面的代码中有classpath:spring-mvc.xml代码,所以在resources目录下添加spring-mvc.xml文件。然后打开编辑:


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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-4.0.xsd
        http://www.springframework.org/schema/mvc   http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd ">

    <description>spring mvcdescription>
    <context:component-scan base-package="cn.yjxxclub.shijie" use-default-filters="false">
       
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    context:component-scan>

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven/>
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/page/">property>
        <property name="suffix" value=".jsp">property>
    bean>

    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="10000000"/>
    bean>
    
    <bean id="mappingJackson2HttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8value>
                <value>text/json;charset=UTF-8value>
                <value>application/json;charset=UTF-8value>
            list>
        property>
    bean>
    <bean
            class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJackson2HttpMessageConverter"/>    
            list>
        property>
    bean>
    
    

beans>

xml文件配置基本完成,下面就是java代码了:

/**
 * Author: tengxing
 * Email: [email protected]
 * Date: 17-3-15
 * Time: 下午6:16
 * Describe: 测试
 */
@RestController
@RequestMapping("/test")
public class TestController extends BaseController{
    @RequestMapping(value = "hello", method = RequestMethod.GET)
    public Object hello(){
        System.out.println("--exe--");
        return renderSuccess("hello world");
    }

}
protected JsonResult renderSuccess(String msg) {
        JsonResult result = renderSuccess();
        result.setMsg(msg);
        return result;
    }

打开浏览器:

Spring + SpringMvc + Mybatis 搭建SSM框架_第2张图片
至此springmvc搭建完毕。

搭建spring

搭建mybatis

看看效果

Spring + SpringMvc + Mybatis 搭建SSM框架_第3张图片

项目托管地址:github 点击star或者fork可以持续跟踪项目喔,我会不定时更新。

你可能感兴趣的:(架构,Web开发)