在SSM项目中,我们需要手动整合Spring和SpringMVC。Spring是容器,而SpringMVC是前端控制器是一个Servlet,SpringMVC的主要功能就是把请求转发给对应的处理器进行处理。所以我们通常把controller存放到springmvc中,而其他组件像service、dao存放到spring中。
说的更透彻一点,Spring整合SpringMVC其实就是先创建一个Spring容器存放到tomcat为项目创建的context域中,然后再在初始化DispatcherServlet的时候把该容器设置为DispatcherServlet内部的Spring容器的父容器。
Spring容器创建是通过org.springframework.web.context.ContextLoaderListener来实现的,下面给出web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
下面给出applicationContext.xml以及springmvc.xml,前者作为父容器的配置文件,主要负责除controller组件外的其他组件的扫描。后者作为DispatcherServlet内部Spring容器的配置文件,主要负责controller组件的扫描。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.yzq.service"/>
<context:component-scan base-package="com.yzq.dao"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.yzq.controller"/>
</beans>
这样就配置完成了最简单的Spring和SpringMVC的整合,没有整合mybatis所以pom.xml文件中也只引入了spring-webmvc的依赖。