参数绑定

1.参数绑定定义

客户端请求的key/value数据 经过参数绑定,将其绑定到Controller的形参上,然后Controller直接使用该形参。

2.默认数据类型

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession:HttpServletRequest调用getSession方法创建的
  • Model/ModelMap对象:ModelMap对象用来传递控制器方法中的数据信息到结果页面,类似request的setAttribute方法。Model/ModelMap通过addAttribute方法向页面传递参数。

实现

  • MyController
@Controller
public class MyController3 {

    @RequestMapping(value = "/con3", method = RequestMethod.POST)
    public void param(HttpServletRequest request, HttpServletResponse response) throws Exception{
        String msg = request.getParameter("msg");
        System.out.println(msg);
        response.setContentType("text/html;charset = UTF-8");
        response.getWriter().print("Response");
    }

    @RequestMapping(value = "/con32", method = RequestMethod.GET)
    public String param2(HttpSession session, Model model, Map<String,Object> map) throws Exception{
        session.setAttribute("session1", "lwx");
        model.addAttribute("model1", "SpringMVC");
        map.put("map1","MAP");
        return "page3";
    }
}
  • page3.jsp
    界面点击执行/con3对应方法
    界面接受/con32对应方法转发的参数
<body>
    <form action="con3" method="post">
        <input name="msg" placeholder="input"><br>
        <input type="submit" value="post">
    </form>

httpsession: ${session1}<br>

Model ${model1}<br>

Map ${map1}

</body>
  • page32.jsp
    界面点击执行/con32对应方法,再转发到page3.jsp
<body>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" +
                            request.getServerPort() + path + "/";
    %>
<a href="<%= basePath %>con32">con32</a>
</body>

3.简单数据类型

Controller层

/**
 * 参数绑定
 *     基本类型
 *     String/包装类型  默认为null
 *     数组
 *     集合-list/map
 */
@Controller
public class ParamsController {
    /**
     * 访问时带参数a=1&1.1即可绑定
     *      如果不设置默认值 也没传入值 会报错500错误
     * @RequsetParam name为参数别名
     * @param a
     * @param b
     */

    @RequestMapping("fun1")
    public void fun1(@RequestParam(name = "a",defaultValue = "10") int a
            ,@RequestParam(defaultValue ="10.10" ) double b){
        System.out.println(a+" "+b);
    }

    /**
     *  传参形式?arr=1&arr=2
     * @param arr
     */
    @RequestMapping("fun2")
    public void fun2(int[] arr){
        for(int v:arr){
            System.out.println(v);
        }
    }

    /**
     * 客户端参数名称与user属性名一致即可
     *      http://localhost:8080/fun3.do?id=123&userName=admin
     * @param user
     */
    @RequestMapping("fun3")
    public void fun3(User user){
        System.out.println(user.getId()+" "+user.getUserName());
    }

    /**
     * 集合:使用bean包装
     */
    @RequestMapping("fun4")
    public void fun4(User user){
        System.out.println("fun4");
        user.getList().forEach(val->{
            System.out.println(val);
        });
        user.getMap().forEach((k,v)->{
            System.out.println(k+" "+v);
        });
    }

}

form.jsp

<html>
  <head>
    <title>Title</title>
  </head>
  <body>
<%--    自动绑定成bean--%>
<%--    name和实体属性名一致即可--%>
    <form action="/fun4.do" method="post">
      <input name="list" value="1234">
      <input name="list" value="5678">
      <input name="map['11']" value="1111">
      <input name="map['22']" value="2222">

      <button type="submit">submit</button>
    </form>
  </body>
</html>
posted @   lwx_R  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示