欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)

Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)

2025/2/27 4:38:21 来源:https://blog.csdn.net/Future_yzx/article/details/145419150  浏览:    关键词:Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)

前言

        Spring MVC作为Spring框架中的核心组件之一,其强大的功能在于能简洁高效地处理HTTP请求和响应。在开发Web应用时,理解和正确使用Spring MVC的注解,尤其是@RequestMapping注解,至关重要。本文将详细讲解@RequestMapping注解的使用方法,及其如何绑定请求参数到控制器方法的参数。

一、@RequestMapping注解的使用

@RequestMapping注解是Spring MVC中最常用的注解之一,主要用于处理HTTP请求。它通过建立请求URL和处理方法之间的映射关系,从而确定请求的处理逻辑。

1.1 作用与基本使用

@RequestMapping可以作用在方法上和类上:

  • 作用在类上:指定请求的一级路径。
  • 作用在方法上:指定请求的二级路径。

路径可以省略“/”,表示从应用的根目录开始。

@Controller
@RequestMapping(path = "/role")  // 一级请求路径
public class RoleController {/*** 处理请求 /role/save* method="GET" 指定请求方式* params="请求路径上传的参数"*/@RequestMapping(path = "/save", method = RequestMethod.GET)public String save() {System.out.println("保存角色...");return "suc";}@RequestMapping(value = "/delete")public String delete() {System.out.println("删除角色...");return "suc";}
}

1.2 RequestMapping的属性

@RequestMapping注解的常用属性包括:

  • pathvalue:指定请求的路径。
  • method:指定请求方式,如GET、POST等。
  • params:指定请求参数,当请求包含特定参数时,才会匹配该方法。
@RequestMapping(path = "/save", method = RequestMethod.POST, params = "action=save")
public String save() {// 处理POST请求,且必须包含参数action=savereturn "suc";
}

二、请求参数绑定

Spring MVC提供了自动绑定请求参数到控制器方法的功能。无论是简单的基础类型,还是复杂的JavaBean,Spring都能自动进行类型转换。

2.1 参数绑定机制

当用户提交一个表单时,Spring MVC会自动将表单提交的参数(k=v格式)与控制器方法的参数进行绑定。默认情况下,表单的name属性值与方法的参数名称需要一致。

2.2 支持的数据类型

Spring MVC支持以下类型的请求参数绑定:

  • 基本数据类型:如int, boolean, String等。
  • 实体类型(JavaBean):当参数为一个Java对象时,Spring MVC会将请求参数映射到该对象的属性。
  • 集合类型:如List, Map等集合类。
例子:基本数据类型和JavaBean
@Controller
@RequestMapping("/user")
public class UserController {// 绑定基础数据类型@RequestMapping("/save")public String save(String username, Integer age) {System.out.println("Username: " + username);System.out.println("Age: " + age);return "suc";}// 绑定JavaBean@RequestMapping("/save1")public String save1(User user) {System.out.println(user);return "suc";}// 绑定JavaBean包含对象的情况@RequestMapping("/save2")public String save2(User user) {System.out.println(user);return "suc";}// 绑定JavaBean包含集合的情况@RequestMapping("/save3")public String save3(User user) {System.out.println(user);return "suc";}
}
JSP页面:表单提交
<html>
<head><meta charset="utf-8"><title>请求参数绑定</title>
</head>
<body><h1>基础数据类型绑定</h1><form action="/user/save" method="get"><input type="text" name="username"/><br/><input type="text" name="age"/><br/><input type="submit"/></form><h1>JavaBean绑定</h1><form action="/user/save1" method="post"><input type="text" name="username"/><br/><input type="text" name="age"/><br/><input type="submit"/></form><h1>JavaBean包含对象绑定</h1><form action="/user/save2" method="post"><input type="text" name="username"/><br/><input type="text" name="age"/><br/><input type="text" name="account.money"/><br/><input type="submit"/></form><h1>JavaBean包含集合绑定</h1><form action="/user/save3" method="post"><input type="text" name="username"/><br/><input type="text" name="age"/><br/><input type="text" name="account.money"/><br/><input type="text" name="accounts[0].money"/><br/><input type="text" name="accounts[1].money"/><br/><input type="submit"/></form>
</body>
</html>

2.3 实体类与集合类型的绑定

  • JavaBean:通过nameJavaBean中的属性名匹配进行绑定。如果JavaBean包含其他引用类型,表单字段需要采用对象.属性的方式命名。
  • 集合类型:当表单中包含多个同名参数时,Spring MVC会自动封装成ListMap等集合。

2.4 使用原生ServletAPI对象

除了使用Spring MVC的自动绑定功能外,我们还可以直接使用Servlet API(HttpServletRequestHttpServletResponse等)进行操作:

@RequestMapping(value = "/save6.do", method = RequestMethod.POST)
public String save6(HttpServletRequest request, HttpServletResponse response) {String username = request.getParameter("username");System.out.println("Username: " + username);HttpSession session = request.getSession();System.out.println(session);System.out.println(response);return "suc";
}

三、不常用的注解

3.1 @RequestParam注解

@RequestParam注解用于将HTTP请求中的指定参数绑定到方法参数中。它常用于请求参数的个别处理,特别是当请求参数的名称与方法参数的名称不一致时。

使用方法
@Controller
@RequestMapping("/dept")
public class DeptController {@RequestMapping("/save")public String save(@RequestParam(value = "username", required = false) String name) {System.out.println("Username: " + name);return "suc";}
}
  • value:指定请求参数的名称。
  • required:指定该参数是否必须提供,默认值是true,如果未提供,则抛出MissingServletRequestParameterException

3.2 @RequestParam常见用法

  • 指定请求参数名称
@RequestParam("username")
public String saveUser(@RequestParam("username") String username) {return "suc";
}
  • 设置默认值
@RequestParam(value = "username", defaultValue = "guest")
public String saveUser(@RequestParam("username") String username) {return "suc";
}

结论

        通过@RequestMapping及其相关注解,Spring MVC简化了Web请求的处理过程,使得控制器能够更方便地与请求进行交互。掌握请求参数绑定、@RequestParam的使用方法,以及如何处理表单数据和复杂类型,能帮助我们更高效地开发Web应用。在实际项目中,我们可以根据需求选择合适的注解进行处理,提高开发效率和代码可读性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词