ssm框架的總結

ssm對應的是spring+springmvc+mybatis,css

1、spring,略。html

2、spring mvc是spring提供的mvc模塊,前端

從圖中能夠看出,springmvc的模塊劃分很是多,每個模塊都須要本身選擇一種實現(有springmvc實現的)。java

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xmlns:mvc="http://www.springframework.org/schema/mvc"
 8     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
10         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
11         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
12 
13     <!-- 處理器映射器 ,下面使用spring提供的映射器BeanNameUrlHandlerMapping,
14         是根據處理器的name和class屬性來進行映射的,name就是url,class就是映射到的處理類
15         這是非註解的映射器的一種
16     -->
17     <bean 
18         class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
19 
20     <!-- 處理器適配器 :全部的適配器都實現了HandlerAdapter接口,
21         而在適配器實現的support方法中,springmvc還要求經過該適配器適配的類必須實現指定的接口,
22         例以下面的處理器是經過SimpleControllerHandlerAdapter進行適配的,就必須實現Controller接口
23     -->
24     <bean 
25         class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
26 
27     <!-- 處理器 -->
28     <bean name="/queryitems.action" class="com.dqxst.controller.ItemsContraller" />
29 
30     <!-- 視圖解析器 :解析jsp視圖,默認使用jstl標籤-->
31     <bean 
32         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
33         <!-- 添加前綴和後綴,在指定視圖時會和參數字串進行拼合 -->
34         <property name="prefix" value="/WEB-INF/jsp/" />
35         <property name="suffix" value=".jsp" />
36     </bean>
37     
38     <!-- 配置註解處理器適配器和映射器 ,這個是3.1以後新增的,不要使用以前的(在配置文件中的默認配置,能夠被覆蓋)
39         注意:若是使用註解開發,映射器和適配器必須都使用註解型
40     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
41     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
42     -->
43     <!-- 可是使用下面的能夠替換上面的配置,而且還加載了不少參數綁定的方法,例如json轉換的解析器,開發時通常使用 -->
44     <mvc:annotation-driven></mvc:annotation-driven>
45     
46     <!-- 使用註解以後的組件能夠單獨配置,可是開發中通常使用掃描的方式
47         這樣能夠掃描controller、service、Repository等組件
48      -->
49     <context:component-scan base-package="com.dqxst.controller"></context:component-scan>
50 </beans>
springmvc各模塊的一些實現配置

在圖中DispatcherServlert處應該有一個Controller的存在,實際是由Controller來進行控制工做。而Controller在springmvc中(一般)是使用註解聲明的,還包括了一系列的註解輔助開發。一個Controller最主要的工做就是(這對struct2也適用):mysql

  ①接收參數而後與java中的pojo/集合等綁定。參考:http://www.cnblogs.com/HD/p/4107674.htmlweb

  ②調用相應service(業務)層進行業務處理spring

  ③返回處理結果數據Model和頁面view。參考:http://www.cnblogs.com/xiepeixing/p/4243801.htmlsql

參考:http://www.cnblogs.com/kreo/p/4344668.html數據庫

mvc框架的一些經常使用功能:json

  ①服務器端校驗,就是對發送到服務器上的參數進行的校驗,在註解驅動中配置。

  ②類型轉換:就是將自定義的格式轉換爲指定的java類型,在註解驅動中配置。

  ③自定義攔截器:能夠在執行鏈的最前端執行一些操做,例如身份驗證。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xmlns:mvc="http://www.springframework.org/schema/mvc"
 8     xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
10         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
11         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
12     <context:annotation-config/>
13     <context:component-scan base-package="com.dqxst.controller"></context:component-scan>
14      
15     <!-- 視圖解析器 :解析jsp視圖,默認使用jstl標籤-->
16     <bean 
17         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
18         <!-- 添加前綴和後綴,在指定視圖時會和參數字串進行拼合 -->
19         <property name="prefix" value="/WEB-INF/jsp/" />
20         <property name="suffix" value=".jsp" />
21     </bean>
22     
23     <!-- 註解驅動 ,conversion-service屬性用於設置自定義的參數綁定,經過一個bean實現-->
24     <mvc:annotation-driven conversion-service="conversionService" validator="validator" ></mvc:annotation-driven>
25     <!-- 轉換器bean -->
26     <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
27         <!-- 指定轉換器類list -->
28         <property name="converters">
29             <list>
30             <!-- 日期格式轉換器 -->
31                 <bean class="com.dqxst.converters.DateConverter" />
32             </list>
33         </property>
34     </bean>
35     
36     <!-- 配置服務器端校驗器 -->
37     <bean id="validator"
38         class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
39         <!-- 校驗器-->
40         <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
41         <!-- 指定校驗使用的資源文件,若是不指定則默認使用classpath下的ValidationMessages.properties -->
42         <property name="validationMessageSource" ref="messageSource" />
43     </bean>
44     <!-- 校驗錯誤信息配置文件 -->
45     <bean id="messageSource"
46         class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
47         <!-- 資源文件名-->
48         <property name="basenames">   
49             <list>    
50             <value>classpath:CustomValidationMessages</value> 
51             </list>   
52         </property>
53         <!-- 資源文件編碼格式 -->
54         <property name="fileEncodings" value="utf-8" />
55         <!-- 對資源文件內容緩存時間,單位秒 -->
56         <property name="cacheSeconds" value="120" />
57     </bean>
58     
59     <!-- 全局異常處理器,由springmvc自動管理,只須要實現HandlerExceptionResolver接口便可,只能有一個起效 -->
60     <bean class="com.dqxst.exception.CustomExceptionResolvar" />
61     
62     <!-- 文件上傳解析器 -->
63     <bean id="multipartResolver"
64         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
65         <!-- 設置上傳文件的最大尺寸爲5MB -->
66         <property name="maxUploadSize">
67             <value>5242880</value>
68         </property>
69     </bean>
70     
71     <!--攔截器,全局 -->
72     <mvc:interceptors>
73         <!--多個攔截器,順序執行 -->
74         <!-- 登錄認證攔截器 -->
75         <mvc:interceptor>
76             <mvc:mapping path="/**"/>
77             <bean class="com.dqxst.interceptor.LoginInterceptor"></bean>
78         </mvc:interceptor>
79         <mvc:interceptor>
80             <!-- /**表示全部url包括子url路徑 -->
81             <mvc:mapping path="/**"/>
82             <bean class="com.dqxst.interceptor.HandlerInterceptor1"></bean>
83         </mvc:interceptor>
84         <mvc:interceptor>
85             <mvc:mapping path="/**"/>
86             <bean class="com.dqxst.interceptor.HandlerInterceptor2"></bean>
87         </mvc:interceptor>
88     </mvc:interceptors>
89     
90     <!-- 靜態資源解析,包括 :js、css、img等-->
91      <mvc:resources location="/js/" mapping="/js/**"/>
92      <mvc:resources location="/img/" mapping="/img/**"/>
93 </beans>
最經常使用的配置形式

3、mybatis是另外一種ORM框架,不一樣於hibernate,使用步驟:

  ①底層配置文件:鏈接數據庫,加載sql語句配置文件,其餘配置

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!-- 加載其餘配置文件,默認爲類路徑 -->
 7     <properties resource="db.properties"></properties>
 8     
 9     <!-- 配置別名簡化使用 -->
10     <typeAliases>
11         <!-- 單個別名
12         <typeAlias type="com.dqxst.domain.User" alias="user"/>
13          -->
14          <!-- 批量別名,別名爲類名首字母小寫 -->
15         <package name="com.dqxst.domain"/>
16     </typeAliases>
17     
18     <!-- 配置mybatis數據庫環境 -->
19     <environments default="development">
20         <environment id="development">
21             <transactionManager type="JDBC"/>
22             <dataSource type="POOLED">
23                 <property name="driver" value="${jdbc.driver}"/>
24                 <property name="url" value="${jdbc.url}"/>
25                 <property name="username" value="${jdbc.username}"/>
26                 <property name="password" value="${jdbc.password}"/>
27             </dataSource>
28         </environment>
29     </environments>
30     
31     <!-- 加載映射文件 -->
32     <mappers>
33         <!-- 單個問價加載 
34         <mapper resource="sqlMap/User.xml"/>
35         <mapper resource="mapper/UserMapper.xml"/>
36         -->
37         <!-- 批量文件加載:須要知足幾個條件
38             1、使用mapper代理開發
39             2、mapper接口和配置文件同名且在同一目錄下
40          -->
41          <package name="com.dqxst.mapper"/>
42          <package name="com.dqxst.mapper2"/>
43     </mappers>
44 </configuration>
mybatis底層配置

  ②配置sql語句文件,這是和hibernate的一個重要不一樣點:須要本身寫sql語句,推薦使用mapper接口開發規範(規範使用必定限制的配置文件和使用mapper接口替代的DAO接口配合開發)。參考:http://dejazhan.iteye.com/blog/1693516

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- 這是一個簡單的配置文件 -->
 6 <mapper namespace="test">
 7     <!-- 配置一個select語句,
 8         namespace.id是要用在程序中對應這條語句的
 9         parameterType:指定佔位符對應參數的類型。
10         !!!注意這裏的佔位符是#{xxx},xxx能夠是value或其餘字符
11         resultType:指定返回結果的類型
12      -->
13     <select id="findUserById" parameterType="int" resultType="com.dqxst.domain.User">
14         SELECT * FROM user WHERE id = #{id}
15     </select>
16     
17     <!-- 注意:
18         1、即便返回多條記錄, resultType也是表示單條記錄的類型而不是list
19         二、${xxx}拼接符:將參數不加修飾的和語句拼接成一句,像下面就能夠用於模糊查詢,再也不使用?作佔位符
20         拼接字符串有一個問題,就是sql注入。
21         !!!注意若是注入簡單類型,這裏的xxx只能使用value
22     -->
23     <select id="findUserByName" parameterType="java.lang.String" resultType="com.dqxst.domain.User">
24         SELECT * FROM user WHERE username like '%${value}%'
25     </select>
26     
27     <!--添加:由於添加的字段類型和pojo中的同樣,因此 parameterType須要時pojo的類型,
28         而他們參數的具體類型,只要使用#{xxx},其中xxx是對於的pojo中的屬性便可自動判斷類型
29         
30         selectKey就是在insert以後添加執行語句,下面是在insert以後執行,能夠獲取當前id值賦給pojo對象用於後續操做
31         !!!注意上面是用於獲取自增型主鍵的 id
32         還能夠在insert以前使用select uuid()獲取非自增型主鍵的值
33      -->
34     <insert id="insertUser" parameterType="com.dqxst.domain.User">
35         <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
36             SELECT LAST_INSERT_ID()
37         </selectKey>
38         INSERT INTO user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
39     </insert>
40     
41     <!-- 刪除 -->
42     <delete id="deleteUser" parameterType="java.lang.Integer">
43         DELETE FROM user WHERE id=#{id}
44     </delete>
45     
46     <!-- 更新 -->
47     <update id="updateUser" parameterType="com.dqxst.domain.User">
48         UPDATE user SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id}
49     </update>
50 </mapper>
普通sql配置
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- 這是一個使用mapper接口開發的配置文件,有一些規範:
 6     1、namespace是對應mapper接口全限定名
 7     二、下面的語句要和對應mapper接口中的方法對應,id==>方法名,parameterType==>參數類型,
 8         resultType==>返回值類型
 9  -->
10 <mapper namespace="com.dqxst.mapper.UserMapper">
11     <!-- 配置一個select語句-->
12     <select id="findUserById" parameterType="int" resultType="user">
13         SELECT * FROM user WHERE id = #{id}
14     </select>
15     <select id="findUserByName" parameterType="java.lang.String" resultType="com.dqxst.domain.User">
16         SELECT * FROM user WHERE username like '%${value}%'
17     </select>
18     
19     <!--添加-->
20     <insert id="insertUser" parameterType="com.dqxst.domain.User">
21         <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
22             SELECT LAST_INSERT_ID()
23         </selectKey>
24         INSERT INTO user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
25     </insert>
26     
27     <!-- 刪除 -->
28     <delete id="deleteUser" parameterType="java.lang.Integer">
29         DELETE FROM user WHERE id=#{id}
30     </delete>
31     
32     <!-- 更新 -->
33     <update id="updateUser" parameterType="com.dqxst.domain.User">
34         UPDATE user SET username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} WHERE id=#{id}
35     </update>
36     
37     
38     <!-- 優化應用: 
39         1、where語句的快速拼接,在where節點中使用if節點包含多條判斷以後添加的語句
40         2、能夠將一部分經常使用的語句構成sql片斷,經過id進行引用
41     -->
42     <select id="findUserBySexAndName" parameterType="user" resultType="user">
43         <!-- SELECT * FROM user WHERE sex=#{sex} AND username like '%${username}%' -->
44         SELECT * FROM user
45         <where>
46             <include refid="query_user_where"></include>
47         </where>
48     </select>
49     
50     <sql id="query_user_where">
51         <if test="sex!=''">
52             AND sex=#{sex} 
53         </if>
54         <if test="username!=''">
55             AND username like '%${username}%'
56         </if>
57     </sql>
58     
59 </mapper>
mapper開發配置實例

在配置中有兩個重要的映射:

  ①輸入映射:就是在條件語句中的參數,在配置文件中用佔位符表示,在實際的DAO層就是普通的參數傳遞。

  ②輸出映射:就是將查詢結果映射到指定的pojo類中

在使用時,mybatis須要獲取SqlSessionFactory對象和SqlSession對象,經過SqlSession對象進行實際的操做。

參考:http://blog.csdn.net/rootsuper/article/details/8537498

4、ssm框架整合:

  ①spring和springmvc整合,無需整合,可是須要添加響應的jar包,並將springmvc使用的DispatcherServlet註冊到web.xml上

  ②spring和mybatis整合:

    一、使用spring管理sqlSessionFactory對象,也就是數據庫的鏈接

    二、使用spring管理mapper接口而且自動生成實現類,通常使用批量掃描實現。

 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:p="http://www.springframework.org/schema/p"
 6     xmlns:aop="http://www.springframework.org/schema/aop" 
 7     xmlns:context="http://www.springframework.org/schema/context"
 8     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 9         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
10          http://www.springframework.org/schema/aop 
11          http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
12         http://www.springframework.org/schema/context
13         http://www.springframework.org/schema/context/spring-context-3.1.xsd">
14     <context:annotation-config/>
15     <context:component-scan base-package="com.dqxst"></context:component-scan>
16     <context:property-placeholder location="classpath:db.properties"/>
17     
18     <!-- 配置 SqlSessionFactory-->
19     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
20         <!-- 加載配置文件 -->
21         <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"></property>
22         <!--  -->
23         <property name="dataSource" ref="dataSource"></property>
24     </bean>
25     
26     <!-- 配置數據源 -->
27     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
28         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
29         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mybatis"></property>
30         <property name="user" value="root"></property>
31         <property name="password" value="920346"></property>
32         <property name="initialPoolSize" value="10"></property>
33         <property name="maxPoolSize" value="30"></property>
34     </bean>
35      
36     <!-- 這個類是對mapper接口進行自動掃描的類 -->
37     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
38         <!-- 指定掃描包名,如需掃描多包,用,分隔便可 -->
39         <property name="basePackage" value="com.dqxst.mapper" />
40         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
41     </bean>
42 </beans>
spring和mybatis整合配置

5、框架對比:

struct2與springmvc對比:

相關文章
相關標籤/搜索