SSM框架整合

SSM框架整合

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。

Spring

Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。

Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。

SpringMVC

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

Mybatis

Mybatis是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。Mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。

(摘自百度)


现在使用eclipse作为开发工具;maven作为项目管理工具;使用逆向工程连接数据库,生成表对应的实体类、mapper接口以及接口映射的sql文件,搭建一个SSM纯净版的web项目,供大家学习交流。

步骤如下:

1.   导入逆向工程,更改相关配置,运行逆向工程项目,生成项目实体类、mapper接口以及接口映射的sql文件;

2.   创建maven工程的web项目,通过pom文件导入和管理相应的jar包;

3.   编写web.xml,在web.xml中加载Spring配置文件(非必须,可整合在spring整合mybatis的配置文件中)、spring整合mybatis的配置文件、Mybatis的配置文件(非必须,可整合在spring整合mybatis的配置文件中)、SpringMVC配置文件,以及数据源文件和日志文件的配置;

4.   编写jsp页面代码;

5.   编写后端java代码,如controller、service层(dao层逆向工程生成);

6.   项目运行并访问。

现在按以上步骤进行项目搭建

一、导入逆向工程,更改相关配置,运行逆向工程项目,生成项目实体类、mapper接口以及接口映射的sql文件;

逆向工程可在mybatis官网下载,如下


相关配置的修改


运行后的目录结构


二、创建maven工程的web项目,通过pom文件导入和管理相应的jar包;

创建项目后的目录结构


pom文件依赖的管理,以及tomcat插件、编译插件的配置

pom.xml配置,相关jar的导入和管理,tomcat插件和编译插件

    <build>

       <finalName>maven01</finalName>

       <plugins>

           <plugin>

               <groupId>org.apache.tomcat.maven</groupId>

                      <artifactId>tomcat7-maven-plugin</artifactId>

                      <version>2.2</version>

                      <configuration>

                            <port>8080</port>

                            <path>/ssmtest001</path>

                      </configuration>

           </plugin>

           <plugin>

                      <groupId>org.apache.maven.plugins</groupId>

                      <artifactId>maven-compiler-plugin</artifactId>

                      <version>3.2</version>

                    <configuration>

                        <source>1.7</source>

                        <target>1.7</target>

                    </configuration>

                 </plugin>

       </plugins>

    </build>

</project>

三、编写web.xml,在web.xml中加载Spring配置文件(非必须,可整合在spring整合mybatis的配置文件中)、spring整合mybatis的配置文件、Mybatis的配置文件(非必须,可整合在spring整合mybatis的配置文件中)、SpringMVC配置文件,以及数据源文件和日志文件的配置;

web.xml的配置,注意加载配置文件时classpath的配置  

  <!-- Spring和mybatis的配置文件 -->

  <context-param>

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

<param-value>classpath:spring/spring-mybatis.xml,classpath:spring/applicationContext.xml</param-value>

  </context-param>


  <!-- Spring装配xml文件监听器 -->

  <listener>

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

  </listener>



  <context-param>

     <param-name>log4jConfigLocation</param-name>

     <param-value>classpath:log4j.properties</param-value>

  </context-param>



  <context-param>

     <param-name>log4jRefreshInterval</param-name>

     <param-value>10000</param-value>

  </context-param>



  <listener>

     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

  </listener>



  <filter>

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

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

  </filter-mapping>




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

      </init-param>


      <load-on-startup>1</load-on-startup>

  </servlet>


  <servlet-mapping>

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

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

  </servlet-mapping>

spring配置文件applicationContent.xml

      <!--扫描包Service实现类 -->

    <context:component-scanbase-package="com.it.service"></context:component-scan>


</beans>

spring整合mybatis的配置文件spring-mybatis.xml

      <!--加载数据库配置文件 -->

      <context:property-placeholderlocation="classpath:db.properties"/>


      <!--引入配置文件,方式二 -->  

    <!-- <beanid="propertyConfigurer"  

       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

        <propertyname="location" value="classpath:db.properties"/>  

    </bean>  -->


      <!--配置连接池 -->

      <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"

           destroy-method="close">

           <propertyname="driverClassName" value="${jdbc.driver}" />

           <propertyname="url" value="${jdbc.url}" />

           <propertyname="username" value="${jdbc.username}" />

           <propertyname="password" value="${jdbc.password}" />

           <!--初始化连接大小 -->  

        <propertyname="initialSize"value="${initialSize}"></property>  


        <propertyname="maxActive"value="${maxActive}"></property>  


        <propertyname="maxIdle"value="${maxIdle}"></property>  


        <propertyname="minIdle"value="${minIdle}"></property>  


        <propertyname="maxWait"value="${maxWait}"></property> 

      </bean>


      <!--配置SqlSessionFactory mybatis工厂对象 -->

      <beanid="sqlSessionFactoryBean"class="org.mybatis.spring.SqlSessionFactoryBean">

           <propertyname="dataSource" ref="dataSource"/>

           <propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"/>

           <!--自动扫描mapping.xml文件 -->  

        <propertyname="mapperLocations"value="classpath:com/it/mapper/*.xml"></property> 

      </bean>



      <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

           <propertyname="basePackage" value="com.it.mapper"/>

      </bean>


      <!--配置事务 -->

      <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

           <propertyname="dataSource" ref="dataSource" />

      </bean>


      <!--开启注解事务 -->

      <tx:annotation-driventransaction-manager="transactionManager"/>


mybatis的配置文件SqlMapConfig.xml  

      <!--打印SQL语句 -->

    <settings>

        <settingname="logImpl" value="STDOUT_LOGGING"/>

    </settings>

      <typeAliases>

           <!--指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->

           <packagename="com.it.pojo"/>

      </typeAliases>


    <!-- <plugins>

        <plugininterceptor="com.github.pagehelper.PageInterceptor">

 分页参数合理化

           <property name="reasonable" value="true"/>

       </plugin>

    </plugins> -->


springmvc的配置文件,springmvc.xml       


       <context:component-scan base-package="com.it.controller"/>



<!--        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->


<!--        <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->


       <mvc:annotation-driven />





        <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">


        <property name="prefix"value="/WEB-INF/jsp/"/>

        <property name="suffix"value=".jsp"/>

       </bean>




         <bean id="multipartResolver"    

       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   


             <property name="defaultEncoding" value="utf-8"/>    


             <property name="maxUploadSize"value="10485760000" />    


             <property name="maxInMemorySize"value="40960" />    


             <property name="resolveLazily"value="true"/>

         </bean>   



db.properties数据源的配置

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/xxxpassword=root

#定义初始连接数  

initialSize=0  #定义最大连接数  

maxActive=20  #定义最大空闲  

maxIdle=20  #定义最小空闲  

minIdle=1  #定义最长等待时间  

maxWait=60000 

log4j.properties日志文件的配置

log4j.rootLogger=INFO,Console,File 

#定义日志输出目的地为控制台  

log4j.appender.Console=org.apache.log4j.ConsoleAppender 

log4j.appender.Console.Target=System.out 

#可以灵活地指定日志输出格式,下面一行是指定具体的格式  

log4j.appender.Console.layout= org.apache.log4j.PatternLayout  

log4j.appender.Console.layout.ConversionPattern=[%c]- %m%n  

#文件大小到达指定尺寸的时候产生一个新的文件  

log4j.appender.File =org.apache.log4j.RollingFileAppender  

#指定输出目录  

log4j.appender.File.File= logs/ssm.log  

#定义文件最大大小  

log4j.appender.File.MaxFileSize= 10MB  

# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  

log4j.appender.File.Threshold= ALL  

log4j.appender.File.layout= org.apache.log4j.PatternLayout  

log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

四、编写后端代码

编写controller


项目结构

五、项目启动,访问

启动采用maven中配置的tomcat插件启动

项目右键,执行,run as,maven configuration...

输入命令,tomcat:run


控制台日志输出

访问


项目下载链接

链接:https://pan.baidu.com/s/1PMW_b7TszulnTTD0dR_afw 

提取码:x6n0 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容