SpringMVC 的基本组件与使用

2.2 SpringMVC 对控制器的支持

2.2.1 SpringMVC 执行流程

2.2.2 处理器查找

SpringMVC中常见的三种映射策略

1.直接URL映射

通过向 Spring 注册 SimpleUrlHandlerMapping 类型的 Bean 实现, 可以为SimpleUrlHandlerMapping 传入Map类型的映射关系。Map的Key是URL,支持通配符,示例代码如下:

// 声明为 Spring的配置类@ Configuration public class HandlerMappingConfig {// 声明为 Spring 的 Bean@ Bean  public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {// 创建实例 SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMappisg(); // 设置URL与 Handler的映射关系, 通过 SimpleUrlRequestHandler处理请求 mapping. setUrlMap( Collections. singletonMap("/simpleUrl", Handler));return mapping;  }}
2.BeanName与URL映射

该映射方式通过BeanName自动进行 URL 映射。如果 Bean的 Name声明以“/”开头,或者这个 Bean的别名以“/”开头, 则该 Bean会自动作为 Handler 进行映射, URL 为 Bean的 Name, Handler为该 Bean自身。这个自动注册的逻辑发生在 BeanNameUrlHandlerMapping中。示例代码如下:

@ Configuration public class HandlerMappingTest {// 为这个 Bean注册两个名字: /beanNameUrl和/aliasNameUrl, 访问这两个 URL时,会通过下面声明的 Handler 处理该请求@ Bean( name = {"/beanNameUrl", "/aliasNameUrl"}) public HttpRequestHandler beanNameUrlHandler() {// 这是一个HttpRequestHandler类型的 Handler return new BeanNameUrlHttpRequestHandler(); }}

当然声明BeanName 不止这一种方式, 也可以按照下面这种方式声明。

@ Component("/beanNameUrl") public class BeanNameUrlHttpRequestHandler {//...省略代码)
3.@RequestMapping映射

通过简单的注解, 即可达到HTTP 请求与控制器处理方法映射的目的, 其Handler查找策略是通过RequestMappingHandlerMapping实现的。示例代码如下:

@ Controller public class MyRequestMapping {@RequestMapping( path = "/myRequestMapping", method = RequestMethod.GET) public String requestMappingGet() {//...省略处理逻辑 }@RequestMapping( path = "/myRequestMapping", method = RequestMethod.POST) public String requestMappingPost () {//...省略处理逻辑 }}

当请求路径requestMappingUrl时, RequestMappingHandlerMapping 会根据请求的 URL查找到@RequestMapping 注解标记的方法, 同时还会判断 HTTP 请求方法。如果是 GET 方法, 则获取 requestMappingGet 并封装为 HandlerMethod, 如果是 POST 方法, 则获取requestMappingPost 方法并封装为 HandlerMethod。下一步会交由 HandlerAdapter去执行这个HandlerMethod。

可以看到该映射机制更加灵活且可选择条件更多,如果要在SimpleUrlHanderMapping或者 BeanNameUrlHandlerMapping 中实现该功能, 其实是做不到的, 它们只支持简单的 URL映射。

@ReuqestMapping映射机制是 Web开发者最常使用的映射机制, 该组件的映射机制不仅仅是 URL 这么简单,它还支持其他如请求方法、请求头等各种不同的筛选条件来进行 Handler映射。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值