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 + '\'' +
'}';
}
}