ssm框架是由spring mvc +spring+mybatis組成html
經過spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mvc.xml ,在spring mvc的配置文件中,定義攔截器,以及適配器adapter 和mapping ,以及返回json的的定義 ,而且導入mybatis配置 。 在mybatis的配置文件中定義jdbc的數據庫鏈接。而且用spring 和mybatis進行數據庫持久化的映射和配置 。能夠用mybatis-generate-ui 工具自動生成前端
Spring是一個開源框架,Spring是於2003年興起的一個輕量級的Java開發框架,有控制反轉和依賴注入git
官方網站 https://spring.io/docsgithub
數據庫持久化框架 和hibernate 同樣web
官方網站 http://mybatis.github.io/mybatis-3/spring
Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是做爲來自 Web 瀏覽器或其餘 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層sql
該文件是spring的默認配置文件在servlet節點中配置spring mvc相關配置及指定的初始文件數據庫
以下指標spring mvc默認配置文件是spring-mvc.xmlapache
由於Spring中是依賴注入(Dependency Injection)的也叫控制反轉(Inversion of Control)。可是也要配置一個重要的servlet,就是前端控制器(DispatcherServlet)json
<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-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
節點servlet-mapping,若是url-pattern 設置是「/」 則dispatcherservlet會攔截全部請求
其它的一些配置
<!-- 404錯誤攔截 --> <error-page> <error-code>404</error-code> <location>/error404.jsp</location> </error-page> <!-- 500錯誤攔截 --> <error-page> <error-code>500</error-code> <location>/error500.jsp</location> </error-page> <!-- 解決post亂碼問題的過濾器 --> <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> <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list>
<!-- 自動掃描,使SpringMVC認爲包下用了@Controller註解的類是控制器 --> <context:component-scan base-package="com.hcb.api" /> <!-- 輸出對象轉JSON支持 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/plain;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
定義攔截器
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/api/**" /> <bean class="com.hcb.api.interceptor.SignatureInterceptor"> <property name="ignoreUrls"> <list> <value>/api/user/login</value> <value>/api/eval/calc</value> </list> </property> </bean> </mvc:interceptor> <!-- 可繼續聲明其它攔截器 --> </mvc:interceptors>
定義適配器和註釋器
<!-- 會自動註冊RequestMappingHandlerMapping與RequestMappingHandlerAdapter兩個Bean, 這是SpringMVC爲@Controllers分發請求所必需的,並提供了數據綁定支持、@NumberFormatannotation支持、 @Da teTimeFormat支持、@Valid支持、讀寫XML的支持和讀寫JSON的支持等功能。 --> <mvc:annotation-driven />
或者也能夠用
<!-- 註解的處理器適配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> <!-- 註解的處理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
導入mybatis的配置
<import resource="classpath:spring-mybatis.xml" />
定義異常
<!--配置上傳文件數據解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize"> <value>9242880</value> </property> </bean> <!-- 定義全局異常處理器 --> <!-- 只有一個全局異常處理器起做用 --> <bean id="exceptionResolver" class="com.wxisme.ssm.exception.OverallExceptionResolver"></bean>
引入jdbc.properties配置文件來配置。
<!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!-- 數據源配置, 使用應用中的DBCP數據庫鏈接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- Connection Pooling Info --> <property name="maxActive" value="${dbcp.maxActive}" /> <property name="maxIdle" value="${dbcp.maxIdle}" /> <property name="defaultAutoCommit" value="false" /> <!-- 鏈接Idle一個小時後超時 --> <property name="timeBetweenEvictionRunsMillis" value="3600000" /> <property name="minEvictableIdleTimeMillis" value="3600000" /> </bean>
<!-- spring和MyBatis完美整合,不須要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:conf/mybatis-config.xml"></property> <!-- 自動掃描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/hcb/api/mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring會自動查找其下的類 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.hcb.api.dao"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean>