从零开始学SpringMVC(四)——接收参数

  • 使用传统的request对象接收参数(参数名称要一致)

SpringMVC框架会自动把Request对象传递给方法,只需要根据名称即可获取对应的值

  1. goods.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Goods.jsp</title>
</head>
<body>
  <form action="${pageContext.request.contextPath}/myform.action" method="post">
      商品名称:<input type="text" placeholder="输入商品名称" name="goods_name"><br>
      商品价格:<input type="text" placeholder="输入商品价格" name="goods_price"><br>
      <input type="submit" value="提交">
  </form>
</body>
</html>
  1. result.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>result.jsp</title>
</head>
<body>
 提交结果<br>
   商品名称:${goods_name}<br>
   商品价格:${goods_price}<br>
</body>
</html>
  1. Controller.java
@Controller
public class MyFirstController {

    @RequestMapping("/myform.action")
    public ModelAndView myform(HttpServletRequest request){
        //获取数据
        String goods_name = request.getParameter("goods_name");
        String goods_price = request.getParameter("goods_price");
        //创建ModelAndView用来存放数据和视图
        ModelAndView modelAndView = new ModelAndView();
        //设置数据到视图中
        modelAndView.addObject("goods_name",goods_name);
        modelAndView.addObject("goods_price",goods_price);
        //设置视图
        modelAndView.setViewName("result");//会根据springMVC.xml中的配置自动拼接成/result.jsp
        //将modelAndView返回
        return modelAndView;
    }
}
  1. 运行结果

 

  • 不使用request对象接收简单类型参数

当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。

如果形参的类型与绑定的类型不一致时,可以使用@RequestParam进行匹配

@RequestParam使用说明:

value:请求参数名称

required:是否必须(默认为true),表示请求中一定要有相应的参数,否则会报错

defaultValue:设置默认值,表示请求中如果没有同名的参数,则使用defaultValue中的值

  • 使用javaBean对象接收参数(要求对象当中的属性要和表单当中的名称一致)
  1. Goods.java
@Setter @Getter @ToString
public class Goods {
    private String goods_name;
    private String goods_price;
}
  1. result.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>result.jsp</title>
</head>
<body>
 提交结果<br>
   商品名称:${goods.goods_name}<br>
   商品价格:${goods.goods_price}<br>
</body>
</html>
  1. Controller.java
@Controller
public class MyFirstController {

  @RequestMapping("/myform.action")
    public ModelAndView myform(Goods goods){

        //创建ModelAndView用来存放数据和视图
        ModelAndView modelAndView = new ModelAndView();
        //设置数据到视图中
        modelAndView.addObject("goods",goods);
        //设置视图
        modelAndView.setViewName("result");//会根据springMVC.xml中的配置自动拼接成/result.jsp
        //将modelAndView返回
        return modelAndView;
    }
}
  • 使用数组接收参数(name相同时可以使用数组来接收对应的参数)
  1. 编写User类
public class User {
    private String user_name;
    private String user_age;
    private String hobby[];

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

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

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

    public String getUser_name() {
        return user_name;
    }

    public String getUser_age() {
        return user_age;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "user_name='" + user_name + '\'' +
                ", user_age='" + user_age + '\'' +
                ", hobby=" + Arrays.toString(hobby) +
                '}';
    }
}
  1. First.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>First.jsp</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/mysubmit.action"  method="post">
    user:<input type="text" name="user_name"><br>
    age:<input type="text" name="user_age" ><br>
    爱好:<input type="checkbox" name="hobby" value="篮球"> 篮球
    <input type="checkbox" name="hobby" value="乒乓球"> 乒乓球
    <input type="checkbox" name="hobby" value="足球"&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值