Spring MVC接收参数(Map,List,JSON,Date,2个Bean)(记录一次面试惨状)

前几天投了一个中小型网络科技公司的简历,收到面试,今天前去面试,由于他们的笔试题和面试题我几乎都接触过,所以感觉很良好,但是下午笔试第二家上机操作题时,真正的感受到了什么叫做体无完肤的被虐,让我深刻的知道了,学习的道路还有多艰难,记录一次笔试题被虐的经历,激励自己刻苦学习,努力奋斗。


题目:Spring MVC 接收参数 (Map,List,Date,2个Bean,JSON)

看到题目的一瞬间就很懵,虽然之前学习过Sping MVC,但面对这个题目还是有些无从下手,所以只能翻阅以前Spring MVC的笔记,首先巩固Spring MVC的知识点,然而,时间就这么被浪费过去了,快结束了我还无从下手,最后,感谢面试官的格外开恩,让我回去做完,回去以后将所以完成,以作整理学习。


首先,创建一个User实体类,以作测试。
附上源代码:

public class User {
    private String firstName;
    private String lastName;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

Spring MVC接收参数 -Map

首先,创建一个前台JSP页面,页面包含的内容很简单,就是一个简单的form表单。
附上主要代码:

<form action="map" method="post">
姓名:<input name="users['x'].firstName"  />
电话:<input name="users['x'].lastName"  />
    <input type="submit" value="登录">
  </form>

接收Map传递参数,必须新建一个实体类,内部定义Map属性变量。然后添加对应的set和get方法。
源代码如下:

import java.util.Map;
public class UserMap {
    private Map<String, User> users;
    public Map<String, User> getUsers() {
        return users;
    }
    public void setUsers(Map<String, User> users) {
        this.users = users;
    }
}

然后,该编写控制器了。 尤其这部分,感觉自己很不扎实,之前理解的很浅。

    @RequestMapping("/map")
    public void test(UserMap userForm) {
        for (Map.Entry<String, User> entry : userForm.getUsers().entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue().getFirstName() + " - " +
            entry.getValue().getLastName());
        }
    }

然后,做测试,控制台会打印对应的数据。


Spring MVC接收参数 -List

首先,让我们先创建一个前台的JSP页面,页面内容只需包含一个form表单即可 。

   <form action="saysth.do" method="post">
姓:<input name="users[0].firstName"  />
名:<input name="users[0].lastName"  />
    <input type="submit" value="登录">
  </form>

然后,我们需要创建一个新的实体类,里面声明List私有变量,并添加对应的set和get方法。

import java.util.List;

public class UserListForm {
      private List<User> users;
        public List<User> getUsers() {
            return users;
        }
        public void setUsers(List<User> users) {
            this.users = users;
        }
}

然后,编写List的控制器。

    @RequestMapping("/saysth.do")
    public void test(UserListForm userForm) {
        for (User user : userForm.getUsers()) {
            System.out.println(user.getFirstName() + " - " + user.getLastName());
        }
    }

Spring MVC接收参数之List 成功,自我感觉还是需要加强巩固和复习,需要继续理解深入和练习才能够更好的掌握这些知识点。


Spring MVC接收参数 -date

首先,继续创建一个前台JSP页面。

      <form action="date.action/d1" method="post">
        生日(格式yyyy-MM-dd):<input  name="birthday"/>
        <input type="submit" value="提交"/>
    </form>

新建一个Date实体类。该实体类是重点!!!!!!!!

import org.springframework.format.annotation.DateTimeFormat;
public class Date {
    //该注解切记不能忘记
    @DateTimeFormat(pattern="yyyy-MM-dd")
     private java.util.Date birthday;
    public java.util.Date getBirthday() {
        return birthday;
    }
    public void setBirthday(java.util.Date date) {
        this.birthday = date;
    }
    @Override
    public String toString() {
        return "Date [birthday=" + birthday + "]";
    }
}

编写date控制器代码。

    @Controller
    @RequestMapping("/date.action")
    public class DateController {
        @RequestMapping("/d1")
        public String date(String birthday) throws ParseException, java.text.ParseException {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
            String dstr=birthday;  
            java.util.Date date=sdf.parse(dstr);
            Date d1=new Date();
            d1.setBirthday(date);
            System.out.println(d1);
            return "hello";
        };
    }

Spring MVC接收参数-date 完成,运行后控制台会打印出数据。


Spring MVC接收参数 -2个Bean

继续第一步,新建一个前台JSP显示页面。

       <form action="submitUserList_1" method="post">
        ID:<input type="text" name="id"><br/>
        Username:<input type="text" name="name"><br/>
        Password:<input type="text" name="pwd"><br/><br/>

        ID:<input type="text" name="id"><br/>
        Username:<input type="text" name="name"><br/>
        Password:<input type="text" name="pwd"><br/><br/>
        <input type="submit" value="submit">
    </form>

下一步我们需要新建一个实体类来,实体类中添加相应的set和get方法。

public class User1 {
       private Integer id;
        private String name;
        private String pwd;
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPwd() {
            return pwd;
        }
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", pwd='" + pwd + '\'' +
                    '}';
        }
}

编写bean的控制器代码。

     @RequestMapping(value = "/submitUserList_1")
        @ResponseBody
        public String submitUserList_1(HttpServletResponse response,Integer[] id, String[] name, String[] pwd)
                                throws Exception{
            String result = "";
            if(id == null || id.length <= 0){ return "No any ID.中文"; }
            List<User1> userList = new ArrayList<User1>();
            for (int i = 0; i < id.length; i++ ) {
                User1 user = new User1();
                user.setId(id[i]);
                user.setName(name[i]);
                user.setPwd(pwd[i]);
                userList.add(user);
            }
            System.out.println(userList);
            return "hello";
        }

Spring MVC接收参数 -JSON

最让我头疼的就是这个JSON,一直以前JSON方面的知识学的很不好,最担心和害怕的就是面试被问到关于JSON方面的知识,果然,遇到了就是一个艰难的障碍,学习无捷径,只能通过努力学习克服困难了。

首先,我们还是先创建JSP前台页面。

<input type="button" value="测试JSON数据" onclick="testJSON()" /> 
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript"> 
  function testJSON() { 
    $.ajax({ 
      type: "POST", 
      url: "testJson", 
      contentType: "application/json", 
      dataType: "json", 
      data: JSON.stringify({"name":"张三"}), 
      success: function (jsonResult) { 
        alert(jsonResult); 
      } 
    }); 
  } 
</script> 

然后,我们直接在控制器中编写相关代码即可。

     @RequestMapping(value ="/testJson") 
     public String testJson(@RequestBody Map name, HttpServletRequest request){ 
       System.out.println(name); 
       return "jsonp"; 
     } 

测试,即可完成,但是自我感觉JSON这部分还是有很多需要补充和完善的,只能通过接下来的学习更加完善了。


总结:

以上就是今天面试被虐的体无完肤的一道题了,希望在日后的道路中还可以继续扎实学习,刻苦学习,不骄傲,不浮躁,踏踏实实一步一步走出自己的路。
Spring MVC 中的 Map 和 Model 都是用来传递数据给视图的对象。 1. MapMap 是一个接口,它用于存储键值对。在 Spring MVC 中,可以将 Map 对象作为方法的参数Spring 会自动将模型数据放入到 Map 中,然后传递给视图。在视图中,可以通过键来获取对应的值。例如: ```java @RequestMapping("/example") public String example(Map<String, Object> model) { model.put("message", "Hello, World!"); return "exampleView"; } ``` 在上述代码中,`model` 是一个 Map 对象,`example` 方法将 "message" 作为键,"Hello, World!" 作为值放入到 `model` 中。然后返回的字符串 "exampleView" 将作为视图名称,Spring MVC 会根据视图名称找到对应的视图进行渲染。 2. Model:Model 是一个接口,它是 Map 接口的子接口,提供了更多的方法来操作模型数据。在 Spring MVC 中,可以将 Model 对象作为方法的参数Spring 会自动创建一个 Model 对象,并将模型数据放入其中,然后传递给视图。与 Map 类似,可以通过键来获取对应的值。例如: ```java @RequestMapping("/example") public String example(Model model) { model.addAttribute("message", "Hello, World!"); return "exampleView"; } ``` 在上述代码中,`model` 是一个 Model 对象,`addAttribute` 方法用于向模型中添加属性和值。然后返回的字符串 "exampleView" 将作为视图名称,Spring MVC 会根据视图名称找到对应的视图进行渲染。 总结:无论是使用 Map 还是 Model,都可以将数据传递给视图。在视图中,可以使用键来获取对应的值进行展示。而在控制器方法中,我们可以使用 Map 或 Model 对象来添加模型数据。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值