簡(jiǎn)介:
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個(gè)開(kāi)源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)。常作為數(shù)據(jù)源較簡(jiǎn)單的web項(xiàng)目的框架。
Spring Spring就像是整個(gè)項(xiàng)目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實(shí)體類的構(gòu)造方法來(lái)實(shí)例化對(duì)象。也可以稱之為項(xiàng)目中的粘合劑?! pring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地`new`一個(gè)對(duì)象,而是讓Spring框架幫你來(lái)完成這一切。 ?
SpringMVC SpringMVC在項(xiàng)目中攔截用戶請(qǐng)求,它的核心Servlet即DispatcherServlet承擔(dān)中介或是前臺(tái)這樣的職責(zé),將用戶請(qǐng)求通過(guò)HandlerMapping去匹配Controller,Controller就是具體對(duì)應(yīng)請(qǐng)求所執(zhí)行的操作。SpringMVC相當(dāng)于SSH框架中struts?! ? ?
mybatis mybatis是對(duì)jdbc的封裝,它讓數(shù)據(jù)庫(kù)底層操作變的透明。mybatis的操作都是圍繞一個(gè)sqlSessionFactory實(shí)例展開(kāi)的。mybatis通過(guò)配置文件關(guān)聯(lián)到各實(shí)體類的Mapper文件,Mapper文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫(kù)所需進(jìn)行的sql語(yǔ)句映射。在每次與數(shù)據(jù)庫(kù)交互時(shí),通過(guò)sqlSessionFactory拿到一個(gè)sqlSession,再執(zhí)行sql命令。頁(yè)面發(fā)送請(qǐng)求給控制器,控制器調(diào)用業(yè)務(wù)層處理邏輯,邏輯層向持久層發(fā)送請(qǐng)求,持久層與數(shù)據(jù)庫(kù)交互,后將結(jié)果返回給業(yè)務(wù)層,業(yè)務(wù)層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。?
1.web.xml配置
????1.1配置加載spring容器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/*.xml</param-value>
</context-param>
classpath和classpath*的區(qū)別:
classpath:只會(huì)到你的class路徑中查找找文件。
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找。
注意:?用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的;因此,在規(guī)劃的時(shí)候,應(yīng)該盡可能規(guī)劃好資源文件所在的路徑,盡量避免使用classpath*。classpath*的使用:當(dāng)項(xiàng)目中有多個(gè)classpath路徑,并同時(shí)加載多個(gè)classpath路徑下(此種情況多數(shù)不會(huì)遇到)的文件,*就發(fā)揮了作用,如果不加*,則表示僅僅加載第一個(gè)classpath路徑?
? ? 1.2spring監(jiān)聽(tīng)器
?<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
? ? 1.3配置前端控制器
<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*:spring/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
<!-- <url-pattern>*.do</url-pattern>-->
<!-- <url-pattern>*.htm</url-pattern>-->
<!-- <url-pattern>*.action</url-pattern>-->
</servlet-mapping>
url-pattern路徑配置細(xì)節(jié):
/* 表示匹配所有路徑 包括靜態(tài)資源 (不推薦), 這樣配置會(huì)導(dǎo)致所有的請(qǐng)求都經(jīng)過(guò)前端控制器,例如:配置了歡迎頁(yè)index.jsp 會(huì)報(bào)404錯(cuò)誤,因?yàn)閖sp也會(huì)由前端控制器解析,而hander (controller)沒(méi)有配置 會(huì)找不到。并且不支持restFul風(fēng)格的URL。
/? 也表示所有路徑,可以實(shí)現(xiàn)rest風(fēng)格,也會(huì)攔截靜態(tài)資源,推薦兩種解決方案。
????方案一:
? ??????激活Tomcat的defaultServlet來(lái)處理靜態(tài)文件
????????<servlet-mapping>
????????<servlet-name>default</servlet-name>
????????<url-pattern>*.jpg</url-pattern>
????????</servlet-mapping>
????????<servlet-mapping>
????????<servlet-name>default</servlet-name>
????????<url-pattern>*.js</url-pattern>
????????</servlet-mapping>
????????<servlet-mapping>
????????<servlet-name>default</servlet-name>
????????<url-pattern>*.css</url-pattern>
????????</servlet-mapping>
????????特點(diǎn):1.? 要配置多個(gè),每種文件配置一個(gè)。
? ? ? ? ? ? ? ? ? ?2.? 要寫在DispatcherServlet的前? ? ? 面, 讓 defaultServlet先攔截請(qǐng)求,這樣請(qǐng)求就不會(huì)進(jìn)入Spring了。
? ? ? ? ? ? ? ? ? ?3. 高性能。
? ? 方案二:
? ??????<mvc:resources mapping="/images/**" location="/images/" />?
.do? .htm .action? 這樣配置不支持rest風(fēng)格,也可以解決靜態(tài)資源被攔截的問(wèn)題。
? ? 1.4配置字符集編碼
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

2 spring.xml配置
偷懶

3 springmvc.xml
