SpringMVC 进阶:核心组件详解与参数绑定全攻略

引言

上一篇我们通过 HelloWorld 案例入门了 SpringMVC,但实际开发中,你可能会遇到 “如何接收复杂参数?”“不同组件有哪些实现选择?” 等问题。本文将带你深入 SpringMVC 的核心组件,拆解其底层逻辑,并详细讲解 “参数绑定” 这一高频开发场景,帮你解决 80% 的日常开发需求。

一、SpringMVC 核心组件深度解析

上一篇提到 5 个核心组件,本节将聚焦 “最关键的 3 个组件”,讲解其实现类、配置方式及适用场景。

1. HandlerMapping:请求与 Controller 的 “桥梁”

HandlerMapping的作用是 “根据请求 URL 找到对应的 Controller 方法”,SpringMVC 提供了多种实现,最常用的有 2 种:

(1)RequestMappingHandlerMapping(推荐,注解驱动)

基于@RequestMapping注解实现,支持 URL、请求方法(GET/POST)、请求参数等多维度匹配,是 SpringMVC 3.1 + 的默认选择。无需手动配置:只要在spring-mvc.xml中开启 “注解驱动”(如下),Spring 会自动注册该组件:

xml

<!-- 开启SpringMVC注解驱动(替代手动配置HandlerMapping和HandlerAdapter) -->
<mvc:annotation-driven/>
(2)BeanNameUrlHandlerMapping(传统,XML 配置)

基于 “Bean 名称” 映射请求,例如:

xml

<!-- 1. 配置HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<!-- 2. 配置Controller Bean,名称以/开头 -->
<bean name="/user/list" class="com.example.controller.UserController"/>

适用场景:老项目维护,新项目优先用注解驱动。

2. HandlerAdapter:Controller 的 “执行者”

HandlerAdapter负责 “调用 Controller 方法”,并处理 “参数绑定、类型转换” 等前置工作。与HandlerMapping对应,常用实现类也分 2 种:

(1)RequestMappingHandlerAdapter(注解驱动配套)

RequestMappingHandlerMapping配对使用,支持@RequestMapping注解的 Controller 方法,自动处理参数绑定(如@RequestParam)、返回值解析(如ModelAndView)。无需手动配置:开启mvc:annotation-driven后自动注册。

(2)SimpleControllerHandlerAdapter(传统)

适配实现Controller接口的传统 Controller,例如:

java

运行

// 传统Controller(需实现Controller接口)
public class UserController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "传统Controller");
        mv.setViewName("user/list");
        return mv;
    }
}

缺点:一个 Controller 只能处理一个请求,灵活性低,新项目不推荐。

3. ViewResolver:视图的 “定位器”

ViewResolver负责 “将视图名解析为实际视图对象”,常用实现类有 3 种,覆盖 JSP、Thymeleaf 等主流视图技术:

(1)InternalResourceViewResolver(JSP 视图,最常用)

解析 JSP 文件,配置方式如下(上一篇已用过):

xml

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <prope
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值