hualinux springMVC 5.5:映射请求参数 &请求参数

本文详细介绍了SpringMVC中@RequestParam、@RequestHeader、@CookieValue及POJO对象的使用方法,展示了如何绑定请求参数、请求头、Cookie值以及如何使用POJO对象自动填充属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、使用 @RequestParam 绑定请求参数值

二、 使用 @RequestHeader 绑定请求报头的属性值(了解)

三、使用 @CookieValue 绑定请求中的 Cookie 值

四、使用 POJO 对象绑定请求参数值


使用 @RequestParam 绑定请求参数值
使用 @RequestHeader 绑定请求报头的属性值(了解)
使用 @CookieValue 绑定请求中的 Cookie 值
使用 POJO 对象绑定请求参数值

一、使用 @RequestParam 绑定请求参数值

在处理方法入参处使用@RequestParam可以把请求参
数传递给请求方法
- value :参数名
- required :是否必须。默认为true,表示请求参数中必须包含对应
的参数,若不存在,将抛出异常

在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:

    /*
     * @RequestParam来映射请求参数。
     * value 值即请求参数的参数名
     * required 该参数是否必须。默认为 true
     * defaultValue 请求参数的默认值
     * */
    @RequestMapping("springmvc/testRequestParam")
    public String testRequestParam(@RequestParam(value = "username") String un,
                                   @RequestParam(value = "age",required = false) Integer age){
        System.out.println("testRequestParam,username:"+un+",age:"+age);

        return "ok";
    }

web/index.jsp页面的<body></body>标签中添加如下代码:

<p><a href="springmvc/testRequestParam?username=hua&age=11">testRequestParam?username=hua&age=11</a></p>

运行tomcat,idea会自动打开主页点,下面链接

如果少了一个age参数,在尾部添加

springmvc/testRequestParam?username=hua会报如下错误:

如果age是非必要的话,可以设置为

@RequestParam(value = "age",required = false) int age){

再重启访问上面的少了一个age的地址一样报错

int类型无法传,要么把age改为Integer类型

     @RequestParam(value = "age",required = false) Integer age)

要么你非要用int的话,参数传不过来就会报错,那么我就传一个默认的0,这样就解决了

@RequestParam(value = "age",required = false,defaultValue = "0") int age)

结果为:testRequestParam,username:hua,age:0

 

二、 使用 @RequestHeader 绑定请求报头的属性值(了解)

包含了若干个属性,服器可据此知客端的信 息,@RequestHeader 即可将中的属性值绑定到理方法的入参中

在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:

    /*
     * 了解:
     * 映射请求头信息,用法用@RequestParam
     * */
    @RequestMapping("springmvc/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value = "Accept-Language") String a1){
        System.out.println("testRequestHeader,Accept-Language:"+a1);
        return "ok";
    }

web/index.jsp页面的<body></body>标签中添加如下代码:

<p><a href="springmvc/testRequestHeader">Test RequestHeader</a></p>

运行tomcat,idea会自动打开主页点,下面链接

 看idea日志控制台,如下:

testRequestHeader,Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

 

三、使用 @CookieValue 绑定请求中的 Cookie 值

@CookieValue 让处理方法入参定某个 Cookie

先用火狐浏览器,打开刚才测试的页面,然后再F12调出开发插件,得到一个cookie变量“JSESSIONID”值为“BE97D9EA3E2207FF7251C878CDD323DE”如下图:

 

在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:

  /*
     * 了解:
     * @CookieValue:映射一个Cookie值。属性同@RequestParam
     * */
    @RequestMapping("/springmvc/testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String seesionId){
        System.out.println("testCookieValue:seesionId:"+seesionId);
        return "ok";
    }

打开web/index.jsp,在其页面的<body></body>标签中添加如下代码:

<p><a href="springmvc/testCookieValue">Test CookieValue</a></p>

运行tomcat,idea会自动打开主页点,下面链接

得到请求的Cookie

再看一下idea最下方的日志控制台,得到cookie,结果是相同的:

 

四、使用 POJO 对象绑定请求参数值

Spring MVC 会按求参数名和 POJO 属性名行自匹配,自动为该对象填充属支持级联属性

如:dept.deptIddept.address.tel

如果你们请求的是一个表单的话,这个表单通常是对应一个类的对象,如果一个个用@RequestMapping()去映射的话那这个成本太高了,太麻烦!这时候我们就可以用一个java对象来请求参数,POJO简单的Java对象,主要是获取请求中的大量参数。

建立 src/main/java/com.hualinux.srpingmvc.entities/Address.java

package com.hualinux.srpingmvc.entities;

public class Address {
    private String province;
    private String city;

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }

}

建立 src/main/java/com.hualinux.srpingmvc.entities/User.java

package com.hualinux.srpingmvc.entities;

public class User {
    private String username;
    private String password;
    private String email;
    private int age;
    private Address address;

    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }

}

在src/main/java/com.hualinux.srpingmvc.handers/SpringMVCTest.java,添加如下代码:

    /*
     * Spring MVC 会按请求参数名和POJO 属性名进行自动匹配。
     * 自动为该对象填充属性值。支持级联属性。如dept.deptId、dept.address.tel等
     * */
    @RequestMapping("/springmvc/testPojo")
    public String testPojo(User user){
        System.out.println("testPojo:"+user);
        return "ok";
    }

打开web/index.jsp,在其页面的<body></body>标签中添加如下代码:

<p>
<form action="springmvc/testPojo" method="post">
  username:<input type="text" name="username"/><br>
  password:<input type="password" name="password"/><br>
    email:<input type="text" name="email"/><br>
     age:<input type="text" name="age"/><br>
  city:<input type="text" name="address.city"><br>
  province:<input type="text" name="address.province"><br>
  <input type="submit" value="submit"/>
</form>
</p>

运行tomcat,idea会自动打开主页点,下面链接

测试:运行随便输入一行数据,我这里密码是123

看idea正下方日志为:

testPojo:User{username='hua', password='123', email='hualinux@hua.com', age=20, address=Address{province='gz', city='gz'}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值