• Spring MVC参数封装传递


    在Spring MVC中,前端JSP页面可以传递  基本类型(int,String)、实体类型、包装类型、数组类型、集合类型(List、map )等。

    假如在传递的类型中有 Date类型的字段,需要在 Controller 通过  initBinder()  进行处理,代码如下:

    @Controller
    public class userController {
     
        /*
         * 添加用户
         * 通过基本参数封装获取参数
         */
        @RequestMapping(value = "/user/addUser2", method = RequestMethod.POST)
        public ModelAndView addUser2(String username,String usercode,Date birthday,String address) {
            ModelAndView modelAndView = new ModelAndView();
            userModel model = new userModel();
            model.setUserName(username);
            model.setUserCode(usercode);
            model.setBirthday(birthday);
            model.setAddress(address);
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", model);
            return modelAndView;
        }
          
        //处理日期类型参数
        @InitBinder
        protected void initBinder(WebDataBinder binder) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
        }
    }

    1、HttpServletRequest 获取参数

    JSP页面:

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>普通提交-request.getParameter(args) 获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser"
                    method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="username" id="username"
                            placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="usercode" id="usercode"
                            placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="birthday" id="birthday"
                            placeholder="请输入生日" />
                    </div>
                    <div style=" 200px">
                        <label>地址:</label> <input name="address" id="address"
                            placeholder="请输入地址" />
                    </div>
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>

    Controller:

    /*
         * 添加用户
         * 通过 request.getParameter(args) 获取参数
         */
        @RequestMapping(value = "/user/addUser", method = RequestMethod.POST)
        public ModelAndView addUser(HttpServletRequest request, HttpServletResponse response) {
            ModelAndView modelAndView = new ModelAndView();
            userModel model = new userModel();
            model.setUserName(request.getParameter("username").toString());
            model.setUserCode(request.getParameter("usercode").toString());
            model.setAddress(request.getParameter("address").toString()); 
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", model);
            return modelAndView;
        }

    2、基本类型获取参数

    JSP页面: 

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>普通提交-基本参数取值</legend>
                <form action="${pageContext.request.contextPath }/user/addUser2"
                    method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="username" id="username"
                            placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="usercode" id="usercode"
                            placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="birthday" id="birthday"
                            placeholder="请输入生日" />
                    </div>
                    <div style=" 200px">
                        <label>地址:</label> <input name="address" id="address"
                            placeholder="请输入地址" />
                    </div>
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

     Controller: 

    /*
         * 添加用户
         * 通过基本参数封装获取参数
         */
        @RequestMapping(value = "/user/addUser2", method = RequestMethod.POST)
        public ModelAndView addUser2(String username,String usercode,Date birthday,String address) {
            ModelAndView modelAndView = new ModelAndView();
            userModel model = new userModel();
            model.setUserName(username);
            model.setUserCode(usercode);
            model.setBirthday(birthday);
            model.setAddress(address);
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", model);
            return modelAndView;
        }

    4、实体(javaBean)参数获取参数

    实体:

     1 public class userModel {
     2     
     3     @Override
     4     public String toString() {
     5         return "userModel [userName=" + userName + ", userCode=" + userCode + ", account=" + account + ", pwd=" + pwd
     6                 + ", address=" + address + ", birthday=" + birthday + ", Memo=" + Memo + "]";
     7     }
     8 
     9     private String userName;
    10     private String userCode;
    11     private String account;
    12     private String pwd;
    13     private String address; 
    14     private Date birthday;
    15     private String Memo;
    16 
    17     public String getAccount() {
    18         return account;
    19     }
    20 
    21     public void setAccount(String account) {
    22         this.account = account;
    23     }
    24 
    25     public String getPwd() {
    26         return pwd;
    27     }
    28 
    29     public void setPwd(String pwd) {
    30         this.pwd = pwd;
    31     }
    32 
    33     public String getMemo() {
    34         return Memo;
    35     }
    36 
    37     public void setMemo(String memo) {
    38         Memo = memo;
    39     }
    40 
    41     public Date getBirthday() {
    42         return birthday;
    43     }
    44 
    45     public void setBirthday(Date birthday) {
    46         this.birthday = birthday;
    47     }
    48 
    49     public String getUserName() {
    50         return userName;
    51     }
    52 
    53     public void setUserName(String userName) {
    54         this.userName = userName;
    55     }
    56 
    57     public String getUserCode() {
    58         return userCode;
    59     }
    60 
    61     public void setUserCode(String userCode) {
    62         this.userCode = userCode;
    63     }
    64 
    65     public String getAddress() {
    66         return address;
    67     }
    68 
    69     public void setAddress(String address) {
    70         this.address = address;
    71     }
    72 
    73 }
    View Code

    JSP页面: 

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>通过javaBean获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser3"
                    method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="userName" id="userName"
                            placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="userCode" id="userCode"
                            placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="birthday" id="birthday"
                            placeholder="请输入生日" />
                    </div> 
                    <div style=" 200px">
                        <label>地址:</label> <input name="address" id="address"
                            placeholder="请输入地址" />
                    </div>  
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

    Controller: 

    /*
         * 添加用户
         * 通过javaBean获取参数
         */
        @RequestMapping("/user/addUser3")
        public ModelAndView addUser3(userModel model) {
            ModelAndView modelAndView = new ModelAndView(); 
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", model);
            return modelAndView;
        }

    5、包装类获取参数

    实体类:

     1 public class userModel {
     2     
     3     @Override
     4     public String toString() {
     5         return "userModel [userName=" + userName + ", userCode=" + userCode + ", account=" + account + ", pwd=" + pwd
     6                 + ", address=" + address + ", birthday=" + birthday + ", Memo=" + Memo + "]";
     7     }
     8 
     9     private String userName;
    10     private String userCode;
    11     private String account;
    12     private String pwd;
    13     private String address; 
    14     private Date birthday;
    15     private String Memo;
    16 
    17     public String getAccount() {
    18         return account;
    19     }
    20 
    21     public void setAccount(String account) {
    22         this.account = account;
    23     }
    24 
    25     public String getPwd() {
    26         return pwd;
    27     }
    28 
    29     public void setPwd(String pwd) {
    30         this.pwd = pwd;
    31     }
    32 
    33     public String getMemo() {
    34         return Memo;
    35     }
    36 
    37     public void setMemo(String memo) {
    38         Memo = memo;
    39     }
    40 
    41     public Date getBirthday() {
    42         return birthday;
    43     }
    44 
    45     public void setBirthday(Date birthday) {
    46         this.birthday = birthday;
    47     }
    48 
    49     public String getUserName() {
    50         return userName;
    51     }
    52 
    53     public void setUserName(String userName) {
    54         this.userName = userName;
    55     }
    56 
    57     public String getUserCode() {
    58         return userCode;
    59     }
    60 
    61     public void setUserCode(String userCode) {
    62         this.userCode = userCode;
    63     }
    64 
    65     public String getAddress() {
    66         return address;
    67     }
    68 
    69     public void setAddress(String address) {
    70         this.address = address;
    71     }
    72 
    73 }
    View Code
     1 public class userModelArray {
     2     private userModel model;
     3 
     4     private String code;
     5     
     6     public userModel getModel() {
     7         return model;
     8     }
     9 
    10     public void setModel(userModel model) {
    11         this.model = model;
    12     }
    13 
    14     public String getCode() {
    15         return code;
    16     }
    17 
    18     public void setCode(String code) {
    19         this.code = code;
    20     }
    21 
    22     @Override
    23     public String toString() {
    24         return "userModelArray [model=" + model + ", code=" + code + "]";
    25     }
    26 }
    View Code

    JSP页面: 

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>通过包装类获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser4"
                    method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="model.userName" id="userName"
                            placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="code" id="code"
                            placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="model.birthday" id="birthday"
                            placeholder="请输入生日" />
                    </div> 
                    <div style=" 200px">
                        <label>地址:</label> <input name="model.address" id="address"
                            placeholder="请输入地址" />
                    </div>  
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

    Controller: 

    /*
         * 添加用户
         * 通过包装类获取参数
         */
        @RequestMapping("/user/addUser4")
        public ModelAndView addUser4(userModelArray model) {
            ModelAndView modelAndView = new ModelAndView(); 
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", model);
            return modelAndView;
        }

    6、数组类型获取参数

    JSP页面: 

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>数组类型获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser5"
                    method="post">
                    <div style=" 200px">
                        <label>选择:</label> 
                        张三<input name="id" id="id" type="checkbox" value="1" />
                        李四<input name="id" id="id" type="checkbox" value="2" />
                        王五<input name="id" id="id" type="checkbox" value="3" />
                        赵六<input name="id" id="id" type="checkbox" value="4" />
                    </div>  
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

    Controller:

    /*
         * 添加用户
         * 数组类型获取参数
         */
        @RequestMapping("/user/addUser5")
        public ModelAndView addUser5(Integer[] id) {        
            ModelAndView modelAndView = new ModelAndView(); 
            modelAndView.setViewName("/user/list");
            modelAndView.addObject("user", new userModel());
            return modelAndView;
        }

     7、包装类-List集合 获取参数传递 

    JSP页面: 

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>封装类集合获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser6" method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="userList[0].userName" id="userList[0].userName"  placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="userList[0].userCode" id="userList[0].userCode" placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="userList[0].birthday" id="birthday" placeholder="请输入生日" />
                    </div> 
                    <div style=" 200px">
                        <label>地址:</label> <input name="userList[0].address" id="address" placeholder="请输入地址" />
                    </div>  
                    <div style=" 200px">
                        <label>名字:</label> <input name="userList[1].userName" id="userList[0].userName"  placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="userList[1].userCode" id="userList[0].userCode" placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="userList[1].birthday" id="birthday" placeholder="请输入生日" />
                    </div> 
                    <div style=" 200px">
                        <label>地址:</label> <input name="userList[1].address" id="address" placeholder="请输入地址" />
                    </div>  
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

    模型类:

     1 /*
     2  * 包装类 - 包装 List<userModel>
     3  */
     4 public class UserModelCustom {
     5     // 集合
     6     private List<userModel> userList; 
     7     
     8     public List<userModel> getUserList() {
     9         return userList;
    10     }
    11     public void setUserList(List<userModel> userList) {
    12         this.userList = userList;
    13     } 
    14 } 
    15 /*
    16  * userModel 类
    17  */
    18 public class userModel {     
    19     private String userName;
    20     private String userCode;
    21     private String account;
    22     private String pwd;
    23     private String address; 
    24     private Date birthday;
    25     private String Memo;
    26 
    27     public String getAccount() {
    28         return account;
    29     }
    30 
    31     public void setAccount(String account) {
    32         this.account = account;
    33     }
    34 
    35     public String getPwd() {
    36         return pwd;
    37     }
    38 
    39     public void setPwd(String pwd) {
    40         this.pwd = pwd;
    41     }
    42 
    43     public String getMemo() {
    44         return Memo;
    45     }
    46 
    47     public void setMemo(String memo) {
    48         Memo = memo;
    49     }
    50 
    51     public Date getBirthday() {
    52         return birthday;
    53     }
    54 
    55     public void setBirthday(Date birthday) {
    56         this.birthday = birthday;
    57     }
    58 
    59     public String getUserName() {
    60         return userName;
    61     }
    62 
    63     public void setUserName(String userName) {
    64         this.userName = userName;
    65     }
    66 
    67     public String getUserCode() {
    68         return userCode;
    69     }
    70 
    71     public void setUserCode(String userCode) {
    72         this.userCode = userCode;
    73     }
    74 
    75     public String getAddress() {
    76         return address;
    77     }
    78 
    79     public void setAddress(String address) {
    80         this.address = address;
    81     } 
    82 }
    View Code

    Controller:

    /*
         * 添加用户
         * 封装类集合获取参数
         */
        @RequestMapping("/user/addUser6")
        public String addUser6(UserModelCustom customModel) {        
            
               return "/user/list";
        }

    8、包装类-Map集合 获取参数传递

    JSP页面:

    <div style=" 28%; float: left;">
            <fieldset>
                <legend>封装类Map获取参数</legend>
                <form action="${pageContext.request.contextPath }/user/addUser7" method="post">
                    <div style=" 200px">
                        <label>名字:</label> <input name="maps['userName']" id="map['userName']"  placeholder="请输入名字" />
                    </div>
                    <div style=" 200px">
                        <label>编号:</label> <input name="maps['userCode']" id="map['userCode']" placeholder="请输入编号" />
                    </div>
                    <div style=" 200px">
                        <label>生日:</label> <input name="maps['birthday']" id="map['birthday']" placeholder="请输入生日" />
                    </div> 
                    <div style=" 200px">
                        <label>地址:</label> <input name="maps['address']" id="map['address']" placeholder="请输入地址" />
                    </div>   
                    <div style=" 200px">
                        <button type="reset">重置</button>
                        <button type="submit">提交</button>
                    </div>
                </form>
            </fieldset>
        </div>  

    模型类: 

     1 /*
     2  * 包装类 - 包装 List<userModel>
     3  */
     4 public class UserModelCustom {
     5     // map
     6     private Map<String, Object> maps;
     7     
     8     public Map<String, Object> getMaps() {
     9         return maps;
    10     }
    11     public void setMaps(Map<String, Object> maps) {
    12         this.maps = maps;
    13     } 
    14 } 
    15 /*
    16  * userModel 类
    17  */
    18 public class userModel {     
    19     private String userName;
    20     private String userCode;
    21     private String account;
    22     private String pwd;
    23     private String address; 
    24     private Date birthday;
    25     private String Memo;
    26 
    27     public String getAccount() {
    28         return account;
    29     }
    30 
    31     public void setAccount(String account) {
    32         this.account = account;
    33     }
    34 
    35     public String getPwd() {
    36         return pwd;
    37     }
    38 
    39     public void setPwd(String pwd) {
    40         this.pwd = pwd;
    41     }
    42 
    43     public String getMemo() {
    44         return Memo;
    45     }
    46 
    47     public void setMemo(String memo) {
    48         Memo = memo;
    49     }
    50 
    51     public Date getBirthday() {
    52         return birthday;
    53     }
    54 
    55     public void setBirthday(Date birthday) {
    56         this.birthday = birthday;
    57     }
    58 
    59     public String getUserName() {
    60         return userName;
    61     } 
    62 }
    View Code

    Controller:

    /*
         * 添加用户
         * 封装类Map获取参数
         */
        @RequestMapping("/user/addUser7")
        public String addUser7(UserModelCustom customModel) {        
            
               return "/user/list";
        }
  • 相关阅读:
    如何在OS X 10.9 Mavericks下安装Command Line Tools(命令行工具)
    NGUI系列教程六(技能冷却的CD效果)
    NGUI系列教程五(角色信息跟随)
    NGUI系列教程四(自定义Atlas,Font)
    NGUI系列教程三
    NGUI系列教程二
    NGUI系列教程一
    相机控制
    Visual Stuio 2010 常用快捷及操作
    unity3d 使用背景贴图
  • 原文地址:https://www.cnblogs.com/wwj1992/p/9678977.html
Copyright © 2020-2023  润新知