SSM-Maven 框架流程

 

文件格式
srctest    
 main    
  java   
   com.ssmmapper*.xml
    controller 
    pojo 
    dao 
    service 
     impl
  resources   
   mybatis  
    mybatis-config.xml 
   spring-mybatis.xml  
   springmvc.xml  
   log4j.xml  
   jdbc.properties  

1.配置maven

maven中的依赖

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>maven-ssm3</groupId>
    <artifactId>mavenssm3</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>mavenssm3 Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>

        <!-- spring版本号 -->
        <spring.version>4.3.3.RELEASE</spring.version>
        <!-- mybatis版本号 -->
        <mybatis.version>3.4.0</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.7.7</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <!-- spring核心包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <!--mybatis spring 插件 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!-- 导入java ee jar 包 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>


        <!-- 格式化对象,方便输出日志 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.41</version>
        </dependency>


        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- log end -->
        <!-- 引入JSON -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.7.5</version>
        </dependency>
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.9</version>
        </dependency>

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
    </dependencies>

    <build>
        <finalName>mavenssm3</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>

<resources>  
    <resource>  
        <directory>src/main/java</directory>  
        <includes>  
            <include>**/*.xml</include>  
        </includes>  
        <filtering>true</filtering>  
    </resource>  
</resources>  

    </build>
</project>

 

build.gradle依赖

 

apply plugin: 'java'
apply plugin: 'war' //用来生成war
apply plugin: 'eclipse-wtp' //用来生成Eclipseweb项目的插件(web-tool-platform)
version = '1.0' //property
 
// Uses JDK 7
sourceCompatibility = 1.7
targetCompatibility = 1.7
 
// 1. Get dependencies from Maven local repository
// 2. Get dependencies from Maven central repository
repositories {
//mavenCentral()
maven{ url"http://maven.aliyun.com/nexus/content/groups/public"}  
}
 
//Project dependencies
dependencies {
 compile 'org.apache.tomcat:tomcat-servlet-api:8.0.24'
 compile 'jstl:jstl:1.2'
 compile 'org.springframework:spring-beans:4.3.5.RELEASE'
 compile 'org.springframework:spring-context:4.3.5.RELEASE'
 compile 'org.springframework:spring-context-support:4.3.5.RELEASE'
 compile 'org.springframework:spring-web:4.3.5.RELEASE'
 compile 'org.springframework:spring-webmvc:4.3.5.RELEASE'
 compile 'org.springframework:spring-tx:4.3.5.RELEASE'
 compile 'com.alibaba:druid:1.0.15'
 compile 'org.aspectj:aspectjweaver:1.8.6'
 compile 'mysql:mysql-connector-java:5.1.36'
 compile 'org.mybatis:mybatis-spring:1.3.1'
 compile 'org.mybatis:mybatis:3.4.1'
 compile 'org.springframework:spring-jdbc:4.3.5.RELEASE'
 compile 'junit:junit:4.12'
 compile 'org.springframework:spring-test:4.0.5.RELEASE'
 compile 'com.alibaba:fastjson:1.2.31'
 compile 'log4j:log4j:1.2.17'
 compile group: 'org.freemarker', name: 'freemarker', version: '2.3.25-incubating'
 compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1'
 compile group: 'commons-io', name: 'commons-io', version: '2.2'
 compile group: 'commons-logging', name: 'commons-logging', version: '1.2'
 
 //compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version: '1.9.13'
 //compile group: 'org.codehaus.jackson', name: 'jackson-core-asl', version: '1.9.13'
 
 
 
//include in compile only, exclude in the war
providedCompile 'javax.servlet:servlet-api:3.0.1'
providedCompile 'javax.servlet.jsp:jsp-api:2.2.1-b03'
}

2.web.xml中的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">


    <!-- 编码过滤器-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- 加入Spring监听器-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:(resources)spring-mybatis.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <!-- ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。
    因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认
    执行它实现的方法。至于ApplicationContext.xml这个配置文件部署在哪,如何配置多个xml文件,
    书上都没怎么详细说明。现在的方法就是查看它的API文档。在ContextLoaderListener中关联了
    ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。看看它的API说明-->


    <!-- Spring MVC配置servlet-->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:(resources)springmvc.xml</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
        <!--/*标记容器是否在启动的时候就加载这个servlet。
        当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
        当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。*/-->
    </servlet>

    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

 

3.创建并配置spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:jaxws="http://cxf.apache.org/jaxws"
  xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
 
 
  <!-- 自动扫描 -->
  <context:component-scan base-package="com.ssm"></context:component-scan>
  <!-- 不扫描@Controller注解的类。spring配置文件和springmvc配置文件的两个自动扫描的路径范围,最好不要重复,使用<context:exclude-filter/>和<context:include-filter/>指定不扫描和扫描的条件-->
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>


  <!-- 导入jdbc.properties配置文件 -->
  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:(resources)jdbc.properties"/>
    </bean>
 
  <!-- 先配置数据源(数据库连接池)-->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${driverClassName}"></property>
    <property name="url" value="${jdbc_url}"></property>
    <property name="username" value="${jdbc_username}"></property>
    <property name="password" value="${jdbc_password}"></property>
  <!-- 初始化连接大小-->
        <property name="initialSize" value="${initialSize}"/>
        <!-- 连接池最大数量-->
        <property name="maxActive" value="${maxActive}"/>
        <!-- 连接池最大空间-->
        <property name="maxIdle" value="${maxIdle}"/>
        <!-- 连接池最小空间-->
        <property name="minIdle" value="${minIdle}"/>
        <!-- 获取连接最大等待时间-->
        <property name="maxWait" value="${maxWait}"/>
     <property name="testConnectionOnCheckin" value="false"/>
    <property name="testConnectionOnCheckout" value="true"/>
  </bean>

   <!-- 配置mybatis接口代理开发
    * 接口类名和映射文件必须同名
    * 接口类和映射文件必须在同一个目录 下
    * 映射文件namespace名字必须是接口的全类路径名
    * 接口的方法名必须和映射Statement的id一致
   -->

  <!-- spring 和mybatis整合,不需要mybatis的配置映射文件--> 
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

    <property name="dataSource" ref="dataSource"></property>
  <!-- mybatis配置文件(起别名) -->
    <property name="configLocation"                                        value="classpath:(resources)mybatis/mybatis-config.xml"/>

  <!-- 自动扫描mapping.xml文件-->
        <property name="mapperLocations" value="classpath:(resources)mapper/*.xml"/>
    </bean>

    <!-- Dao接口所在包名,Spring会自动查找其下的类 动态代理实现 不用写dao的实现类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ssm.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>





                             <!--以下非必需-->


   <bean>
    <!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名 -->
    <property name="typeAliasesPackage" value="com.ssm.model"></property>
  </bean>
   
   
  <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
<!-- 拦截器方式配置事物 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <tx:attributes>
      <!-- 以如下关键字开头的方法使用事物 -->
      <tx:method name="add*" propagation="REQUIRED" />
      <tx:method name="save*" propagation="REQUIRED" />
      <tx:method name="update*" propagation="REQUIRED" />
      <tx:method name="modify*" propagation="REQUIRED" />
      <tx:method name="edit*" propagation="REQUIRED" />
      <tx:method name="delete*" propagation="REQUIRED" />
      <tx:method name="remove*" propagation="REQUIRED" />
      <tx:method name="buyfood" propagation="REQUIRED" />
      <tx:method name="order" propagation="REQUIRED" />
      <!-- 以如下关键字开头的方法不使用事物 -->
      <tx:method name="get*" read-only="true" />
      <tx:method name="find*" read-only="true" />
      <tx:method name="load*" read-only="true" />
      <tx:method name="query*" read-only="true" />
      <!-- 其他方法不使用事物 -->
      <tx:method name="*" propagation="SUPPORTS" />
    </tx:attributes>
  </tx:advice>
 
  <!-- 切面,将事物用在哪些对象上 -->
  <aop:config>
    <aop:pointcut id="transactionPointcut"
      expression="execution(* cn.ft.service.impl.*Impl.*(..))" />
    <aop:advisor pointcut-ref="transactionPointcut"
      advice-ref="transactionAdvice" />
  </aop:config>
 
</beans>

 

4.创建springmvc配置

 

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">


    <!-- 自动扫描该包@Controller注解的类-->
    <!--使用spring组件扫描,一次性配置此包下所有的Handler-->
    <context:component-scan base-package="com.ssm.controller"/>

    <!-- 静态资源处理-->
    <mvc:default-servlet-handler/>

    <!--自动注册 RequestMappingHandlerMapping、RequestMappingHandlerAdapter,mvc的注解驱动        器,通过它可以替代下边的处理器映射器和适配器 -->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--注解处理器映射器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <!--注解的适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="webBindingInitializer" ref="customBinder"></property>
    </bean>


    <!-- 定义跳转的文件的前后缀 ,视图模式配置(视图解析器)-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 

5.配置数据源jdbc.properties

 

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_ssm
username=root
password=root
initialSize=0
maxActive=20
maxIdle=20
minIdle=1
maxWait=60000
#字符后面不要带空格,特别是当你复制别人的代码时,例如'root'

 

6.配置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">
<configuration>
  
 <settings>
   <setting name="cacheEnabled" value="true"/>
 </settings>
  
 <typeAliases>
   <!-- 
   <typeAlias type="cn.ssm.model.Userbean" alias="userbean"/>
   -->
    
  <!-- 批量设置别名:别名就是类名(把第一个字母改小写) -->
  <package name="cn.ssm.model"/>
 </typeAliases>
  
</configuration>

 

7.配置log4j.properties

#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]-%m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File=org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.file=logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize=10MB
#输出所有日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Thresshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值