SpringMVC(一):返回值及参数传递

xiaoxiao2021-03-01  19

一、返回值

1、返回一个jsp页面

/** * 返回一个jsp页面 * @return */ @RequestMapping(value="/returnJsp",method=RequestMethod.GET) public String returnJsp() { return "/testController/returnJsp"; }

访问:http://localhost:8080/play/testController/returnJsp.action

2、往页面传数据方式一:Model

/** * 往页面传数据方式一:model * @param model * @return */ @RequestMapping(value="/testModel",method=RequestMethod.GET) public String testModel(Model model) { User user1 = new User(); user1.setUserName("张三"); User user2 = new User(); user2.setUserName("李四"); List<User> list = new ArrayList(); list.add(user1); list.add(user2); model.addAttribute("hello", "world1"); model.addAttribute("world2"); model.addAttribute(user1); model.addAttribute("user2", user2); model.addAttribute("list", list); return "/testController/testModel"; }

页面取值方式为:

<h3>方式一:${hello}</h3> <h3>方式二:${string}</h3> <!-- 注意此处string小写 --> <h3>方式三:${user.userName}</h3> <!-- 这样方参数的话,默认的key是参数类型 --> <h3>方式四:${user2.userName}</h3> <c:forEach items="${list}" var="user"> <h3>方式五:${user.userName}</h3> </c:forEach>

访问 http://localhost:8080/play/testController/testModel.action

3、往页面传数据方式二:ModelAndView

/** * 往页面传数据方式二:ModelAndView * @return */ @RequestMapping(value="/testModelAndView",method=RequestMethod.GET) public ModelAndView testModelAndView() { User user1 = new User(); user1.setUserName("张三"); User user2 = new User(); user2.setUserName("李四"); List<User> list = new ArrayList(); list.add(user1); list.add(user2); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("hello", "world1"); modelAndView.addObject("world2"); modelAndView.addObject(user1); modelAndView.addObject("user2", user2); modelAndView.addObject("list", list); modelAndView.setViewName("/testController/testModelAndView"); return modelAndView; }

model需要写在方法的参数中,ModelAndView则不需要。 Model方式与ModelAndView方式基本相同,页面取值方式为

<h3>方式一:${hello}</h3> <h3>方式二:${string}</h3> <!-- 注意此处string小写 --> <h3>方式三:${user.userName}</h3> <!-- 这样方参数的话,默认的key是参数类型 --> <h3>方式四:${user2.userName}</h3> <c:forEach items="${list}" var="user"> <h3>方式五:${user.userName}</h3> </c:forEach>

访问:http://localhost:8080/play/testController/testModelAndView.action

二、参数传递

1、使用RequestParam进行简单参数绑定

/** * 参数绑定:RequestParam * @return */ @RequestMapping(value="/testRequestParam") public String testRequestParam( @RequestParam String name, @RequestParam("num") int age, //当绑定的参数名不一致时,需要指定 @RequestParam(required=false) String address //false 表示非必须,默认为true,为true时没有此参数报404 ){ System.out.println("name : " + name ); System.out.println("age : " + age ); System.out.println("address : " + address ); return "/testController/returnJsp"; }

访问:http://localhost:8080/play/testController/testRequestParam.action?name=张三&num=11&address=北京 控制台打出:

2、使用RequestParam绑定自定义对象

使用form表单提交,需要将格式转化为json,后台才能封装为自定义对象。

<form> <input id="userName" name="userName" ></input> <input id="age" name="age" ></input> <button id="btn" >提交</button> </form> <script type="application/javascript"> //发送表单ajax请求 $('#btn').on('click',function(){ $.ajax({ url:"testRequestBody.action", type:"POST", data:JSON.stringify($('form').serializeObject()), contentType:"application/json", //缺失会出现URL编码,无法转成json对象 success:function(){ alert("成功"); } }); }); /** * jquery方式自动将form表单封装成json对象 */ $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [ o[this.name] ]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; </script>

此方式为使用jquery将参数转化为json格式,页面需要引入jquery。 普通form提交方式需要逐一接收。

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

后台接收对象代码

/** * 绑定自定义对象 * @param user * @return */ @RequestMapping(value="/testRequestBody") public String testRequestBody( @RequestBody User user ){ System.out.println("userName : " + user.getUserName() ); return "/testController/returnJsp"; }

前台输入: 控制台打出:

转载请注明原文地址: https://www.6miu.com/read-4550026.html

最新回复(0)