ApplicationContext获取方式
在web项目中,可以使用ServeltContextListener监听web应用的启动,我们可以在web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,将其存储到最大的域servletContext域中。
而spring提供了一个监听器ContextLoadListener就是对上述功能的封装。
快速实现
1.在web.xml中配置监听器
2.使用WebApplicationContextUtils获得应用上下文对象ApplicationContext
配置
SpringMVC的基本概念
三层架构
我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.
表现层.( MVC模型)
业务层.
持久层.
MVC模型
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计创建 Web 应用程序表现层的模式.
SpringMVC是什么
SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于 Spring FrameWork 的后续产品,已经融合在Spring Web Flow里面.
环境的搭建
1.添加SpringMCV开发的依赖jar包。
2.在web.xml
中配置SpringMVC的核心控制器。
3.创建SpringMCV配置文件springmvc.xml
。
4.创建index.jsp
编写控制器并使用注解配置HelloController
5.修改SpringMCV配置文件springmvc.xml
配置视图解析器。
配置
SpringMVC的执行流程
没啥好说的看懂图就行
-
前端控制器:DispatcherServlet
用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由
它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
-
处理器映射器:HandlerMapping
HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的
映射方式,例如:配置文件方式,实现接口方式,注解方式等。
-
处理器适配器:HandlerAdapter
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理
器进行执行。
-
处理器:Handler
它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由
Handler 对具体的用户请求进行处理。
-
视图解析器:View Resolver
View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
-
视图:View
SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面
SpringMVC拦截器
SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
拦截器也是AOP思想的一种实现方式
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!--
配置拦截器拦截的方法
/** 代表拦截所有方法
/user/* 代表拦截/user路径下的所有方法
-->
<mvc:mapping path="/user/*"/>
<!--配置不拦截的方法
<mvc:exclude-mapping path="" />
-->
<bean id="myInterceptor1" class="com.itheima.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
多个拦截器配置
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/user/*"/>
<bean id="myInterceptor1" class="com.itheima.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/user/*"/>
<bean id="myInterceptor2" class="com.itheima.interceptor.MyInterceptor2"></bean>
</mvc:interceptor>
</mvc:interceptors>