• Eclipse中 搭建 Spring+SpringMVC+Mybatis整合(下)


    通过前面的步骤可以搭建好 Maven 以及下载依赖框架,那么接下来就是编写框架的配置文件了,配置分为以下三个步骤:

    1. 配置 SpringMVC
    2. 配置 Mybatis
    3. 配置 log

    以下配置 SpringMVC:

    • 确定包结构,以及每个包的作用

        
    • 配置 web.xml 启用 SpringMVC
      Xml代码  收藏代码
      1. <!DOCTYPE web-app PUBLIC  
      2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
      3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
      4.   
      5. <web-app>  
      6.     <display-name>SSM</display-name>  
      7.     
      8.     <!-- Spring MVC -->  
      9.     <context-param>  
      10.         <!-- 指定配置文件位置(非默认) -->  
      11.         <param-name>contextConfigLocation</param-name>  
      12.         <param-value>classpath:spring/spring-mvc.xml</param-value>  
      13.     </context-param>  
      14.     <servlet>  
      15.         <servlet-name>springMvc</servlet-name>  
      16.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
      17.         <!-- 通知 Web 容器, 启动时初始化 Spring MVC -->  
      18.         <load-on-startup>1</load-on-startup>  
      19.     </servlet>  
      20.     <servlet-mapping>  
      21.         <servlet-name>springMvc</servlet-name>  
      22.         <!-- 指定拦截以 .do 结尾的配置, 如果配置为 "/" 则需要在配置文件中排除静态资源, 如: .css, .jsp, .png等等 -->  
      23.         <url-pattern>*.do</url-pattern>  
      24.     </servlet-mapping>  
      25.       
      26. </web-app>  
        
    • 配置 spring-mvc.xml 
      Xml代码  收藏代码
      1. <?xml version="1.0" encoding="UTF-8"?>  
      2. <beans xmlns="http://www.springframework.org/schema/beans"  
      3.     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"  
      5.     xmlns:aop="http://www.springframework.org/schema/aop"  
      6.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
      7.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
      8.     http://www.springframework.org/schema/context   
      9.     http://www.springframework.org/schema/context/spring-context-3.0.xsd   
      10.     http://www.springframework.org/schema/mvc   
      11.     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
      12.     http://www.springframework.org/schema/aop   
      13.     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
      14.   
      15.     <!-- 配置资源文件 -->  
      16.     <!-- * 指定 classPath 相对路径 * -->  
      17.     <context:property-placeholder location="classpath:jdbc.properties" />  
      18.       
      19.     <!--   
      20.     * 指定文件(绝对)路径 *  
      21.     <context:property-placeholder location="file:D:/home/appadmin/config/jdbc.properties" />  
      22.     -->  
      23.   
      24.     <!-- 加载组件配置 -->  
      25.     <import resource="classpath:spring-dao.xml" />  
      26.   
      27.     <!-- 启用spring mvc 注解, conversion-service 用于注册 Handler 的参数类型转换器 -->  
      28.     <mvc:annotation-driven conversion-service="conversionService" />  
      29.       
      30.     <!-- 注册参数转换器 -->  
      31.     <bean id="conversionService"  
      32.         class="org.springframework.format.support.FormattingConversionServiceFactoryBean">  
      33.         <property name="converters">  
      34.             <set>  
      35.                 <!-- 枚举转换器: 支持 ordinal 和 name(区分大小写) -->  
      36.                 <bean class="org.hy.ssm.web.converter.StringToEnumConverterFactory" />  
      37.                 <!-- 日期转换器: 支持的模式列表查看源码, 可支持毫秒值(字符串) -->  
      38.                 <bean class="org.hy.ssm.web.converter.StringToDate" />  
      39.             </set>  
      40.         </property>  
      41.     </bean>  
      42.   
      43.     <!-- 启用spring mvc 注解扫描 -->  
      44.     <context:annotation-config />  
      45.   
      46.     <!-- 自动扫描注解 -->  
      47.     <context:component-scan base-package="org.hy.ssm" />  
      48.   
      49.     <!-- 完成请求和注解POJO的映射 -->  
      50.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
      51.   
      52.     <!--   
      53.         * 将 webapp(WEB-INF同级) 静态资源映射新路径,   
      54.         * 当前示例 /wabapp/statics/  
      55.         * statics/ 为静态资源文件夹, 如: csss/templates/images/js/等等  
      56.     -->  
      57.     <mvc:resources location="/statics/" mapping="/resource/**" cache-period="31536000" />  
      58.   
      59.     <!--    
      60.         * 视图解析器, (必须)  
      61.         * 前缀 /WEB-INF/  
      62.         * 后缀 .jsp  
      63.         * 示例: handler 返回字符串(视图映射路径)为 user/list, 则映射路径为: /WEB-INF/user/list.jsp   
      64.     -->  
      65.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/" p:suffix=".jsp" />  
      66.   
      67.     <!--   
      68.         * 配置 JSON 转换器(必须)  
      69.         * handler 返回 Model 数据时需要用到  
      70.         * 与 @ResponseBody 联合使用  
      71.     -->  
      72.     <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
      73.         <property name="supportedMediaTypes">  
      74.             <list>  
      75.                 <value>text/html;charset=UTF-8</value>  
      76.             </list>  
      77.         </property>  
      78.     </bean>  
      79.       
      80.     <!-- 注册 JSON 转换器 -->  
      81.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
      82.         <property name="messageConverters">  
      83.             <list>  
      84.                 <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->  
      85.             </list>  
      86.         </property>  
      87.     </bean>  
      88.       
      89.     <!-- 文件上传 -->  
      90.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
      91.         <property name="defaultEncoding">  
      92.             <value>UTF-8</value>  
      93.         </property>  
      94.         <property name="maxUploadSize">  
      95.             <value>32505856</value><!-- 上传文件大小限制为31M -->  
      96.         </property>  
      97.         <property name="maxInMemorySize">  
      98.             <value>4096</value>  
      99.         </property>  
      100.     </bean>  
      101.   
      102.     <!--   
      103.        * 注册验证拦截器(非 javax.servlet.Filter),  
      104.        * 拦截器实现需要继承: org.springframework.web.filter.OncePerRequestFilter    
      105.     -->  
      106.     <bean id="loginFileter" class="org.hy.ssm.web.filter.LoginFilter"></bean>  
      107.   
      108.     <!--   
      109.         * Spring 邮件配置  
      110.         * 注意:这里的参数(如用户名、密码)都是针对邮件发送者的   
      111.     -->  
      112.     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
      113.         <property name="host" value="${email.stmp.server}" />  
      114.         <property name="defaultEncoding" value="utf-8" />  
      115.         <property name="username" value="${email.username}" />  
      116.         <property name="password" value="${email.password}" />  
      117.         <property name="port" value="${email.stmp.port}" />  
      118.         <property name="javaMailProperties">  
      119.             <props>  
      120.                 <prop key="mail.smtp.auth">true</prop>  
      121.                 <prop key="mail.smtp.timeout">25000</prop>  
      122.             </props>  
      123.         </property>  
      124.     </bean>  
      125. </beans>  
       
    • spring-dao.xml 配置 (包含Mybatis)
      Xml代码  收藏代码
      1. <?xml version="1.0" encoding="UTF-8"?>  
      2. <beans xmlns="http://www.springframework.org/schema/beans"  
      3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
      4.     xmlns:aop="http://www.springframework.org/schema/aop"  
      5.     xsi:schemaLocation="  
      6.     http://www.springframework.org/schema/beans   
      7.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
      8.     http://www.springframework.org/schema/tx   
      9.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
      10.     http://www.springframework.org/schema/aop   
      11.     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
      12.     ">  
      13.   
      14.     <!-- 配置 alibaba 数据源 -->  
      15.     <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">  
      16.         <property name="url" value="${jdbc_url}" />  
      17.         <property name="username" value="${jdbc_username}" />  
      18.         <property name="password" value="${jdbc_password}" />  
      19.         <property name="initialSize" value="0" />  
      20.         <property name="maxActive" value="20" />  
      21.         <property name="minIdle" value="0" />  
      22.         <property name="maxWait" value="60000" />  
      23.         <property name="validationQuery" value="${validationQuery}" />  
      24.         <property name="testOnBorrow" value="false" />  
      25.         <property name="testOnReturn" value="false" />  
      26.         <property name="testWhileIdle" value="true" />  
      27.         <property name="timeBetweenEvictionRunsMillis" value="60000" />  
      28.         <property name="minEvictableIdleTimeMillis" value="25200000" />  
      29.         <property name="removeAbandoned" value="true" />  
      30.         <property name="removeAbandonedTimeout" value="1800" />  
      31.         <property name="logAbandoned" value="true" />  
      32.         <property name="filters" value="mergeStat" />  
      33.     </bean>  
      34.   
      35.     <!-- MyBits 的 SessionFactory -->  
      36.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
      37.         <!-- 数据源 -->  
      38.         <property name="dataSource" ref="dataSource" />  
      39.         <!-- 数据访问接口对应的 SQL 实现 -->  
      40.         <property name="mapperLocations" value="classpath:mapping/*.xml" />  
      41.         <!-- Mybatis 其他配置 -->  
      42.         <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />  
      43.     </bean>  
      44.   
      45.     <!-- Mybatis 托管给 Spring 的接口与扫描配置 -->  
      46.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
      47.         <!--   
      48.             * 当前数据源所管理的数据访问接口包  
      49.             * 如果项目中配置了多个数据源时,  
      50.             * 应避免相同数据访问接口包  
      51.         -->  
      52.         <property name="basePackage" value="com.cnp.catalog.dao" />  
      53.         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />  
      54.     </bean>  
      55.   
      56.     <!-- 开启spring的事物管理功能 -->  
      57.     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
      58.         <property name="dataSource" ref="dataSource" />  
      59.     </bean>  
      60.   
      61.     <!-- 使用注解管理事物 -->  
      62.     <tx:annotation-driven transaction-manager="transactionManager" />  
      63. </beans>  
      (如何配置多个数据源:1、jdbc.properties 中新增一套jdbc配置[url/username/pwd];3、配置唯一的dataSource、transactionManager;3、修改 MapperScannerConfigurer.basePackage 的值为新的数据访问接口包,一个数据访问接口包只能绑定一个数据源;4、修改 SqlSessionFactoryBean.mapperLocations 的值为新的数据访问接口 SQL 实现配置,推荐为每个数据源指定不同的实现包)

     配置 Mybatis

    • mybatis-config.xml
      Xml代码  收藏代码
      1. <?xml version="1.0" encoding="UTF-8" ?>   
      2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"   
      3.          "http://mybatis.org/dtd/mybatis-3-config.dtd">   
      4. <configuration>   
      5.   
      6.     <!-- 别名 -->  
      7.     <typeAliases>  
      8.         <!--   
      9.            * 在ParameterType或ResultType中直接使用类名,   
      10.            * 首字母大小写均可   
      11.         -->  
      12.         <package name="org.hy.ssm.model.entities"/>  
      13.           
      14.         <!-- 或指定类型, 指定别名 -->  
      15.         <typeAlias type="org.hy.ssm.model.entities.User" alias="user"/>  
      16.     </typeAliases>  
      17.       
      18.     <!-- 枚举类型处理器 -->  
      19.     <typeHandlers>  
      20.         <!--  
      21.             * handler: 枚举类型转换器, 当前使用 Ordinal, 如: Gender.MALE.ordinal(), 所以数据库应该是短整型  
      22.             * javaType: 目标枚举类型(Copy Qualified Name)  
      23.         -->  
      24.         <typeHandler  
      25.             handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"   
      26.             javaType="org.hy.ssm.model.entities.User$Gender"   
      27.             />  
      28.               
      29.         <!-- 多个枚举时配置多套 typeHandler 标签即可 -->  
      30.         <!--    
      31.         <typeHandler  
      32.             handler="org.apache.ibatis.type.EnumOrdinalTypeHandler"   
      33.             javaType="org.hy.ssm.model.entities.User$JobTitle"  
      34.             />  
      35.         -->  
      36.               
      37.     </typeHandlers>   
      38. </configuration>   
       
    • mapper 示例(UserMapper.xml)
      Xml代码  收藏代码
      1. <?xml version="1.0" encoding="UTF-8" ?>  
      2. <!DOCTYPE mapper PUBLIC   
      3.     "-//mybatis.org//DTD Mapper 3.0//EN"   
      4.     "http://mybatis.org/dtd/mybatis-3-mapper.dtd"   
      5.     >  
      6.   
      7. <!-- namespace 通常使用 DAO 接口的权限命名 -->  
      8. <mapper namespace="org.hy.ssm.dao.UserDao">  
      9.   
      10.     <!--   
      11.         * 这里能使用  resultType="user" 是因为配置了 package name="org.hy.ssm.model.entities"  
      12.         *  
      13.         * 小技巧:  
      14.         *   1. 如果查询的数据非常确认只有一条时, 可在SQL的尾部明确的指出: LIMIT 1  
      15.         *   2. 有 WHERE 的情况下, 先判断条件是否成立而后再使用, 可以提高 SQL 接口复用率  
      16.         *   以上仅个人观点   
      17.     -->  
      18.       
      19.     <!-- 指定用户账户查询用户 -->  
      20.     <select id="selectUserByAccount" parameterType="string" resultType="user">  
      21.         SELECT  
      22.             *  
      23.         FROM  
      24.             ssm_user u  
      25.         <if test="account != null and account != ''">  
      26.             <where>  
      27.                 u.account = #{account}  
      28.             </where>  
      29.         </if>  
      30.         LIMIT  
      31.             1  
      32.     </select>  
      33.   
      34. </mapper>  
       

    到目前为止必要的配置已经完成 80%,还剩下最后一项日志,本例使用的日志框架为:log4j, slf4j,配置文件(log4.properties):

    Java代码  收藏代码
    1. log4j.rootLogger=DEBUG, stdout, R  
    2.   
    3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    5. log4j.appender.stdout.layout.ConversionPattern=[catalog] [%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n  
    6.   
    7. log4j.appender.R=org.apache.log4j.RollingFileAppender  
    8. log4j.appender.R.File=/home/appadmin/logs/catalog.log  
    9. log4j.appender.R.MaxFileSize=5012KB  
    10. log4j.appender.R.MaxBackupIndex=50  
    11. log4j.appender.R.layout=org.apache.log4j.PatternLayout  
    12. log4j.appender.R.layout.ConversionPattern=[catalog][%5p] [%d{yyyy-MM-dd HH:mm:ss}] (%F:%L) %m%n  
    13.   
    14. log4j.logger.org.apache=DEBUG  
    15. log4j.logger.com.opensymphony=DEBUG  
    16. log4j.logger.org.springframework=DEBUG  
    17. log4j.logger.org.mybatis=DEBUG  
    18. log4j.logger.org.apache.commons.httpclient=ERROR  

    当前说明只能让你快速搭建项目,如果想要了解更深层次的原理及其应用则需要更多的其他相关资料。

    ssm.zip (25.3 KB)

  • 相关阅读:
    C# 文件上传下载
    javaScript的三种储存方式
    XDocument常用属性
    NoSQL
    SQLserver 的分页存储过程
    Redis Wendows安装步骤
    C#和JS获取时间
    api跨域
    以太坊开发DApp入门教程——区块链投票系统(一)
    android和java以太坊开发区块链应用使用web3j类库
  • 原文地址:https://www.cnblogs.com/xm1-ybtk/p/5112058.html
Copyright © 2020-2023  润新知