欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring MVC(2)- 入门案例分析

程序员文章站 2022-05-20 14:56:44
...

1 流程分析

Spring MVC(2)- 入门案例分析
Spring MVC(2)- 入门案例分析

2 入门案例涉及的组件

2.1 DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

2.2 HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求找到Handler即处理器,SpringMVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

2.3 Handler:处理器

它就是我们开发中要编写的具体业务控制器。由DispatcherServlet把用户请求转发到Handler。由Handler对具体的用户请求进行处理。

2.4 HandlAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

2.5 View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

2.6 View:视图

SpringMVC框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。 一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

3 <mvc:annotation-driven>说明

  • 在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。
  • 使用<mvc:annotation-driven>自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在SpringMVC.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。

它就相当于在xml中配置了:

<!-- 上面的标签相当于 如下配置--> 
<!-- Begin --> 
<!-- HandlerMapping --> 
<bean 
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- HandlerAdapter -->
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
   <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean> 
   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- HadnlerExceptionResolvers --> 
   <bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver"></bean> 
   <bean class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver"></bean>
    <bean class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver"></bean> 
    <!-- End -->

4 RequestMapping注解

用于建立请求URL和处理请求方法之间的对应关系。

4.1 出现位置

4.1.1类上

请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。
它出现的目的是为了使我们的URL可以按照模块化管理:
例如:
账户模块: /account/add /account/update /account/delete …
订单模块: /order/add /order/update /order/delete
使我们的URL更加精细。

4.1.2 方法上

请求URL的第二级访问目录。

4.2 属性

  • value:用于指定请求的URL。它和path属性的作用是一样的。
  • method:用于指定请求的方式。
  • params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。 例如: params = {“accountName”},表示请求参数必须有accountName params = {“moeny!100”},表示请求参数中money不能是100。
  • headers:用于指定限制请求消息头的条件。

注意: 以上四个属性只要出现2个或以上时,他们的关系是与的关系。