一、创建一个maven的web项目,导入相关的依赖jar包
二、预先搭建好springmvc的框架,这里要创建一个springmvc.xml的配置文件,这个配置文件中
1.先开启扫描,让他扫描controller的注解@controller,可以设置只扫描这个控制器注解,
2.开启spring对mvc的支持,就是配置映射器和适配器
3.配置视图解析器
4.配置过滤掉静态资源
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--配置扫描器 只扫描控制器controller--> <context:component-scan base-package="com.music"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"> <property name="prefix" value="/WEB_INF/jsp"></property> <property name="suffix" value=".jsp"></property> </bean> <!--过滤静态资源--> <!--<mvc:resources mapping="/js/**" location="/js/"></mvc:resources> <mvc:resources mapping="/css/**" location="/css/"></mvc:resources> <mvc:resources mapping="/images/**" location="/images/"></mvc:resources>--> <!--开启spring对springmvc的支持--> <mvc:annotation-driven></mvc:annotation-driven> </beans>
三、配置web.xml文件
这里先配置就是说springmvc框架所需要的,dispacherServlet的一个前端控制器,还需要把之前我们配置 的springmvc .xml文件加载进来让我们配置的扫描器能够扫描起到作用,如果有需要的话还要对我们的传输的数据进行编码格式的过滤,就需要再我们添加的控制器的上边再加上一个过滤器,(为什么要在上边呢,因为web.xml文件好像有规定这些配置的位置防止先后的顺序)
springmvc.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--解决中文乱码的 过滤器 监听器要在上边--> <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> <!--配置前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加载指定的配置文件springmvc.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
注:这里可以正常的测试一下,简单的写几页面,让它能在控制器的作用下正常的跳转就说明,这个框架搭建的没有问题
三、搭建一个mybatis的框架
正常来说,mybatis的框架我们需要编写mybatis-config.xml文件,如果要使用xml配置的形式就还需要配置,映射的xml文件,注解的会就不用了,后边会说他们的区别,我们的mybatis文件的配置,
1.我们需要先配置一个配置文件,然后再把这个配置文件用properties标签加载到我们的这个mybatis文件当中,配置全局映射的级别和开启缓存,下边可以配置实体类的别名,在下边就是配置上给们的数据库的连接的环境,事务的级别,要不要 使用连接池,用mappers标签来配置我们的映射文件,这个文件在后边的整合spring的时候就不需要了,所以我们就在这强掉一下mappers中有几个属性的使用区别
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--配置扫描器 但是只让他扫描service层和dao层 无需扫描注解--> <context:component-scan base-package="com.music"> <!--exclude不扫描--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--整合mybatia和spring--> <!--配置连接池--> <!--配置数据源 DriverManagerDataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql:///song?serverTimezone=GMT%2B8"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <!--配置sqlsessionFactory的工厂--> <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="factoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- ****************目录不一致的情况 要在这里添加这没一条配置******************************************** --> <!-- *通配符来匹配 **任意文件夹下的 *任意以xml结尾的文件 --> <!-- <property name="mapperLocations" value="classpath:com/music/**/*.xml"></property>--> <!-- ************************************************************ --> </bean> <!--配置dao下的接口 扫描 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="MapperScannerConfig"> <property name="basePackage" value="com.music.dao"></property> </bean> </beans>
这样还不算完,因为此时我们的applicationcontext。xml文件仍然没有和我们的整个spring的框架整合起来,没有任何的东西将我们配置的文件加载到web容器中,
所以我们就需要考虑如何将我们的文件加载进来呢?我们可以通过一个sevletcontext的域对象来加载,因为这个域对象的生命周期和我们的服务器的生命周期一致,
我们可以通过他的init的方法来配置加载我们的文件,所以我们呢要在web。xml文件中监听这个对象的创建,
web。xml文件修改如下
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--设置配置文件的路径--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--解决中文乱码的 过滤器 监听器要在上边--> <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> <!--配置spring的监听器 这个监听器他默认就只加载WEB_INF下的applicationContest.xml的文件--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--配置前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加载指定的配置文件springmvc.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
此时我们就就将三个框架整合差不多了,就差个事务的控制,我们一鼓作气,配完它!!!
我们就只需要在applicationContext。xml文件中去加上事务的控制就欧克了
1.开启一个事务管理器
2.配置这个事务的管理器通知
3.织入事务到代码中
添加如下的代码
<!--配置spring框架声明式事务处理--> <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!--配置事务通知--> <tx:advice id="txadvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="find*" read-only="true" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!--织入事务--> <aop:config> <aop:pointcut id="txpoint" expression="execution(* com.music.service.Impl.*.*(..))"/> <aop:advisor advice-ref="txadvice" pointcut-ref="txpoint"></aop:advisor> </aop:config>
编写一个查询和保存的功能测试一下,这就初步完成了ssm框架的整合,
开心
高兴
nice
2333