SpringMVC接收參數

SpringMVC接收參數

1.使用原生request對象接收參數

2.當請求的參數名稱和處理器形參名稱一致的時候會將請求參數和形式參數進行綁定

3.使用javaBean來接收參數

4.使用數組來接收參數

5.包裝類來接收參數

6.List集合來接收參數

代碼示例:

 

前端請求頁面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%--使用原生的request對象接收參數--%>
  <a href="${pageContext.request.contextPath}/first?id=1&name=helong">發送請求</a>
  <hr>

  <%--當請求的參數名稱和處理器形參名稱一致時會將請求參與形式參數進行綁定--%>
  <a href="${pageContext.request.contextPath}/second?id=1&name=helong">發送請求</a>
  <hr>

  <%--使用javaBean接收參數--%>
  <form action="${pageContext.request.contextPath}/there">
    user:<input type="text" name="user_name"><br>
    age:<input type="text" name="user_age"><br>
    <input type="submit" value="提交">
  </form>
  <hr>

  <%--使用數組直接來接收參數--%>
  <form action="${pageContext.request.contextPath}/four">
  user:<input type="text" name="user_name"><br>
  age:<input type="text" name="user_age"><br>
    hobby:<input type="checkbox" value="籃球" name="hobby">籃球
    <input type="checkbox" value="足球" name="hobby">足球
    <input type="checkbox" vlaue="乒乓球" nmae="hobby">乒乓球
  <input type="submit" value="提交">
  </form>
  <hr>

  <%--包裝類接收的參數--%>
  <form action="${pageContext.request.contextPath}/five">
    user:<input type="text" name="user_name"><br>
    age:<input type="text" name="user_age"><br>
    hobby:
    <input type="checkbox" value="籃球" name="hobby">籃球
    <input type="checkbox" value="足球" name="hobby">足球
    <input type="checkbox" vlaue="乒乓球" nmae="hobby">乒乓球
    <br>-------------寵物-------------<br>
    寵物名稱:<input type="text" name="dog.name"><br>
    寵物顏色:<input type="text" name="dog.color"><br>
    <input type="submit" value="提交">
  </form>
  <hr>

  <%--List集合接收參數--%>
  <form action="${pageContext.request.contextPath}/six">
    user:<input type="text" name="user_name"><br>
    age:<input type="text" name="user_age"><br>
    hobby:
    <input type="checkbox" value="籃球" name="hobby">籃球
    <input type="checkbox" value="足球" name="hobby">足球
    <input type="checkbox" vlaue="乒乓球" nmae="hobby">乒乓球
    <br>-------------寵物-------------<br>
    寵物名稱:<input type="text" name="dog.name"><br>
    寵物顏色:<input type="text" name="dog.color"><br>
    <br>
    寵物1名稱:<input type="text" name="dogs[0].name"><br>
    寵物1顏色:<input type="text" name="dogs[0].color"><br>
    <br>
    寵物2名稱:<input type="text" name="dogs[1].name"><br>
    寵物2顏色:<input type="text" name="dogs[1].color"><br>
    <input type="submit" value="提交">
  </form>

  </body>

Controller前端控制界面:

package com.helong.web.controller;

import com.helong.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

@Controller
public class MyController {

    //方法1
    /*使用原生的request對象接收參數*/
    @RequestMapping("/first")
    public ModelAndView myform1(HttpServletRequest request){
        /*接收參數*/
        String id = request.getParameter("id");
        String name = request.getParameter("name");
       /* System.out.println(id);
        System.out.println(name);*/
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("id",id);
        modelAndView.addObject("name",name);
        modelAndView.setViewName("/second.jsp");
        return modelAndView;
    }

    //方法2
    /*不使用request接收簡單類型參數
    * 當請求的參數名稱和處理器形參名稱一致時會將請求參與形式參數進行綁定
    * */
    /*使用下面這種方法的前提是與發送參數的名稱保持一致*/
   /* public ModelAndView myfrom2(Integer id,String name){*/
   @RequestMapping("/second")/*發送參數和接收參數的名稱不一致時,要使用下面這種方式接收到參數*/
   public ModelAndView myform2(@RequestParam(value="id",required = false,defaultValue = "100")Integer idkey, String name){
       /*
       * @RequestParam(value="id",required = false)Integer idkey
       *
       * @RequestParam可以設置參數名稱不一致時,可以用其他參數代替時的寫法,
       * value=""中的值就是前端界面發送過來的參數名.
       *
       * required,表示這個參數是否需要傳遞,如果爲false,前端沒有傳遞這個參數也不會報錯。
       * 如果爲true,則前端不傳遞這個參數的話就會報錯。默認情況下這個參數爲true
       *
       * defaultValue="100",表示當不傳遞參數的時候,該數據就爲默認值,無論required是否爲true。
       * */
       System.out.println(idkey);
        System.out.println(name);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("id",idkey);
        modelAndView.addObject("name",name);
        modelAndView.setViewName("/second.jsp");
        return modelAndView;
    }

    //方法3
    /*使用javaBean接收參數*/
    @RequestMapping("there")
    public String myform3(User user){
        /*
        在domain中創建User這個類,
        並且要求這個類中的字段爲前端發送的參數的名稱保持一致
        然後再把這個javaBean類作爲參數傳遞給這個方法
        */
        System.out.println(user);
        return "/second.jsp";
    }

    //方法4
    /*1.使用數組直接來接收參數*/
    /*@RequestMapping("/four")
    public String myform4(String name[]){
        *//*
        * 使用這種方式時候,數組的名稱必須要和參數的名稱保持一致
        * *//*
        System.out.println(Arrays.toString(name));
        return "/second.jsp";
    }*/

    /*2.數組和javaBean結合的方式來接收數據 */
        /*1).創建javaBean類來接收數據 注意接收的參數名與傳遞的參數名稱保持一致*/
    @RequestMapping("/four")
    public String myform4(User user){
        System.out.println(user);
        return "/second.jsp";
    }

    //方法5
    /*包裝類接收的參數*/
    /*1.創建一個包裝類Dog(javaBean)
    * 2.將包轉類設置爲其他javaBean類字段 private Dog dog;
    * 3.提供get和set方法
    * */
    @RequestMapping("/five")
    public String myform5(User user){
        System.out.println(user);
        return "/second.jsp";
    }

    //6.List集合接收參數
    /*
    *1.創建一個包裝類Dog,符合javaBean規範
    * 2.在User中設置List集合,並將包裝類作爲泛型;private List<Dog> dogs
    * 3.在類中提供set和get方法
    * */
    @RequestMapping("/six")
    public String myform6(User user){
        System.out.println(user);
        return "/second.jsp";
    }

 }

javaBean:

package com.helong.domain;

import java.util.Arrays;
import java.util.List;

public class User {
    private String user_name;
    private String user_age;
    private String hobby[];
    private Dog dog;
    private List<Dog> dogs;

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_age() {
        return user_age;
    }

    public void setUser_age(String user_age) {
        this.user_age = user_age;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    public List<Dog> getDogs() {
        return dogs;
    }

    public void setDogs(List<Dog> dogs) {
        this.dogs = dogs;
    }

    @Override
    public String toString() {
        return "User{" +
                "user_name='" + user_name + '\'' +
                ", user_age='" + user_age + '\'' +
                ", hobby=" + Arrays.toString(hobby) +
                ", dog=" + dog +
                ", dogs=" + dogs +
                '}';
    }
}
package com.helong.domain;

public class Dog {
    private String name ;
    private String color ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章