在Web容器中使用Spring MVC 必须进行四项的配置:添加servlet定义、编写servletname-servlet.xml、配置contextConfigLocation初始化参数、配置ContectLocationlistener.
在Web项目中配置Spring的IoC容器(使用 Spring IoC 的项目都必须配置):
//配置contextConfigLocation初始化参数
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicaitonContext.xml</param.value>
</context-param>
//配置ContextLocationListener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listenter-class>
</listener>
在Web项目中配置Spring MVC:
<servlet>
<servlet-name>spring mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatchDervlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- ContextLoaderListener:是在Web容器启动的时候启动,默认加载/WEB-INF/applicationContext.xml,并创建一个 WebApplicationContext 容器。
- DispatcherServlet是在第一次访问应用时创建的,默认会将配置在/WEB-INF/-servlet.xml配置文件,然后创建一个WebApplicationContext,这个WebApplicationContext 将ContextLoaderListener 创建的容器作为父类容器,父类容器中配置的左右bean都能够被注入到子容器中。
Spring MVC 的工作原理:
① 客户端的所有请求都交给前端控制器 DispatherServlet 来处理,它会负责调用系统的其他模块来真正处理用户请求。
② DispatcherServlet 收到请求后,将根据请求信息(包括 URL 、HTTP 协议方法、请求头、请求参数、Cookie等)以及HandlerMapping 的配置找到处理请求的Handler (任何一个对象都可以作为Handler)。
③ Spring 会通过HandlerAdapter 对该处理器进行封装。
④ HandlerAdapter 是一个适配器,它统一的接口对各种Handler中方法进行调用。
⑤ Handler 完成对用户请求的处理后,会返回一个ModelAndView 对象给DispatcherServlet,ModelAndView 包含了数据模型以及相应的视图信息。
⑥ ModelAndView 的视图是逻辑视图,DispatcherServlet 还要借助 ViewResolver 完成从逻辑试图到真实视图对象的解析工作。
⑦ 当得到真正的视图对象后,DispatcherServlet 会利用视图对象模型数据进行渲染。
⑧ 客户端得到响应,可能是一个普通的HTML试图,也可能是一个XML或者JSON字符串,还可以使一张图片或者一个 PDF文件。
利用C3P0在Spring IoC容器中配置数据源:
<context:property-placeholder location="jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDateSource destroy-method="close">
<property name="driverClass" value="${jdbc.ClassName}"/>
<property name="url" value="${jsbc.url}"/>
<property name="user" value="${jdbc.uername}"/>
<property name="password" value="${jdbc.password}"/>
</bean>