在工作实际开发中,一直用Struts+Spring+MyBatis,虽然算的上SSM,但和SpringMVC + Spring + MyBatis稍有差别。基于学习新技术和简单入门的考虑,便依葫芦画瓢完成了『SSM-CRUD』项目,由于项目篇幅较长,会分成多篇展示。
本文主要讲解项目概况及项目中的主要配置文件
先上个效果图,主要实现的是查询功能:
技术点
基础框架-SSM(SpringMVC+Spring+MyBatis)
数据库-MySQL
前端框架-bootstrap快速搭建简洁美观的界面
项目的依赖管理-Maven
分页-pagehelper
逆向工程-MyBatis Generator
功能点
分页显示
数据校验 : jquery前端校验+JSR303后端校验
ajax请求
Rest风格的URI:使用HTTP协议请求方式的动词,来表示对资 源的操作(GET(查询),POST(新增),PUT(修改),DELETE (删除))
基础环境搭建
创建一个maven工程
引入项目依赖的jar包 :spring 、 springmvc 、 mybatis 、 数据库连接池,驱动包 、 其他(jstl,servlet-api,junit)
引入bootstrap前端框架
编写ssm整合的关键配置文件 : web.xml,spring,springmvc,mybatis,使用mybatis的逆向工程生成对应的bean以 及mapper
测试mapper
重要代码说明
web.xml
主要是配置web项目启动时加载的信息,加载顺序是:context-param -> listener -> filter -> servlet。
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
<servlet>
<servlet-name>dispatcherServletservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>dispatcherServletservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<filter>
<filter-name>CharacterEncodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>utf-8param-value>
init-param>
<init-param>
<param-name>forceRequestEncodingparam-name>
<param-value>trueparam-value>
init-param>
<init-param>
<param-name>forceResponseEncodingparam-name>
<param-value>trueparam-value>
init-param>
filter>
<filter-mapping>
<filter-name>CharacterEncodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<filter>
<filter-name>HiddenHttpMethodFilterfilter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
Spring的配置文件:applicationContext.xml
<context:component-scan base-package="com.tyron">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>
<context:property-placeholder location="classpath:dbconfig.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.jdbcUrl}">property>
<property name="driverClass" value="${jdbc.driverClass}">property>
<property name="user" value="${jdbc.user}">property>
<property name="password" value="${jdbc.password}">property>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml">property>
<property name="dataSource" ref="dataSource">property>
<property name="mapperLocations" value="classpath:mapper/*.xml">property>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.tyron.crud.dao">property>
bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
<constructor-arg name="executorType" value="BATCH"/>
bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource">property>
bean>
<aop:config>
<aop:pointcut expression="execution(public * com.tyron.crud.service..*(..))" id="txPoint"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
<tx:method name="get*" read-only="true"/>
tx:attributes>
tx:advice>
Spring MVC的配置文件:dispatcherServlet-servlet.xml
有两种配置方式:①Spring默认配置文件为“/WEB-INF/[servlet名字]-servlet.xml”
②配置在classpath下,指定配置名(springMVC.xml):
dispatcherServlet-servlet.xml
<context:component-scan base-package="com.tyron" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/">property>
<property name="suffix" value=".jsp">property>
bean>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
MyBatis的配置文件:mybatis-config.xml
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
settings>
<typeAliases>
<package name="com.tyron.crud.bean"/>
typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
plugin>
plugins>
说明
①此文是SSM的简单入门,上面代码均为此项目重要的配置文件,加深印象的同时有助于更好的理解其中的原理;
②在简单实践的基础上,能帮助我们更好的理解SpringMVC的执行原理,强烈推荐跟着开涛学SpringMVC的系列教程(http://jinnianshilongnian.iteye.com/blog/1752171);
③基本配置完成,下一篇会讲解逆向工程-MyBatis Generator、前端框架-bootstrap的简单使用、MyBatis分页工具-pagehelper的使用;
④如果也想试试的话,可在公众号后台回复『SSM』可获取源码及全套视频,也可以直接浏览http://study.163.com/course/courseMain.htm?courseId=1003862031,在线观看。