ssm框架整合思路

1、dao层
  1.1、必须数据:
       pojo(java实体)、mapper接口(dao接口)、sql映射文件(翻译为jdbc中的statement)
  1.2、配置文件:
       mybatis核心配置文件:SqlMapConfig.xml
          自定义别名
       spring整合mybatis配置文件:applicationContext-dao.xml
         数据源
         会化工厂
         mapper扫描(加载dao)
       其他配置:
         数据库信息:db.properties
         日志信息:log4j.properties
2、service层
  2.1、配置文件:
       注解扫描:@service(加载service)applicationContext-service.xml
       事务配置: ApplicationContext-trans.xml
3、controller层
  3.1、配置文件: springMVC.xml
       注解扫描:@controller(加载controller)
       注解驱动:自动加载最新的处理器映射器、处理器适配器
       视图解析器:
       自定义类型转化器:(挂载于注解驱动)
       文件上传解析器:
       json格式数据解析器:(若没有配置注解驱动,则需要显示的在处理器适配器挂载)
       全局异常处理器:
       自定义拦截器:
       静态资源放行:
       
4、web.xml web.xml
  4.1、spring监听器
  4.2、springMVC前端控制器
  4.3、post中文乱码请求

SqlMapConfig.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>
    <properties resource="db.properties"></properties>

    <typeAliases> 
        <!-- 定义单个pojo类别名
                type:类的全路劲名称
                alias:别名
         -->
        <!-- <typeAlias type="xx.xxxx.pojo.User" alias="user"/> -->

        <!-- 使用包扫描的方式批量定义别名 
        定以后别名等于类名,不区分大小写,但是建议按照java命名规则来,首字母小写,以后每个单词的首字母大写
        -->
        <package name="xx.xxx.pojo"/>
    </typeAliases>
</configuration>

applicationContext-dao.xml

<beansxmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:task="http://www.springframework.org/schema/task"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    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-4.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-4.0.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-4.0.xsd
        http://code.alibabatech.com/schema/dubbo        
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 配置 读取properties文件 jdbc.properties -->
    <context:property-placeholderlocation="classpath:jdbc.properties"/>

    <!-- 配置 数据源 -->
    <beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
        <!-- 驱动 -->
        <propertyname="driverClassName"value="${jdbc.driver}"/>
        <!-- url -->
        <propertyname="url"value="${jdbc.url}"/>
        <!-- 用户名 -->
        <propertyname="username"value="${jdbc.username}"/>
        <!-- 密码 -->
        <propertyname="password"value="${jdbc.password}"/>
    </bean>

    <!-- 配置 Mybatis的工厂 -->
    <beanclass="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源 -->
        <propertyname="dataSource"ref="dataSource"/>
        <!-- 配置Mybatis的核心 配置文件所在位置 -->
        <propertyname="configLocation"value="classpath:SqlMapConfig.xml"/>
        <!-- 配置pojo别名 -->
        <propertyname="typeAliasesPackage"value="xx.xxxx.core.bean"></property>
    </bean>

    <!-- 配置 1:原始Dao开发 接口实现类 Mapper.xml 三个 2:接口开发 接口 不写实现类 Mapper.xml 二个 (UserDao、ProductDao 
        、BrandDao。。。。。。。) 3:接口开发、并支持扫描 xx.xxxx.core.dao(UserDao。。。。。) 写在此包下即可被扫描到 -->
    <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <propertyname="basePackage"value="xx.xxxx.core.dao"/>
    </bean>

</beans>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springmvc?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

ApplicationContext-service.xml

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

    <!-- @Service扫描 -->
    <context:component-scan base-package="xx.xxxxx.service"></context:component-scan>
</beans>

ApplicationContext-trans.xml

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

    <!-- 事务管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 通知 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- 传播行为 -->
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
            <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>

    <!-- 切面 -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice"
            pointcut="execution(* xx.xxxx.service.*.*(..))" />
    </aop:config>

</beans>

SpringMvc.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:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 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-4.0.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!-- @Controller注解扫描 -->
    <context:component-scan base-package="xx.xxxx.controller"></context:component-scan>

    <!-- 注解驱动:
            替我们显示的配置了最新版的注解的处理器映射器和处理器适配器 -->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

    <!-- 配置视图解析器 
    作用:在controller中指定页面路径的时候就不用写页面的完整路径名称了,可以直接写页面去掉扩展名的名称
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 真正的页面路径 =  前缀 + 去掉后缀名的页面名称 + 后缀 -->
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 配置自定义转换器 
    注意: 一定要将自定义的转换器配置到注解驱动上
    -->
    <!--<bean id="conversionService"
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                &lt;!&ndash; 指定自定义转换器的全路径名称 &ndash;&gt;
                <bean class="xx.xxxx.controller.converter.CustomGlobalStrToDateConverter"/>
            </set>
        </property>
    </bean>-->

    <!-- 配置全局异常处理器 -->
    <bean class="xx.xxxx.exception.CustomGlobalExceptionResolver"></bean>

    <!-- 文件上传 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

    <!-- 在注解适配器中加入messageConverters -->
    <!-- 注意:如果使用<mvc:annotation-driven /> 则不用定义下面的内容。-->
    <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">-->
        <!--<property name="messageConverters">-->
            <!--<list>-->
                <!--<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>-->
            <!--</list>-->
        <!--</property>-->
    <!--</bean>-->


    <!-- 配置拦截器 -->
    <!--<mvc:interceptors>
        <mvc:interceptor>
            &lt;!&ndash; 拦截请求的路径    要拦截所有必需配置成/** &ndash;&gt;
            <mvc:mapping path="/**"/>
            &lt;!&ndash; 指定拦截器的位置 &ndash;&gt;
            <bean class="xx.xxxx.interceptor.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>-->

</beans>

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_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>ssm0523</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <!-- 加载spring容器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:ApplicationContext-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <!-- springmvc前端控制器 -->
    <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.xml</param-value>
        </init-param>
        <!-- 在tomcat启动的时候就加载这个servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <!--
        *.action    代表拦截后缀名为.action结尾的
        /           拦截所有但是不包括.jsp
        /*          拦截所有包括.jsp
         -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 配置Post请求乱码 -->
    <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>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

猜你喜欢

转载自blog.csdn.net/u010758410/article/details/80145521