zoukankan      html  css  js  c++  java
  • IDEA使用 maven 搭建 SSM 框架


    公司有个小的内部使用的软件,让开发,自己选择使用 SSM ;

    因为之前自己学过,本以为一切水到渠成,但是好久没用SSM(上次用还是九月份),框架搭建就费劲了,特此记录下 ;


    怎么创建 maven 项目,不再累赘 ,网上一大把,或者看我的之前的博客;


    pom 文件的编写

    SSM 框架,需要众多的 jar 包,具体需要哪些包,这个谁也说不清楚,我也不清楚,去网上 down 一份下来,就好了 ,但是不能保证以后 SSM 用到的包,都被囊括在其中,后面需要再自己添加;

    	<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.0.2.RELEASE</spring.version>
            <!-- mybatis版本号 -->
            <mybatis.version>3.2.6</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>
    
            <!-- 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.2.2</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.30</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>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.13</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>
    
        </dependencies>
    

    项目结构

    在等 maven 下载的过程中,把项目结构创建下,如下图所示;

    maven 下载不需要多久,如果你下载很久,建议换成阿里的镜像)

    在这里插入图片描述


    SSM 配置文件的编写

    resources 文件的对应的子文件下面进行 SSM 整合的配置

    1. sqlMapConfig.xml 配置文件:

      里面进行一个mybatis自己的配置,比如缓存、别名、懒加载等

      <?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>
      
      
          <!-- 别名设定 -->
          <typeAliases>
              <!-- 批量别名,po -->
              <package name="cn.hyc.ssm"/>
          </typeAliases>
      
      
      </configuration>
      
      
    2. applicationContext-dao.xml 配置文件

      里面配置那些本该由 mybatis 管理的配置项,比如数据源、批量扫描 mapper ,

      整合以后,这些交给 spring 管理 ;

      	<?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             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"
             default-autowire="byName">
      
      
          <!-- ********************************************************
               *** 该项配置文件,用于配置 spring与mybatis整合之后, ***
               *** 那些本来由mybatis管理的东西,现在交由mybatis管理 ***
               ******************************************************** -->
      
      
      
          <!-- 配置 sqlSessionFactory,让 spring 管理sqlSessionFactory -->
          <!-- class 类在 spring-mybatis的整合包里面 -->
          <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
              <!-- 设置读取 mybatis 配置文件的资源流-->
              <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
              <!-- 设置数据源,引用下面配置的数据源对象-->
              <property name="dataSource" ref="dataSource"/>
          </bean>
      
          <!-- 读取数据库的配置文件 -->
          <context:property-placeholder location="classpath:db.properties"/>
      
          <!-- 配置 DBCP  数据源 -->
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
              <property name="driverClassName" value="${jdbc.driver}"/>
              <property name="url" value="${jdbc.url}"/>
              <property name="username" value="${jdbc.username"/>
              <property name="password" value="${jdbc.password"/>
              <property name="maxOpenPreparedStatements" value="10"/>
              <property name="maxIdle" value="5"/>
          </bean>
      
          <!--批量扫描 mapper,自动生成代理对象 -->
          <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
              <property name="basePackage" value="cn.hyc.mapper"/>
              <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
          </bean>
      
      
      </beans>
      
    3. applicationContext-beans.xml 配置文件

      在里面配置需要注册到 spring 容器中的 bean,可以是扫描注解自动创建的,也可以存放配置创建的对象;

      	<?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.xsd 
      	       http://www.springframework.org/schema/mvc 
      	       http://www.springframework.org/schema/mvc/spring-mvc.xsd">
      
      
          <!-- ********************************************************
               ***      spring 配置文件,这里用于配置那些 bean      ***
               ******************************************************** -->
      
          <!-- 开启注解扫描,自动扫描那些使用注解创建的对象 -->
          <context:component-scan base-package="cn.hyc." />
      
      
      </beans>
      
    4. applicationContext-transaction.xml 配置文件

      对 spring的事务配置,

      		<?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:tx="http://www.springframework.org/schema/tx"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
      
      
          <!-- ********************************************************
               ***               spring事务的配置                   ***
               ******************************************************** -->
      
      
          <!-- ********************************************************
               ***           开启事务管理,配置数据源               ***
               ******************************************************** -->
          <!--<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">-->
              <!--&lt;!&ndash; dataSource 定义在 ApplicationContext-dao.xml 中,这里需要告诉它 fix 所有的spring配置文件&ndash;&gt;-->
              <!--<property name="dataSource" ref="dataSource"/>-->
          <!--</bean>-->
      
      
          <!-- ********************************************************
               ***           配置对什么样的方法使用事务             ***
               ******************************************************** -->
          <!--<tx:advice id="transactionInterceptor" transaction-manager="transactionManager">-->
              <!--<tx:attributes>-->
                  <!--&lt;!&ndash;对于 增删改 方法需要开启事务&ndash;&gt;-->
                  <!--<tx:method name="save*"/>-->
                  <!--<tx:method name="insert*"/>-->
                  <!--<tx:method name="update*"/>-->
                  <!--<tx:method name="delete*"/>-->
                  <!--&lt;!&ndash;对于 查 ,级别设为 SUPPORTS ,支持事务 &ndash;&gt;-->
                  <!--<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>-->
                  <!--<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>-->
              <!--</tx:attributes>-->
          <!--</tx:advice>-->
      
          <!--配置切入点,也就是配置,在什么地方使用事务-->
          <!--<aop:resource.config>-->
              <!--<aop:advisor advice-ref="transactionInterceptor" pointcut="execution(* xin.ijava.ssm.services.impl.*.*(..))"/>-->
          <!--</aop:resource.config>-->
          <!--加上这句话,不然 services的层,创建会报错,报 actually of type 'com.sun.proxy.$Proxy12'-->
          <!--报 这样的 类型错误-->
          <!--<aop:aspectj-autoproxy proxy-target-class="true"/>-->
      
      
      </beans>
      
    5. springMvc.xml 的配置文件

      配置 springMvc 的一些配置,比如解析的视图,前后缀,静态资源的拦截问题,关于 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"
             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">
      
          <!-- 启用spring mvc 注解 -->
          <!--<context:annotation-config />-->
      
          <!-- 完成请求和注解POJO的映射 -->
          <!--<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />-->
      
      
          <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
          <!--<bean id="mappingJacksonHttpMessageConverter"-->
          <!--class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">-->
          <!--<property name="supportedMediaTypes">-->
          <!--<list>-->
          <!--<value>text/html;charset=UTF-8</value>-->
          <!--</list>-->
          <!--</property>-->
          <!--</bean>-->
      
          <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
          <!--<bean-->
                  <!--class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">-->
              <!--<property name="messageConverters">-->
                  <!--<list>-->
                      <!--<ref bean="mappingJacksonHttpMessageConverter"/> &lt;!&ndash; JSON转换器 &ndash;&gt;-->
                  <!--</list>-->
              <!--</property>-->
          <!--</bean>-->
      
          <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
              <property name="prefix" value="/WEB-INF/jsp/"/>
              <property name="suffix" value=".jsp"/>
          </bean>
      
          <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
          <!--<bean id="multipartResolver"-->
                <!--class="org.springframework.web.multipart.commons.CommonsMultipartResolver">-->
              <!--&lt;!&ndash; 默认编码 &ndash;&gt;-->
              <!--<property name="defaultEncoding" value="utf-8"/>-->
              <!--&lt;!&ndash; 文件大小最大值 &ndash;&gt;-->
              <!--<property name="maxUploadSize" value="10485760000"/>-->
              <!--&lt;!&ndash; 内存中的最大值 &ndash;&gt;-->
              <!--<property name="maxInMemorySize" value="40960"/>-->
          <!--</bean>-->
      </beans>
      

      上面的几个文件,除了 sqlMapConfig.xmlmybatis 配置自己独特的配置,其他几个都是整合以后,配置交由 spring 管理的配置,它们完全可以写在一个配置文件里面,但是那样,我感觉太乱了,就分开写了 ;

    6. log4j.properties 配置文件

      能打印出 mybatissql 语句,方便调试!

      log4j.rootLogger=DEBUG,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
      log4j.appender.File.Threshold = 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
      
      
    7. db.properties 配置文件

      jdbc.driver = com.mysql.jdbc.Driver
      jdbc.url = jdbc:mysql:///DatabaseName?charset=utf-8
      jdbc.username = username
      jdbc.password = password
      
      

    web.xml 的配置

    在这里配置的东西不多,一般有:springMvc 的前端控制器,和一个监听器,监听 web 程序启动,然就加载 spring 的配置文件,创建代表配置文件的 ApplicationContext 对象,和一个全站的编码过滤器 ;

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
    
        <!-- 1.针对Spring配置:读取配置文件 -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/applicationContext-*.xml</param-value>
        </context-param>
    
        <!-- 注册ServletContext监听器,监听 web 程序的启动,
            然后创建 ApplicationContext 对象,注册到 web 容器servletContext 域里面
         -->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <!-- 针对SpringMVC的配置,前端控制器,本质上一个serlvet     -->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springMvc/springMvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.action</url-pattern>
        </servlet-mapping>
    
        <!-- 解决乱码的过滤器 -->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
    
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
    
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
    </web-app>
    
    

    总结

    路径需要特别重视,比如上面的那些配置文件中,引入其他配置文件的路径,一定要写对,最好加上 calsspath

    一般按照这个步骤走下来,SSM 就整合成功了,但是也就是基本的框架搭起来,里面具体的各种功能,我都没添加进去,比如要 实现全局异常捕捉自定义参数绑定上传文件** 等这些功能,则还需要继续进行配置 ;**

    我在下面列出了基本的大部分功能,你可以按照这个清单去,丰富你的配置文件 ;

    按层分,每层可能用到的大部分功能 ;

    ---------- spring --------
    1、context 注解扫描,扫描利用注解创建的对象
    2、<aop:aspectj-autoproxy></aop:aspectj-autoproxy> aop自动代理,配合@AspectJ使用,
    再利用@Before、@Around,对其中方法进行增强;
    3、事务的注解

    --------- mybatis -----

    1、管理数据源
    2、读取数据库配置
    3、扫描 mapper
    4、创建 sqlSessionFactory

    -------- springMvc ------

    1、配置视图解析器
    2、配置,使用配置文件的处理器适配器、处理器映射器 ;
    3、配置注解的处理器适配器、映射器,替代上面的第二条;mvc:annotation-driven/,它们不能共存,只能选其一 ;
    4、如果有自定义参数绑定,则配置 ,还要讲转换器,注入到适配器里面 ;
    5、如果使用检验器,则配置检验器,还要将检验器注入到适配器中 ;
    6、全局异常类 ;
    7、JSON转换器,使用注解的适配器,则不需要再配置 ;
    8、如果上传图片,则配置音乐、图片等文件的解析器 ;
    9、配置拦截器 ;
    10、如果配置了支持 RestFul的前端控制的,则还需要配置配置静态资源,以放行 ;

    ------ web.xml --------
    1、配置编码过滤器 ;
    2、配置 spring 监听器
    3、配置 前端控制器
    4、如果需要,还要配置支持restFul的前端控制器

  • 相关阅读:
    甲方提供核心jar包,添加到本地maven仓库
    Flexigrid详解
    在idea中使用CheckStyle来规范代码
    对List集合中的对象进行按某个属性排序
    Layui数据表格总结篇
    jQuery入门看这一篇就够了
    JAVA常量类的实现方式
    HTML5和CSS3提高
    CSS高级技巧总结
    CSS入门总结
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665610.html
Copyright © 2011-2022 走看看