Spring MVC 框架为开发者提供了功能强大的注解机制,可以帮助我们简化代码的开发,提高开发效率,同时使得程序具备更好的扩展性,下面我们就来详细讲解 Spring MVC 框架中常用注解的具体使用。
@RequestMapping
Spring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在控制器的类定义处以及方法定义处都可添加 @RequestMapping,在类定义处添加 @RequestMapping 注解,相当于多了一层访问路径。
@RequestMapping 常用参数
(1)value:指定 URL 请求的实际地址,是 @RequestMapping 的默认值。
等于
(2)method:指定请求的 method 类型,包括 GET、POST、PUT、DELETE 等。
上述代码表示只有 POST 请求可以访问该方法,若使用 GET 请求访问,直接抛出异常,如下图所示。
其他几种请求类型同理,我们常用的是 GET 和 POST 请求,在 REST 架构中会使用到 PUT 和 DELETE 请求。
(3)params:指定 request 中必须包含的参数值,否则无法调用该方法。
URL 请求中必须包含 name 和 id 两个参数,并且 id 的值必须为 10,才能调用 paramsTest 方法。
上述是 3 种常见的错误,都不满足 request 同时包含 name 和 id 参数,并且 id=10 的条件,因此均无法正常访问业务方法。
参数绑定
params 是对 URL 请求的参数进行限制,不满足条件的 URL 无法访问业务方法,这个特性并不是我们开发中常用的技术点,需要用到的是在业务方法中获取 URL 的参数,实现这一操作很简单,两步完成:
(1)在业务方法定义时声明参数列表;
(2)给参数列表添加 @RequestParam 注解。
将 URL 请求的参数 name 和 id 分别映射给形参 name 和 id,同时进行了数据类型的转换,URL 参数都是 String 类型的,Spring MVC 可以自动根据形参的数据类型完成数据类型转换,比如将 id 转换为 int 类型,因此可以看到打印的 num 值为 20,完成了数学运算,说明已经进行了数据类型转换,具体的数据类型转换工作是由 HandlerAdapter 来完成的。
Spring MVC 也支持 RESTful 风格的 URL 参数获取
将参数列表的注解改为 @PathVariable("name") 即可,非常简单。
映射 Cookie
Spring MVC 通过映射可以直接在业务方法中获取 Cookie 的值。
使用 POJO 绑定参数
Spring MVC 会根据请求参数名和 POJO 属性名进行匹配,自动为该对象填充属性值,并且支持属性级联,具体操作如下所示。
(1)创建实体类 Address、User 并进行级联设置
(2)创建 addUser.jsp
(3)业务方法
(4)运行
有的读者写到这可能会发现自己的程序中文乱码了,Spring MVC 解决中文乱码很简单,在 web.xml 中添加过滤器即可,如下所示。
JSP 页面的转发和重定向
Spring MVC 默认以转发的形式响应 JSP,也可以手动进行修改,重定向:
通过地址栏可以看到,地址改变,实现了重定向跳转。需要注意的是业务方法中,设置重定向不能写逻辑视图,必须写明目标资源的物理路径,如 "redirect:/index.jsp"。
转发:
可以看到请求前后,地址栏没有改变,实现了转发跳转。
总结
本文讲解了 Spring MVC 常用注解的使用方法,主要应用于客户端到服务器端的请求映射,包括请求名称、请求类型、请求参数等。完成了 MVC 设计模式中 V(View)—— C(Controller)的映射,省去了在 XML 文件中繁琐的映射配置。
毫无疑问,Spring 全家桶是当前非常流行的主流框架,也是 Java 开发者的必备技能,无论你是初级菜鸟还是有一定经验的老鸟,都应该好好学习 Spring 全家桶的使用。
《案例上手 Spring 全家桶》希望提供一站式服务,将 Spring 全家桶的核心模块一次性全部讲清楚,并结合实战案例让读者能够快速掌握实际开发的能力。以输出为结果导向是最高效的学习方法。即将学习到的全家桶成员包括:
- Spring Framework
- Spring Web MVC
- Spring Boot
- Spring Cloud
- Spring Data
- Spring Security
你将获得什么:
- Spring 全家桶核心模块的实际应用
- 100+ 段经典代码示例,快速理解 Spring 全家桶要领
- 3 大项目实战,掌握 Spring 全家桶实际应用
- 精选 70 道 Spring 高频面试题评估学习成果
- 16+ 小时的 Spring 实战视频
- 进入 Spring 技术社群
即日起至 4 月 14 日,《案例上手 Spring 全家桶》专栏限时特惠!现在订阅专栏,即可加入专属交流群,让你一站式透视 Spring 全家桶核心模块!
订阅专栏,即可进群与作者交流