工作中我们或多或少都需要自己搭建一个框架,现在常见的Java开源框架组合方式主要为:SSH,spring+springMVC+Mybatis,SSM。

其中SSM目前无论是培训机构培训亦或是招聘。都会将会使用SSM框架作为一个重要能力来作为培训或是招聘的重要目标之一,下面我将自己自学时搭建的一个SSM项目分享出来,供初学者参阅。

1.第一步,我们需要搭建好自己的开发环境(IDE) 笔者使用的是myeclipse+tomcat+mysql

2.第二步创建一个web工程 工程名自定义,创建好了之后按照MVC设计模式创建好所有的包或文件夹(domain用于存放javabean对象,config用于存放所有的配置文件),并将SSM框架所需要的所有jar包导入到项目中

3.编写项目的配置文件(配置文件中每部分的含义,有详细的注释说明)

a.spring的配置文件application-context.xml配置文件

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:aop="http://www.springframework.org/schema/aop"
  7. xmlns:tx="http://www.springframework.org/schema/tx"
  8. xmlns:mvc="http://www.springframework.org/schema/mvc"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/beans
  11. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  12. http://www.springframework.org/schema/context
  13. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  14. http://www.springframework.org/schema/aop
  15. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  16. http://www.springframework.org/schema/tx
  17. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  18. http://www.springframework.org/schema/mvc
  19. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
  20. ">
  21. <!-- 1.启用spring的注解扫描器 -->
  22. <!--
  23. 为了加载service层中的事务能够成功被spring管理
  24. 需要设置spring的配置文件中的注解扫描器不扫描控制层,同时设置springMVC的配置文件不扫描service层。
  25. 如果不做此设置,事务无法开启
  26. -->
  27. <context:component-scan base-package="scmweb">
  28. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/><!-- expression对应的是注解对象的全类名,而不是开发人员创建的控制层的全类名 -->
  29. </context:component-scan>
  30. <!-- 2.配置数据源 -->
  31. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  32. <property name="locations">
  33. <value>classpath:config/jdbc.properties</value>
  34. </property>
  35. </bean>
  36. <bean id="c3p0datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close">
  37. <property name="driverClass" value="${jdbc.driverClassName}"></property>
  38. <property name="jdbcUrl" value="${jdbc.url}"></property>
  39. <property name="user" value="${jdbc.username}"></property>
  40. <property name="password" value="${jdbc.password}"></property>
  41. </bean>
  42. <!-- 3.配置mybatis相关的东西 -->
  43. <!-- 3.1 配置mybatis核心sqlsessionfactory -->
  44. <bean name="sqlsessionfactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  45. <!-- 配置mybatis的主配置文件 -->
  46. <property name="configLocation" value="classpath:config/mybatis.xml"></property>
  47. <property name="dataSource" ref="c3p0datasource"></property>
  48. <!-- 设置自动将指定包下所有的xxxMapper.xml文件引入mybatis -->
  49. <property name="mapperLocations" value="classpath:scmweb/log/scmdao/*.xml"></property>
  50. </bean>
  51. <!-- 3.2 配置sqlSessionTemplate持久化模版(包含了增删查改的模版方法,
  52. 如果不配置的话需要利用sqlsessionfactory来生成sqlsession对象实现对数据库的操作)
  53. -->
  54. <!--       <bean name="sqlSessionTemplate"  class="org.mybatis.spring.SqlSessionTemplate"> -->
  55. <!--         <constructor-arg index="0" ref="sqlsessionfactory"></constructor-arg> -->
  56. <!--       </bean> -->
  57. <!-- 4.配置事务相关得东西 -->
  58. <!-- 4.1 配置事务管理器 -->
  59. <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  60. <property name="dataSource" ref="c3p0datasource"></property>
  61. </bean>
  62. <!-- 4.2 配置事务的通知  配置为那种类型的方法加上事务-->
  63. <tx:advice id="tx" transaction-manager="transactionManager">
  64. <tx:attributes>
  65. <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/><!-- 设置了rollback-for属性  那么只要出现异常(无论是否被手动捕获)都会回滚 -->
  66. <tx:method name="update*" propagation="REQUIRED"/>
  67. <tx:method name="insert*" propagation="REQUIRED"/>
  68. <tx:method name="*"  propagation="SUPPORTS"/>
  69. </tx:attributes>
  70. </tx:advice>
  71. <!-- 4.3 配置事务的切面 -->
  72. <aop:config>
  73. <aop:pointcut id="acut"  expression="execution(* scmweb.log.scmservice.*.*(..))" />
  74. <aop:advisor advice-ref="tx" pointcut-ref="acut"/><!-- 这里应该是用pointcut-ref属性  而不是pointcut关联切入点 -->
  75. </aop:config>
  76. <!--
  77. 配置mybatis的转换器,
  78. 目的:通过该配置,可以使得mybatis.xml文件中不必再关联实体映射配置文件(xxxMapper.xml)了,
  79. 并最终实现了dao层只需要 接口+xxxMapper.xml配置文件
  80. 原理:对于在basePackage设置的包(包括子包)下的接口类,扫描所有xxxMapper.xml文件,如果某个文件的名称空间是该接口的全名,
  81. 那么存在与名称空间相同的接口将被转换成spring的BEAN,在调用 的地方通过@Autowired方式将可以注入接口实例,
  82. 我们在service实现层调用dao接口的方法时,则会自动将接口的全类名当作名称空间,方法名当作sql语句的id值,来执行
  83. 对应的sql语句,并返回相应结果(因此daoimpl层就没有作用了)
  84. 结束配置之后 3.2步便可以不再配置了
  85. -->
  86. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  87. <!--         <property name="sqlSessionFactory" ref="sqlsessionfactory" /> 该配置不用手动配,否则会报错,spring底层会自动注入-->
  88. <property name="basePackage" value="scmweb.log.scmdao"/>
  89. </bean>
  90. </beans>

b.jdbc.property配置文件

[html] view plain copy

  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc\:mysql\://localhost\:3306/scm?useUnicode\=true&characterEncoding\=UTF-8
  3. jdbc.username=root
  4. jdbc.password=root

c.mybatis.xml配置文件

[html] view plain copy

  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. <typeAliases>
  6. <!--
  7. 通过package标签设置实现了将某一个包下的所有的实体类都以简单类名作为别名的设置,
  8. 这样避免了分别为每一个实体类设置别名的麻烦(配置完成之后,xxxMapper.xml中不用再写全类名了直接写别名即可)
  9. -->
  10. <package name="scmweb.log.domain"/>
  11. </typeAliases>
  12. <!-- 这种方式在这里引入 xxxMapper.xml文件比较麻烦,且有多少个映射文件就要引入多少次
  13. 为了解决这个事情,可以在sqlSessionFactory的配置中,设置扫描放置xxxMapper.xml文件的包
  14. 这样可以自动扫描包下面的所有实体映射文件
  15. -->
  16. <!--     <mappers>  -->
  17. <!--             <mapper resource="scmweb/log/domain/emploeemapper.xml"/>  -->
  18. <!--     </mappers> -->
  19. </configuration>

d.springMVC.xml配置文件

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="
  8. http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans-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/context
  13. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  14. ">
  15. <!-- 设置annotation-driven注解之后,便支持了返回json格式数据到前台页面 -->
  16. <mvc:annotation-driven/>
  17. <context:component-scan base-package="scmweb">
  18. <!--         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> -->
  19. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
  20. </context:component-scan>
  21. <!-- 映射器 与xml形式的解析器不一样-->
  22. <!--       <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping.class"></bean> -->
  23. <!-- 适配器 与xml形式的解析器不一样-->
  24. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
  25. <!-- xml版的视图解析器和注解版的视图解析器是一样的 -->
  26. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  27. <!-- 由于这里是为了视图通过逻辑地址访问,因此这里视图解析器为必选配置 -->
  28. <!-- 配置路径前缀 -->
  29. <property name="prefix" value="/WEB-INF/view/"></property>
  30. <!-- 配置路径后缀 -->
  31. <property name="suffix" value=".jsp"></property>
  32. </bean>
  33. <!--
  34. 当 springMVC配置文件中  通过注解引入了spring的配置文件时,则web.xml文件中便可以不配置spring的xml配置文件了
  35. <import resource="classpath:config/application-context.xml"/>
  36. -->
  37. </beans>

e.web.xml配置文件中需要配置spring和springMVC的相关内容

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <display-name></display-name>
  8. <welcome-file-list>
  9. <welcome-file>index.jsp</welcome-file>
  10. </welcome-file-list>
  11. <!-- 配置spring -->
  12. <listener>
  13. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  14. </listener>
  15. <!-- 当 springMVC配置文件中  通过注解引入了spring的配置文件时,则可以配置spring的xml配置文件-->
  16. <context-param>
  17. <param-name>contextConfigLocation</param-name>
  18. <param-value>classpath:config/application-context.xml</param-value>
  19. </context-param>
  20. <!-- 配置springMVC -->
  21. <servlet>
  22. <servlet-name>DispatcherServlet</servlet-name>
  23. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  24. <init-param>
  25. <param-name>contextConfigLocation</param-name>
  26. <param-value>classpath:config/springMVC.xml</param-value><!-- 该配置文件一定是包含springMVC所有属性配置得配置文件 -->
  27. </init-param>
  28. </servlet>
  29. <servlet-mapping>
  30. <servlet-name>DispatcherServlet</servlet-name>
  31. <url-pattern>*.action</url-pattern>
  32. </servlet-mapping>
  33. <filter>
  34. <filter-name>CharacterEncodingFilter</filter-name>
  35. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  36. <init-param>
  37. <param-name>encoding</param-name>
  38. <param-value>UTF-8</param-value>
  39. </init-param>
  40. </filter>
  41. <filter-mapping>
  42. <filter-name>CharacterEncodingFilter</filter-name>
  43. <url-pattern>/*</url-pattern>
  44. </filter-mapping>
  45. <!-- 配置springMVC结束 -->
  46. </web-app>

配置到这一步之后,会发现,现在需要手动创建javabean实例、dao层的接口以及javabean对应表格的mapper配置文件,因此,这里用到了一个mybatis逆向工程的插件,用于自动生成上述三个部分

4.配置mybatis的逆向工程插件

a.首先需要在myeclipse的安装目录中添加逆向工程

首先找见安装目录中的MyEclipse 10下创建add-plugins\mybatis-generater文件夹,然后将逆向工程压缩包解压之后的两个文件夹放到改目录下

D:\myprogram1\myeclipse10\MyEclipse 10\add-plugins\mybatis-generater

其次在myeclipse的安装目录D:\myprogram1\myeclipse10\MyEclipse 10\dropins下创建mybatis.link文件(后缀为.link),文件内容为:path=D:\\myprogram1\\myeclipse10\\MyEclipse 10\\add-plugins\\mybatis-generater

重启myecplise,将中generatorConfig.xml添加到项目中

b.generatorConfig.xml配置文件

[html] view plain copy

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <!--
  6. mybatis的逆向工程插件,用于帮助开发人员自动生成数据库中指定表格所对应的:
  7. javabean、xxxMapper.xml文件(javabean与表格的映射文件)和dao层的接口类
  8. 这样开发人员不用自己去一张一张的建表格对应的各种类和配置文件了。
  9. 当配置结束之后,右击文件名会有generator Mybatis/Ibatis artifacts选项   点击即可顺利运行
  10. 执行结果为:数据库中一张表对应:一个javabean,一个dao接口对象,一个xxxMapper.xml文件
  11. -->
  12. <generatorConfiguration>
  13. <!--
  14. <properties resource="conn.properties" />
  15. -->
  16. <!-- 处理1 -->
  17. <classPathEntry location="E:\mybatis\mysql-connector-java-5.1.7-bin.jar"/>
  18. <!-- 指定运行环境是mybatis3的版本 -->
  19. <context id="testTables" targetRuntime="MyBatis3">
  20. <commentGenerator>
  21. <!-- 是否取消注释 -->
  22. <property name="suppressAllComments" value="true" />
  23. <!-- 是否生成注释代时间戳 -->
  24. <property name="suppressDate" value="true" />
  25. </commentGenerator>
  26. <!-- 处理2   jdbc 连接信息 -->
  27. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  28. connectionURL="jdbc:mysql://localhost:3306/scm?useUnicode=true&characterEncoding=UTF-8" userId="root" password="root">
  29. </jdbcConnection>
  30. <!--处理3   targetPackage指定模型(即表所对应的实体类)生成在哪个包 ,targetProject指定项目的src目录,-->
  31. <javaModelGenerator targetPackage="scmweb.log.domain"
  32. targetProject="SCM/src">
  33. <!-- 去除字段前后空格 -->
  34. <property name="trimStrings" value="false" />
  35. </javaModelGenerator>
  36. <!--处理4   配置xxxMapper.xml文件生成到项目中哪个包中 -->
  37. <sqlMapGenerator targetPackage="scmweb.log.scmdao"
  38. targetProject="SCM/src" />
  39. <!-- 处理5   配置dao接口生成信息(由mybatis逆向工程生成的dao接口类全是以Mapper结尾的)-->
  40. <javaClientGenerator type="XMLMAPPER" targetPackage="scmweb.log.scmdao" targetProject="SCM/src" />
  41. <!-- 指定要为数据库中哪些表格生成对应的接口对象和实体类(javabean)以及对应的xxxMapper.xml文件
  42. 切忌一张表格只能自动生成一次,如果多次生成的话,会造成生成的事物内部属性一直重复
  43. -->
  44. <table tableName="account" domainObjectName="Account"/>
  45. <table tableName="supplier" domainObjectName="Supplier"/>
  46. </context>
  47. </generatorConfiguration>

当配置结束之后,右击文件名会有generator Mybatis/Ibatis artifacts选项   点击即可顺利运行
 执行结果为:数据库中一张表对应:一个javabean,一个dao接口对象,一个xxxMapper.xml文件

自己搭建一个SSM框架相关推荐

  1. 教你从零搭建一个SSM框架

    1.新建Maven项目 1.1新建项目,并起名为SSM-Test 1.2 项目结构如图 2.添加Web支持 若添加成功,项目结构如图: 3.添加tomcat,启动并测试 运行成功截图: 4.建立基础的 ...

  2. 怎样从0开始搭建一个测试框架_0

    怎样从0开始搭建一个测试框架_0 在开始之前,请让我先声明几点: 这个"从0开始"并不是说你不需要任何基础知识,而是指框架从无到有的过程,要开始搭建还是需要一定基础 请确保你已经掌 ...

  3. 【前端】搭建一个VUE框架

    大伙好,最近狠狠焦虑了,因为想搞前端技术岗找暑假实习担心自己能力不够,还是希望如果有同学大学期间就决定毕业找工作的话,一定要抓住机会大学期间狠狠锻炼本领噢,不要虚度光阴 说了点题外话,回到正题,焦虑的 ...

  4. 如何搭建一个Spring框架超详细

    如何搭建一个Spring框架,首先我们要先了解Spring的核心构成部分 1.Spring 的构成 IOC 控制反转 spring 框架最核心的部分 DAO spring 对 访问数据库的支持 MVC ...

  5. idea ssm框架 mysql_idea搭建简单ssm框架的最详细教程(新)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...

  6. springMVC——SSM整合(IDEA 搭建简单 ssm 框架最详细最简单教程)

    为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 以下 ...

  7. 简单搭建一个SSM项目(一)

    简单搭建一个用户管理的SSM项目框架,虽然也能用servlet+jdbc搭建更简单的,不过个人感觉工作中更多用的ssm框架项目,这里就简单用ssm来搭建需要的项目吧. 准备工具:eclipse.jdk ...

  8. 快速学习利用Idea构建一个SSM框架项目

    This article is transmitted to gethub above. Welcome to download and learn  前往gethub获取此项目-> 本文章同步 ...

  9. springboot入门(一)--快速搭建一个springboot框架

    原文出处 前言 在开始之前先简单介绍一下springboot,springboot作为一个微框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框 ...

最新文章

  1. golang中的fallthrough
  2. VC++ 下使用QT初步入门学习
  3. 找不到python2018解释器_python解释器安装教程的方法步骤
  4. HBuilder X格式化美化代码快捷键
  5. TOJ 4393 Game
  6. GetModuleHandle(NULL)获取当前DLL模块基址?
  7. hql Hibernate.gethibernatetemplate()
  8. python11_Python11,文件操作
  9. 在加州最古老的监狱教课是种什么样的体验?
  10. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块...
  11. 建立个人Maven仓库
  12. Java中什么时候使用extends,什么时候使用implements?
  13. Excel写批量代码(一)
  14. 多任务学习 Multi-task learning
  15. k-平均算法(k-means算法)(k均值算法)例题
  16. (内附独家PPT)李岩:CynosDB高可用系统介绍
  17. Minimum Snap闭式求解相关公式推导
  18. html5个人记账网页源代码,蓝色的cms企业记账管理后台模板源码
  19. linux内核5.8.1,Linus Torvalds宣布大规模更新Linux内核5.8
  20. 火狐浏览器Firefox Firebug使用方法

热门文章

  1. 手机怎么把PDF转成Word?这个方法快收下
  2. 互联网服务器攻防秘笈
  3. 移动OA系统,企业智慧互联办公快捷无忧
  4. MAStudio三步打造移动OA系统开发生态链
  5. 风云编程python基础语法(3)
  6. solaris oracle zfs 调优,为数据库产品进行 ZFS 调优
  7. Python数据解析的三种方式
  8. 什么摄像机能让1000多家系统服务商、设备商驻足?
  9. 华为设备配置篇——DHCP配置
  10. 0510-我就是个傻子,铁矿螺纹热卷玻璃涨停,以后再这样不要走了,拿住你的单子,螺纹高开一百点。