天天看点

@param注解_你会这些 Spring MVC 常用注解吗?

Spring MVC 框架为开发者提供了功能强大的注解机制,可以帮助我们简化代码的开发,提高开发效率,同时使得程序具备更好的扩展性,下面我们就来详细讲解 Spring MVC 框架中常用注解的具体使用。

@RequestMapping

Spring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在控制器的类定义处以及方法定义处都可添加 @RequestMapping,在类定义处添加 @RequestMapping 注解,相当于多了一层访问路径。

@param注解_你会这些 Spring MVC 常用注解吗?

@RequestMapping 常用参数

(1)value:指定 URL 请求的实际地址,是 @RequestMapping 的默认值。

等于

(2)method:指定请求的 method 类型,包括 GET、POST、PUT、DELETE 等。

上述代码表示只有 POST 请求可以访问该方法,若使用 GET 请求访问,直接抛出异常,如下图所示。

@param注解_你会这些 Spring MVC 常用注解吗?

其他几种请求类型同理,我们常用的是 GET 和 POST 请求,在 REST 架构中会使用到 PUT 和 DELETE 请求。

(3)params:指定 request 中必须包含的参数值,否则无法调用该方法。

URL 请求中必须包含 name 和 id 两个参数,并且 id 的值必须为 10,才能调用 paramsTest 方法。

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

上述是 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 来完成的。

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

Spring MVC 也支持 RESTful 风格的 URL 参数获取

将参数列表的注解改为 @PathVariable("name") 即可,非常简单。

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

映射 Cookie

Spring MVC 通过映射可以直接在业务方法中获取 Cookie 的值。

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

使用 POJO 绑定参数

Spring MVC 会根据请求参数名和 POJO 属性名进行匹配,自动为该对象填充属性值,并且支持属性级联,具体操作如下所示。

(1)创建实体类 Address、User 并进行级联设置

(2)创建 addUser.jsp

(3)业务方法

(4)运行

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

有的读者写到这可能会发现自己的程序中文乱码了,Spring MVC 解决中文乱码很简单,在 web.xml 中添加过滤器即可,如下所示。

JSP 页面的转发和重定向

Spring MVC 默认以转发的形式响应 JSP,也可以手动进行修改,重定向:

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

通过地址栏可以看到,地址改变,实现了重定向跳转。需要注意的是业务方法中,设置重定向不能写逻辑视图,必须写明目标资源的物理路径,如 "redirect:/index.jsp"。

转发:

@param注解_你会这些 Spring MVC 常用注解吗?
@param注解_你会这些 Spring MVC 常用注解吗?

可以看到请求前后,地址栏没有改变,实现了转发跳转。

总结

本文讲解了 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 全家桶核心模块!

@param注解_你会这些 Spring MVC 常用注解吗?

订阅专栏,即可进群与作者交流

继续阅读