IDEA使用 maven 搭建 SSM 框架

版权声明:转载请给出原文链接 https://blog.csdn.net/youngyouth/article/details/84971339


公司有个小的内部使用的软件,让开发,自己选择使用 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 配置文件

    #### 开发用debug 生产用 info
    log4j.rootLogger=DEBUG, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    # mybatis 的打印输出
    log4j.logger.java.sql.Statement = debug
    log4j.logger.java.sql.PreparedStatement = debug
    log4j.logger.java.sql.ResultSet =debug
    
    
  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

-------- springMnv ------

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

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

猜你喜欢

转载自blog.csdn.net/youngyouth/article/details/84971339