- 前端控制器 DispatcherServlet中心
它是整个流程控制的中心。有它来调用其他组件处理用户请求。
设计它的初衷是为了降低组件之间的耦合性。
- HandleMapping处理器映射器
负责根据用户的url请求找到Handle即处理器
springmvc提供了不同的映射器实现机制:配置文件防水。实现接口方式,注解方式等。
@RequestMapping(),采用注解方式是目前企业中最为流行的方式
- Handle处理器
Handle是继前端控制器之后的后端控制器,在前端控制器调配下Handle对具体的用户请求进行处理
因为Handle一般处理的都是业务上的请求,所以他一般都是开发人员完成的
- HandleAdapter:处理器适配器
通过HandleAdapter对处理器进行解析执行。主要是适配器模式的匹配
- ViewResovler视图解析器
ViewResovler负责将处理的结果生成View视图
- View 视图
SpringMVC提供了很多个View视图,如jstlView、freemarkerView、pdfView等
- 说明
在springmvc各个组件中,处理器适配器、处理器映射器、视图解析器称之为SpringMVC的三大组件。可以认为是:一个中心、三个基本点。需要用户开发的组件有:handle、view
配置相关的组件
- 配置处理器适配器、处理器映射器
通过查找DispatcherServlet.properties文件发现,建议你配置如下两个类
<!--配置处理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!--配置处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
此时这两个组件就交给了Spring容器管理
注解驱动
在springMVC中,提供了使用注解驱动来加载处理器适配器、处理器映射器组件
<!--配置注解驱动 涵盖了处理器映射器和处理器适配器-->
<mvc:annotation-driven/>
视图解析器
<!--
public static final String REDIRECT_URL_PREFIX = "redirect:";
public static final String FORWARD_URL_PREFIX = "forward:";
@Nullable
private Class<?> viewClass;
private String prefix = "";
private String suffix = "";
-->
<!--配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
静态资源放行
如果前端控制器在url-pattern中采用缺省配置/,意思是想要拦截当前应用中的静态资源。
静态资源需要开发人自己来调配。
如果应用中还要使用静态资源,此时就涉及到静态资源放行问题。
方式一:
前端控制器,本质上就是一个Servlet,在tomcat服务器内部对缺省配置有单独的处理器,它采用的是静态资源放行。
如果想要使用tomcat默认对缺省配置的处理,需要开启tomcat的缺省配置
<!--方式一 采用tomcat默认处理方式 开启tomcat缺省配置处理方式-->
<mvc:default-servlet-handler/>
方式二
手动建立映射关系
使用标签<mvc:resources location="/img/" mapping="/images/**"/>
mapping:服务器的映射路径 url上面的资源
location:映射应用当前的具体的静态资源 静态资源的加载路径
一般不要使用静态的资源放行机制
在前段控制器中采用扩展名匹配配置------->*.action
<!--方式二 采用手动映射-->
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/lib/**" location="/lib/"/>