SSM之SpringMVC系列(二)---- 请求参数的绑定和常用的注解

本文详细介绍了SpringMVC中请求参数的绑定机制,包括基本类型、String、POJO、集合类型的参数绑定,以及如何解决请求参数乱码问题。此外,还讲解了自定义类型转换器的实现和使用Servlet原生API作为参数的方法。接着,文章讨论了SpringMVC中常用的注解,如@RequestParam、@RequestBody、@PathVariable、@RequestHeader、@CookieValue、@ModelAttribute和@SessionAttributes,阐述了它们的作用和使用场景。
摘要由CSDN通过智能技术生成

上篇文章我们讲了SpringMVC 概述和SpringMVC 入门,现在来讲SpringMVC中请求参数的绑定和常用的注解

请求参数的绑定

绑定的机制

  • 当我们从表单提交数据到后台的时候,请求参数都是基于key=value的形式,SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。譬如:
<a href="user/findAccount?accountId=10">查询账户</a>

上面代码的请求参数是:accountId=10

  • 此时我们利用 SpingMVC 就可以这样接收:
	/**
	* 查询账户
	* @return
	*/
	@RequestMapping("/user")
	public String findAccount(Integer accountId) {
   
		System.out.println("查询了账户。。。。"+accountId);
		return "success"; 
	}

支持的数据类型:

  • 基本类型参数:
    • 包括基本类型和String类型
  • POJO 类型参数:
    • 包括实体类,以及关联的实体类
  • 数组和集合类型参数:
    • 包括 List结构和Map结构的集合(包括数组)

SpringMVC 绑定请求参数是自动实现的,但是要想使用,必须遵循使用要求。

基本类型和 String 类型作为参数

  • 如果是基本类型或者 String 类型,要求我们的参数名称必须和控制器中方法的形参名称保持一致。(严格区分大小写),见以下示例:
  • param.jsp代码:
<%-- 请求参数绑定--%>
    <a href="param/testParam?username=zhang&password=123">请求参数绑定</a><hr/>
  • ParamController控制器代码
/**
 * 请求参数绑定
 */
@Controller
@RequestMapping("/param")
public class ParamController {
   

    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
   
        System.out.println("用户名:" +username);
        System.out.println("密码:" +password);
        System.out.println("执行了...");
        return "success";
    }
  • 运行结果
    在这里插入图片描述

POJO 类型作为参数

  • 如果是 POJO 类型,或者它的关联对象, 要求表单中参数名称和 POJO 类的属性名称保持一致。并且控制器方法的参数类型是POJO 类型。特别地,如果 POJO 类中含有其他 POJO 类的引用,那么请求参数名称应该为 外部属性名.内部属性名,见以下示例:
  • param.jsp代码:
<form action="param/saveAccount" method="post">
        账号:<input type="text" name="username"><br/>
        密码:<input type="text" name="password"><br/>
        金额:<input type="text" name="money"><br/>
        用户姓名:<input type="text" name="user.uname"><br/>
        用户年龄:<input type="text" name="user.age"><br/>
        <input type="submit" value="提交"><br/>
    </form>
  • ParamController控制器代码
/**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
   
        System.out.println("执行了...");
        System.out.println(account);
        return "success";
    }
  • 实体类 Account 类、User 类代码:
public class Account implements Serializable {
   

    private String username;
    private String password;
    private Double money;
    private User user;

    public String getUsername() {
   
        return username;
    }

    public void setUsername(String username) {
   
        this.username = username;
    }

    public String getPassword() {
   
        return password;
    }

    public void setPassword(String password) {
   
        this.password = password;
    }

    public Double getMoney() {
   
        return money;
    }

    public void setMoney(Double money) {
   
        this.money = money;
    }

    public User getUser() {
   
        return user;
    }

    public void setUser(User user) {
   
        this.user = user;
    }

    @Override
    public String toString() {
   
        return 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值