4Spring MVC 請求參數綁定

第三章:請求參數的額綁定
1請求參數的綁定說明
    1綁定機制
        1.表單提交的數據都是k=v格式的 username=haha&password=123
        username=hehe&passwd=123
        MVC框架, sayHello(String username, String password)

        2.springMVC的參數綁定過程是把表單提交的請求參數,作爲控制器中方法的參數進行綁定的
        3.要求:提交表單的name和參數的名稱是相同的
    2.支持的數據類型
        1.基於數據類型和字符串類型
        2.實體類型(JavaBean)
        3.集合數據類型(List,map集合等)
2基本數據類型和字符串類型
    1.提交表單的name和參數的名稱是相同的
    2.區分大小寫
3實體類型(JavaBean)
    1.提交表單的name和javaBean中的屬性名稱需要一直
    2.如果一個JavaBean類中包含其他的引用類型,那麼表單的name屬性需要編寫成:對象.屬性 例如:

3.1.2 支持的數據類型
基本類型參數:基本類型和String類型
POJO類型參數:包括實體類,以及關聯的實體類
數據和集合類型參數:包括List結構和Map結構的集合(包括數組)
SpringMVC綁定請求參數是自動實現的,但是要想使用,必須遵循使用要求。

3.13使用要求:
    如果是基本類型或者String類型
        要求我們的參數名稱必須和控制器中方法的形參名稱保持一致(嚴格區分大小寫)
    如果是POJO類型,或者他的關聯對象:
        要求表單中參數名稱和POJO類的屬性名稱保持一致,並且控制器方法的參數類型是POJO類型。
    如果是集合類型,有兩種方法:





實戰
webapp->New->JSP/JSPX->params(新建文件)
cn.itcast.controller->New->ParamController.java


執行,訪問
http://localhost:8080/springmvc_day01_01_start/
http://localhost:8080/springmvc_day01_01_start/param.jsp 回車->點擊參數綁定,跳轉到下面網址
http://localhost:8080/springmvc_day01_01_start/param/testParam

如果下列代碼
    <a href="param/testParam?username=hehe">請求參數綁定</a>
    會自動把參數值賦值給下面方法
    public String testParam(String username){


全部代碼如下
param.jsp內容

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/3/22
  Time: 13:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%--請求參數綁定--%>
    <a href="param/testParam?username=hehe&password=123">請求參數綁定</a>
</body>
</html>


ParamController.java代碼如下
package cn.itcast.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/*
*  請求參數綁定
* */
@Controller    //把類交給容器關
@RequestMapping("/param")
public class ParamController {
    /*
     * 請求參數綁定入門
     * */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){

        System.out.println("執行了。。。");
        System.out.println("用戶名: "+username);
        System.out.println("密碼: "+password);
        return "success";
    }
}





P11把數據封裝到Java bean的對象中
java->new->郵件包->cn.itcast.domain->創建類Account

名字必須對應起來
右鍵->Generate->toString 方法和GET/SET方法
public class Account implements Serializable {
    private String username;
    private String password;
    private Double money;
}
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="submit" name="提交"/>
    </form>

ParamController.java中
    /*
    *請求參數綁定吧數據封裝到JavaBean的類中
    * */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){

        System.out.println("執行了。。。");
        return "success";
    }
運行,訪問頁面如下
http://localhost:8080/springmvc_day01_01_start/param.jsp



P11 domain->User.java類(生成GET/SET 和toString)
package cn.itcast.domain;

import java.io.Serializable;

public class User implements Serializable {
    private String uname;
    private Integer age;

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public Integer getAge() {
        return age;
    }

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

Account中,清除生成的GET/SET 和toString之後,重新生成
    <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" name="提交"/>
    </form>

ParamController.java
    /*
    *請求參數綁定吧數據封裝到JavaBean的類中
    * */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){

        System.out.println("執行了。。。");
        System.out.println(account);
        return "success";
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章