zoukankan      html  css  js  c++  java
  • SpringMVC数据绑定

    一、数据绑定的相关注解

      

      @RequestMapping(value = "/ok1",method = {RequestMethod.GET})
        public String ok1(User user){
            System.out.println(user.getUsername());
            System.out.println(user.getPwd());
            return "success";
        }

    最基本的传值方法。

    二、Spring Web MVC提供Model、Map或ModelMap让我们能去暴露渲染视图需要的模型数据。虽然此处注入的是三个不同的类型(Model model,Map model2,ModelMap model3),但是三者是同一个对象。

    @RequestMapping(value = "/ok2")
        public String ok2(User user, Map map,ModelMap mm,Model m){
           // map.put("username",user.getUsername()+"˧");
           // mm.addAttribute("username",user.getUsername()+"˧");
            m.addAttribute("username",user.getUsername()+"˧");
            return "success";
        }

    三、@RequestParam

       绑定单个请求参数值,@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。如以下代码:

    public String requestparam(@RequestParam String username)
    

    请求中包含username参数(如/requestparam?username=zhang),则自动传入。

     @RequestMapping(value = "/ok3")
        public String ok3(@RequestParam String username,@RequestParam String pwd){
            System.out.println(username);
            System.out.println(pwd);
            return "success";
        }

    也可以在里面加上参数value:

    @RequestMapping(value = "/ok4")
        public String ok4(@RequestParam(value = "user") String username){
            System.out.println(username);
            return "success";
        }
    <a href="/his/ok4?user=weikun">ok4</a>

    前端的名字必须为user。

      也可以传入一个列表或者是一个数组

     <a href="/his/ok5?user=weikun&user=mike">ok5</a>
     <a href="/his/ok6?user=weikun&user=mike">ok6</a>
     @RequestMapping(value = "/ok5")
        public String ok5(@RequestParam(value = "user") String[] users){
            System.out.println(users[0]);
            System.out.println(users[1]);
            return "success";
        }
        @RequestMapping(value = "/ok6")
        public String ok6(@RequestParam(value = "user") List users){
            System.out.println(users.get(0));
            System.out.println(users.get(1));
            return "success";
        }

    四、@CookieValue

       @Cookievalue用于将请求的Cookie数据映射到功能处理方法的参数上。

    public String test(@CookieValue(value="JSESSIONID",defaultValue="")String sessionID){}

      如上配置将会自动将JSESSIONID值传入到sessionId参数上,defaultValue表示Cookie中没有JSESSIONID时默认为空。

      实例:

    <body>
    COOKIE:${cookie.hit.value}
    </body>

    ${}这种传值方法是JSP的EL表达式。

        @RequestMapping(value = "/ok7")
        public String ok7(
                @CookieValue(value="hitCounter", defaultValue = "8") Long hit, HttpServletResponse response){
            Cookie cookie=new Cookie("hit",new Long(++hit).toString());
            response.addCookie(cookie);
            return "success";
        }

    将hitCounter传入到hit参数上,然后利用传入的response将cookie加到返回的页面上。

    五、@ModelAttribute

        绑定请求参数到命令对象

        @ModelAttribute一共具有如下三个作用:

          1、绑定请求参数到命令对象:放在功能处理方法的入参时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用;

          2、暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的城市等,而且在执行功能处理方法(@RequestMapping注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用;

          3、暴露@RequestMapping方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。

        绑定请求参数到命令对象如用户登录,我们需要捕获用户登录的请求参数(用户名、密码)并封装为用户对象,此时我们可以使用@ModelAttribute绑定多个请求参数到我们的命令对象。

    public String test(@ModelAttribute("user") User user)
        public String ok1(@ModelAttribute("user1") User user){
            System.out.println(user.getUsername());
            System.out.println(user.getPwd());
            return "success";
        }

      上面的是参数中加上@ModelAttribute注解。还可以用到返回值中,但是,加到返回值中的时候,原来要返回的页面名称就不会返回了,这时,我们可以在视图层创建一个对应的jsp文件,将会自动转到这个页面。

      @RequestMapping(value="/ok2")
        public @ModelAttribute("user1") User ok2(User user,Map map){
            System.out.println(map.containsKey("user"));
            user.setUsername(user.getUsername()+"帅");
            return user;
        }

    ok2.jsp:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>${user.username}</h1>
    </body>
    </html>

    返回列表的形式:

    @RequestMapping(value="/ok3")
        public @ModelAttribute List<String> ok3(){
            return Arrays.asList("北京","上海","杭州");
        }

    返回键值对即hashmap:

        @RequestMapping(value="/ok5")
        public @ModelAttribute Map<String,User> ok5(){
            Map<String,User> map=new HashMap();
            map.put("A",new User("Mike","119"));
            map.put("B",new User("Rose","888"));
            return map;
        }

    六、@SessionAttribus

      @SessionAttributes绑定命令对象到session

       有时候我们需要在多次请求之间保持数据,一般情况需要我们明确的调用HttpSession的API来存取会话数据,如多步骤提交的表单。在控制器类前就要加上@SessionAttribute注解

    @SessionAttributes(value = {"username","pwd"})

    方法为:

      @RequestMapping(value="/ok7")
        public void ok7(){
    
        }

    jsp为:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    ${sessionScope.username}
    </body>
    </html>
  • 相关阅读:
    Ubantu 查看系统资源占用
    C do {...} while (0) 在宏定义中的作用
    Redis架构设计
    Ubantu 安装boost环境
    Ubuntu 安装谷歌拼音输入法
    Ubuntu C/C++开发环境的安装和配置
    ubuntu 14.04英文环境设置成中文
    自己动手写可视化软件(代码已开源)
    探秘Tomcat——连接篇
    探秘Tomcat——连接器和容器的优雅启动
  • 原文地址:https://www.cnblogs.com/television/p/8732488.html
Copyright © 2011-2022 走看看