首页 > 编程语言 > 详细

SSM整合:springmvc + spring + mybatis

时间:2017-02-13 18:43:21      阅读:217      评论:0      收藏:0      [点我收藏+]

1)用maven工程创建 先加包:

  

<properties>

           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

           <c3p0.version>0.9.1</c3p0.version>

           <spirng.version>4.3.3.RELEASE</spirng.version>

      </properties>

      <dependencies>

           <dependency>

                 <groupId>javax.servlet</groupId>

                 <artifactId>javax.servlet-api</artifactId>

                 <version>3.0.1</version>

           </dependency>

<dependency>

                 <groupId>c3p0</groupId>

                 <artifactId>c3p0</artifactId>

                 <version>${c3p0.version}</version>

            </dependency>

           <!--1、 spring相关的包 -->

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-core</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-context</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-jdbc</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-beans</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-web</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-webmvc</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-expression</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

           <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-orm</artifactId>

                 <version>${spirng.version}</version>

           </dependency>

 

           <!--aspectjweaver包:面向切面要用到的包 -->

           <dependency>

                 <groupId>org.aspectj</groupId>

                 <artifactId>aspectjweaver</artifactId>

                 <version>1.8.5</version>

           </dependency>

 

           <!--单元测试 -->

           <dependency>

                 <groupId>junit</groupId>

                 <artifactId>junit</artifactId>

                 <version>4.12</version>

           </dependency>

 

           <!-- https://mvnrepository.com/artifact/jstl/jstl -->

           <dependency>

                 <groupId>jstl</groupId>

                 <artifactId>jstl</artifactId>

                 <version>1.2</version>

           </dependency>

           <!-- mybatis相关的包 -->

 

           <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->

           <dependency>

                 <groupId>org.mybatis</groupId>

                 <artifactId>mybatis</artifactId>

                 <version>3.4.1</version>

           </dependency>

           <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->

           <dependency>

                 <groupId>org.mybatis</groupId>

                 <artifactId>mybatis-spring</artifactId>

                 <version>1.3.0</version>

           </dependency>

 

 

      </dependencies>

 

 

  2) 加相关的配置文件

   技术分享

   a)applicationContext.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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
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://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

<!-- 引入属性文件,config.properties位于src/main/resources目录下 -->
<context:property-placeholder location="classpath:config.properties" />

<context:component-scan base-package="cn.clp.mapper,cn.clp.service.impl"></context:component-scan>

 

<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${url}" />
<property name="user" value="${jdbc_user}" />
<property name="password" value="${jdbc_pwd}" />
<property name="driverClass" value="${driver}"></property>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 加载mybatis.cfg.xml文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名 -->
<property name="typeAliasesPackage" value="cn.clp.model"></property>
</bean>

<!-- 自动扫描所有的Mapper接口与文件 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.clp.mapper"></property>
</bean>

<!-- 事务的配置 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="txManager">
<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.clp.service.impl.*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>

</bean>

b)db.properties:

   

#hibernate.dialect=org.hibernate.dialect.OracleDialect
#driver=oracle.jdbc.driver.OracleDriver
#validationQuery=SELECT 1 FROM DUAL
#url=jdbc:oracle:thin:@127.0.0.1:1521:XE
#jdbc_user=oa01
#jdbc_pwd=123456

#hibernate.dialect=org.hibernate.dialect.MySQLDialect
driver=com.mysql.jdbc.Driver
validationQuery=SELECT 1
url=jdbc:mysql://localhost:3306/xsp?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_user=root
jdbc_pwd=123456

#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#validationQuery=SELECT 1
#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/sy
#jdbc_username=sa
#jdbc_password=123456

 c)log4j.properties

   

### set log levels ###
log4j.rootLogger =debug,stdout,D,E

### \u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n

### \u8F93\u51FA\u5230\u65E5\u5FD7\u6587\u4EF6 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =c:/log/site.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

d)springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">

<context:component-scan base-package="cn.clp.controller"></context:component-scan>

<mvc:annotation-driven></mvc:annotation-driven>

<mvc:resources mapping="/css/**" location="/css/"
cache-period="31556926" />
<mvc:resources mapping="/js/**" location="/js/"
cache-period="31556926" />
<mvc:resources mapping="/images/**" location="/images/"
cache-period="31556926" />
<mvc:resources mapping="/script/**" location="/script/"
cache-period="31556926" />
<mvc:resources mapping="/style/**" location="/style/"
cache-period="31556926" />
<mvc:resources mapping="/foodphoto/**" location="/foodphoto/"
cache-period="31556926" />
<mvc:resources mapping="/upload/**" location="/upload/"
cache-period="31556926" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 开启aop,对类代理 -->
<aop:config proxy-target-class="true"></aop:config>
<!-- 开启shiro注解支持 -->
<bean
class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>

<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的总大小不能超过1M。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="1048576" />
<!-- 最大内存大小 (10240) -->
<property name="maxInMemorySize" value="40960" />
</bean>

<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
<prop
key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
<!--
<mvc:interceptors>

<mvc:interceptor>
<mvc:mapping path="/front/**" />
<bean class="cn.clp.interceptor.FrontSecurityInterceptor"></bean>
</mvc:interceptor>

<mvc:interceptor>
<mvc:mapping path="/manager/**" />
<bean class="cn.clp.interceptor.BackSecurityInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
-->

</bean>
</beans>

 e)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"/>
<!-- 延迟加载机制: -->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
<!-- 和startPage中的pageNum效果一样-->
<property name="offsetAsPageNum" value="true"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->
<property name="pageSizeZero" value="true"/>
<!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
<!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
<!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
<property name="reasonable" value="false"/>
<!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
<!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
<!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
<!-- 不理解该含义的前提下,不要随便复制该配置 -->
<property name="params" value="pageNum=start;pageSize=limit;"/>
<!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
<property name="returnPageInfo" value="check"/>
</plugin>
</plugins>

</configuration>

 

  3)跟以前一样,创建好dao,service

 技术分享

 

 

  4)控制层代码UserController

    

@Controller

@RequestMapping("/user")

public class UserController {

      @Resource

      private IUserService userService;

     

    @RequestMapping("/save")

      public String save(Userbean user){

           System.out.println("保存");

           userService.save(user);

           return "redirect:query";

      }

   

    @RequestMapping("/query")

      public String query(Map<String, Object> map){

           System.out.println("查询");

           List<Userbean> list=userService.queryAll();

           map.put("userlist", list);

           return "user/userlist";

          

      }

}

 

  5)web.xml配置文件

 

<!-- 前端控制器 -->

      <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:spring-mvc.xml</param-value>

           </init-param>

      </servlet>

      <!-- 1).action 2)/*: 3)/: -->

      <servlet-mapping>

           <servlet-name>springmvc</servlet-name>

           <url-pattern>*.action</url-pattern>

      </servlet-mapping>

      <servlet-mapping>

           <servlet-name>springmvc</servlet-name>

           <url-pattern>/</url-pattern>

      </servlet-mapping>

 

      <listener>

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

      </listener>

      <context-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>classpath:applicationContext.xml</param-value>

      </context-param>

 

      <!-- spring框架提供的字符集过滤器 -->

      <!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题 -->

      <filter>

           <filter-name>encodingFilter</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>encodingFilter</filter-name>

           <url-pattern>/*</url-pattern>

      </filter-mapping>

 

  

SSM整合:springmvc + spring + mybatis

原文:http://www.cnblogs.com/sunachclp/p/6394799.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!