• 【Spring】SpringMVC中浅析数据的传递方式


    包括了基本数据类型的传递和 Date数据类型的传递。关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL

    假设有表单页面如下:

        <h1>登录</h1>
        
        <form action="login.do" method="post">
            帐号:<input type="text" name="uname"/><br><br>
            密码:<input type="password" name="upass"/><br><br>
            <input type="submit" value="登录"/>
        </form>

    那么后台的Controller获取数据有三种方式

    第一种:

    通过@RequestParam注解

        @RequestMapping("/login.do")
        public String login1(@RequestParam("uname") String userName,@RequestParam("upass") String userPass){
            System.out.println("登录的用户:"+userName+",他的密码是:"+userPass);
            return null;
        }
    /*
     * 我们也可以在接受数据的指定默认值,在接受用户登录的时候指定默认值显然不合适,下面只是为了距离,如:
    @RequestMapping("/login.do") public String login1(@RequestParam(value="uname",required=false,defaultValue="jame") String userName,@RequestParam(value="upass",required=false,defaultValue="123456") String userPass){ System.out.println("登录的用户:"+userName+",他的密码是:"+userPass); return null; }
    */

    第二种:

    将参数的名称和表单中参数的名称写成一致

        @RequestMapping("/login.do")
        public String login2(String uname,String upass){
            System.out.println("第二种方式获取: 登录的用户:"+uname+",他的密码是:"+upass);
            
            return null;
        }

    第三种:

    将表单中的参数封装为一个bean类,其中的属性必须和表中需要传递参数的名称一致

    package cn.xdl.controller;
    
    public class UserBean {
    
        private String uname;
        private String upass;
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
        public String getUpass() {
            return upass;
        }
        public void setUpass(String upass) {
            this.upass = upass;
        }
        public UserBean(String uname, String upass) {
            super();
            this.uname = uname;
            this.upass = upass;
        }
        public UserBean() {
            super();
            // TODO Auto-generated constructor stub
        }
        @Override
        public String toString() {
            return "UserBean [uname=" + uname + ", upass=" + upass + "]";
        }
        
        
    }
    UserBean.java

    Controller如下:

        @RequestMapping("/login.do")
        public String login3(UserBean ub){
            System.out.println("第三种方式获取:"+ub);
            
            return null;
        }

    下面介绍SpringMVC中Date数据类型的传递

    在控制器中加入如下代码:

        @InitBinder
        public void initBinder(ServletRequestDataBinder bin){
                /*
                 * SimpleDateFormat位于java.text.SimpleDateFormat
                 * 该对象除了使用给定的日期模式构造对象,还提供了两个常用的方法,
                 * public final String format(Date date) -- 继承自该类的父类,用于将Date对象转化为字符串
                 * public Date parse(String source) -- 继承自该类的父类,用于将字符串转化为Date对象
                 */
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 CustomDateEditor cust = new CustomDateEditor(sdf,true);
                 bin.registerCustomEditor(Date.class,cust);
        }

    这样注解之后,前端传过来的String类型的数据就可以在控制器方法参数中自动转化为Date类型数据:

    @RequestMapping(value="/index2")
    public String helloaction2(Date date){  //这里的参数自动将String转化为date类型
     
             return "index";
    }

    原文链接:http://blog.csdn.net/javaloveiphone/article/details/53745068

  • 相关阅读:
    sprin AOP
    springDI注解
    Spring学习
    cookie、session、token三者之间的关系
    解决报错:Cannot find module 'webpack-cli/bin/config-yargs'
    Vue全家桶-前端工程化
    Vue全家桶-前端路由
    Vue
    Git
    Ajax
  • 原文地址:https://www.cnblogs.com/HDK2016/p/6234713.html
Copyright © 2020-2023  润新知