美文网首页
ssm 框架总结

ssm 框架总结

作者: 其实我很菜啊 | 来源:发表于2018-01-01 11:49 被阅读0次

    用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。

    一、Spring

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    二 、SpringMVC

    SpringMVC:它用于web层,相当于controller(等价于传统的servlet和struts的action),用来处理用户请求。举个例子,用户在地址栏输入https://网站域名/login,那么springmvc就会拦截到这个请求,并且调用controller层中相应的方法,(中间可能包含验证用户名和密码的业务逻辑,以及查询数据库
    操作,但这些都不是springmvc的职责),最终把结果返回给用户,并且返回相应的页面(当然也可以只反馈josn/xml等格式数据)。springmvc就是做前面和后面过程的活,就是一个页面拦截器。

    三 、Mybatis

    MyBatis 是支持普通 SQL查询,存储过程和和高级映射的优秀持久层框架。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。

    四、项目所需 jar

    五 、详情配置

    • web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     
      <!-- 配置DispatcherServlet -->
      <servlet>
         <servlet-name>school</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      </servlet>
      <servlet-mapping>
         <servlet-name>school</servlet-name>
         <url-pattern>/</url-pattern>
      </servlet-mapping>
      
     
      <!-- Spring 的监听器可以通过这个上下文参数来获取school-mybatis.xml的位置 -->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:school-mybatis.xml</param-value>   
      </context-param>
      
        <!-- 创建Spring的监听器 -->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      
    
      
      <!-- 创建字符过滤器 -->
      <filter>
         <filter-name>CharacterFilter</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>CharacterFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      
      
    </web-app>
    
    • springMVC
        <!-- 扫描controller(controller层注入) -->
       <context:component-scan base-package="org.ssm.dufy.web" use-default-filters="false">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
       
         <mvc:annotation-driven />
    
          <!-- 内容协商管理器  -->
        <!--1、首先检查路径扩展名(如my.pdf);2、其次检查Parameter(如my?format=pdf);3、检查Accept Header-->
        <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
            <!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
            <property name="favorPathExtension" value="true"/>
            <!-- 用于开启 /userinfo/123?format=json 的支持 -->
            <property name="favorParameter" value="true"/>
            <property name="parameterName" value="format"/>
            <!-- 是否忽略Accept Header -->
            <property name="ignoreAcceptHeader" value="false"/>
    
            <property name="mediaTypes"> <!--扩展名到MIME的映射;favorPathExtension, favorParameter是true时起作用  -->
                <value>
                    json=application/json
                    xml=application/xml
                    html=text/html
                </value>
            </property>
            <!-- 默认的content type -->
            <property name="defaultContentType" value="text/html"/>
        </bean>
    
    
        <!-- 当在web.xml 中   DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时,能映射静态资源 -->
        <mvc:default-servlet-handler />  
        <!-- 静态资源映射 -->
        <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>
       
    
       <!-- 对模型视图添加前后缀 -->
         <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
          
    
    </beans>
    
    
    • applicationContext.xml
        <!-- 1.配置jdbc文件 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                <property name="locations" value="classpath:jdbc.properties"/>
        </bean>
    
        <!-- 2.扫描的包路径,这里不扫描被@Controller注解的类 --><!--使用<context:component-scan/> 可以不在配置<context:annotation-config/> -->
        <context:component-scan base-package="org.ssm.dufy">
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
        </context:component-scan>
        
        <import resource="classpath:spring-mybatis.xml" />
        
    </beans>
    
    • mybatis.xml
     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <!-- 基本属性 url、user、password -->        
            <property name="driverClassName" value="${jdbc_driverClassName}"/>
            <property name="url" value="${jdbc_url}"/>
            <property name="username" value="${jdbc_username}"/>
            <property name="password" value="${jdbc_password}"/>
          
            <!-- 配置初始化大小、最小、最大 -->
            <property name="initialSize" value="10"/>
            <property name="minIdle" value="10"/>
            <property name="maxActive" value="50"/>
    
            <!-- 配置获取连接等待超时的时间 -->
            <property name="maxWait" value="60000"/>
            <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
            <property name="timeBetweenEvictionRunsMillis" value="60000" />
    
            <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
            <property name="minEvictableIdleTimeMillis" value="300000" />
    
            <property name="validationQuery" value="SELECT 'x'" />
            <property name="testWhileIdle" value="true" />
            <property name="testOnBorrow" value="false" />
            <property name="testOnReturn" value="false" />
    
            <!-- 打开PSCache,并且指定每个连接上PSCache的大小  如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。-->
            <property name="poolPreparedStatements" value="false" />
            <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
    
            <!-- 配置监控统计拦截的filters -->
            <property name="filters" value="wall,stat" />
        </bean>
        
    
         
        <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->  
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
            <property name="dataSource" ref="dataSource" />  
            <!-- 自动扫描mapping.xml文件 -->  
            <property name="mapperLocations" value="classpath:org/ssm/dufy/mapper/*.xml"></property>  
        </bean>   
        
        
         <!-- DAO接口所在包名,Spring会自动查找其下的类 ,自动扫描了所有的XxxxMapper.xml对应的mapper接口文件,只要Mapper接口类和Mapper映射文件对应起来就可以了-->  
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
            <property name="basePackage" value="org.ssm.dufy.dao" />  
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
        </bean>  
        
        <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <!-- 配置事务管理器 -->
        <bean id="transactionManager"  
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
            <property name="dataSource" ref="dataSource" />  
        </bean> 
    
        <!--======= 事务配置 End =================== -->
        <!-- 配置基于注解的声明式事务 -->
        <!-- enables scanning for @Transactional annotations -->
        <tx:annotation-driven transaction-manager="transactionManager" />
    

    六 、个人总结

    ssm 是 Spring 、SpringMVC 、Mybatis 的结合, Spring 相当于在 SpringMVC 与 Mybatis 之间的桥梁。其中 SpringMVC 相当于传统的 service+model+servlet 。结合注解进行开发,使整个开发高效代码量大大的减少。Mybatis 负责数据库的数据交换,不用自己写 SQL 语句防止了 SQL 注入问题发生,而且相比于 Hibernate 他非常的轻,dao 与 model 直接自动生成大大减少了多表开发的时间,因此 ssm 是非常优秀的后台框架。

    相关文章

      网友评论

          本文标题:ssm 框架总结

          本文链接:https://www.haomeiwen.com/subject/gyftnxtx.html