SpringMvc五种传参方式

参数传递方式1–使用HTTPServletRequest

 @RequestMapping("/param1")
    public Object testParam1(HttpServletRequest request){
       //获取前台的参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println(username+"---"+password);
        return null;        // 不知道要返回什么页面 ,默认将 param1 路径名作为jsp文件名
        //return "test1";  //  访问路径:/WEB-INF/jsp/test1.jsp
    }

参数传递方式2–方法的参数名和页面参数一致

适用于 页面参数 比较少的情况下

  @RequestMapping("/param2")
    public Object testParam2(String username1,String password1){
        System.out.println(username1+"---"+password1);
        return null;
    }

参数传递方式3–方法参数名和页面参数名称不一致 (但是又想拿到 页面参数)

变量名可以随便写
defaultValue: 代表当前参数的默认值 ,该属性不是必须的,是可选的 ,如果是分页可能设置为1
required: 必须的, 默认值是true ,代表当前参数必须给值 , 可以设置为false
如果对参数没有特殊要求,一般写为: @RequestParam(“password”) String password 就可以了.

@RequestMapping("/param3")
    public Object testParam3(@RequestParam(name="username") String username1,
                             @RequestParam("password") String password1){
        System.out.println(username1+"---"+password1);
        return null;
    }

//参数传递方式4–参数过多使用对象作为参数

@RequestMapping("/param4")
    public Object testParam4(User u){
        System.out.println(u);
        return null;
    }

参数传递方式5–包含时间类型,需要类型转换

springmvc 对于时间 , 仅支持 格式: 2020/11/12 2020-01-02

@RequestMapping("/param5")
    public Object testParam5(User u){
        System.out.println(u);
        return null;
    }

针对第四、五种传参方式的封装

 private String username;
    private String password;

    //@DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date time;

    // 最简单的方式 : 类中的 时间就是String类型 , 数据表中字段也是String

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", time=" + time +
                '}';
    }
    //生成get set方法

日期转换类

public class TimeUtils implements Converter<String, Date> {
    @Override
    public Date convert(String s) {
        //判断输入的时间是否 为空
        //方法一:
        if(StrUtil.isEmpty(s)){
            throw new RuntimeException("日期不能为空");
        }
        DateTime time = DateUtil.parse(s, "yyyy-MM-dd");
        return time;

       /* 方法二:
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date date = sdf.parse(s);
            return date;
        } catch (ParseException e) {
            //e.printStackTrace();
            throw new RuntimeException("日期转换失败");   //这句话类似于 return语句
        }*/
        //return null;
    }
}

前台jsp页面

<body>

    <fieldset>
      <legend>参数传递方式1--使用HTTPServletRequest</legend>
      <form action="param/param1" method="get">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <input type="submit" value="提交"><br>
      </form>
    </fieldset>

    <fieldset>
      <legend>参数传递方式2--方法的参数名和页面参数一致</legend>
      <form action="param/param2" method="post">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <input type="submit" value="提交"><br>
      </form>
    </fieldset>

    <fieldset>
      <legend>参数传递方式3--方法参数名和页面参数名称不一致</legend>
      <form action="param/param3" method="post">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <input type="submit" value="提交"><br>
      </form>
    </fieldset>

    <fieldset>
      <legend>参数传递方式4--参数过多使用对象作为参数</legend>
      <form action="param/param4" method="post">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <input type="submit" value="提交"><br>
      </form>
    </fieldset>

    <fieldset>
      <legend>参数传递方式5--包含时间类型,需要类型转换</legend>
      <form action="param/param5" method="post">
        账号:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        日期:<input type="text" name="time"><br>
        <input type="submit" value="提交"><br>
      </form>
    </fieldset>
  </body>

版权声明:本文为wzw_jiexika原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。