7.SpringMVC的返回值类型和参数传递

1、SpringMVC的返回值类型

(1)ModelAndView返回值类型:

  1.1当返回为null时,页面不跳转。

  1.2当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转。

  1.3当返回值指定了视图名,程序会按照视图名跳转。

  1. /*添加*/
  2. @RequestMapping("/getSale")
  3. public ModelAndView addSale(Sale sale,HttpServletRequest request,ModelAndView mv){
  4. if (sale!=null) {
  5. Double totalPrice = sale.getPrice() * sale.getQuantity();
  6. sale.setTotalPrice(totalPrice);
  7. sale.setSaleDate(new Date());
  8. Users user = (Users) request.getSession().getAttribute("user");
  9. sale.setUserId(user.getUid());
  10. int i = userService.addSale(sale);
  11. if (i > 0) {
  12. mv.setViewName("saleList");
  13. } else {
  14. mv.setViewName("prodectAdd");
  15. }
  16. }
  17. return mv;
  18. }

(2)Object返回值类型

  1. /*绑定下拉框*/
  2. @RequestMapping("/prodectName")
  3. @ResponseBody
  4. public Object getprodectName(){
  5. List<Product> products = userService.getproductName();
  6. return products;
  7. }

(3)String返回值类型:

3.1如果返回值为null,那么以请求名作为视图名进行跳转;

3.2如果指定返回值,那么按照指定返回值作为视图名进行跳转,可以通过model,modeMap携带数据。

3.3如果返回值带有forward或者redirect前缀,那么将会进行相应的请求或重定向,不过不能通过mvc的数据模型携带数据,可以通过ServletApi携带数据。

  1. @RequestMapping("/welcome")
  2. public String welcome(String userName, Model model){
  3. //将用户名保存到对应的作用域中
  4. model.addAttribute("userName",userName);
  5. return "welcome";
  6. }

2.参数传递

(1)JSP页面注意点*:控制器Controller中的方法参数名称必须和表单元素的name属性值保持一致

  1. <form class="loginForm" action="/user/getUser" method="post" >
  2. <div class="inputbox" style="text-align:center; ">
  3. <label for="user">用户名:</label>
  4. <input id="user" type="text" name="userName" placeholder="请输入用户名" />
  5. </div>
  6. <div class="password" style="text-align:center; " >
  7. <label for="mima">密码:</label>
  8. <input id="mima" type="password" name="password" placeholder="请输入密码" />
  9. </div>
  10. <div class="subBtn" style="text-align:center; ">
  11. <input type="submit" value="登录" />
  12. <input type="reset" value="重置"/>
  13. </div>
  14. </form>
  1. /*登录*/
  2. @RequestMapping("/getUser")
  3. @ResponseBody
  4. private ModelAndView getUser(String userName, String password, ModelAndView mv, HttpServletRequest request, HttpServletResponse response, HttpSession session){
  5. Users user = userService.getUser(userName,password);
  6. System.out.println("user======"+user);
  7. if (user!=null){
  8. System.out.println("成功");
  9. //登录成功
  10. request.getSession().setAttribute("user",user);
  11. //转发
  12. mv.setViewName("index");
  13. }else{
  14. //登录失败
  15. mv.setViewName("login");
  16. }
  17. return mv;
  18. }

(2)请求参数装配为POJO对象

新增Person

  1. public class Person {
  2. private String username;
  3. private int age;
  4. //省略get/set方法
  5. }

控制器

  1. //当实体类中的属性名和表单元素的name属性相同时,即可完成自动装配
  2. @RequestMapping(value = "personObject",method = RequestMethod.POST)
  3. public String personObject(Person person){
  4. System.out.println(person);
  5. return "hello";
  6. }

(3)@RequestParam注解

@RequestParam的作用是,当表单元素与控制器方法的参数不匹配的情况下,使用@RequestParam注解声明参数名称。

@RequestParam 有三个属性:

  3.1value:请求参数名(必须配置)

  3.2required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)

  3.3defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)

 jsp页面

  1. <form class="loginForm" action="/getUser" method="post" onsubmit="return check()" >
  2. <div class="inputbox" style="text-align:center; ">
  3. <label for="user">用户名:</label>
  4. <input id="user" type="text" name="userName" placeholder="请输入用户名" />
  5. </div>
  6. <div class="password" style="text-align:center; " >
  7. <label for="mima">密码:</label>
  8. <input id="mima" type="password" name="password" placeholder="请输入密码" />
  9. </div>
  10. <div class="subBtn" style="text-align:center; ">
  11. <input type="submit" value="登录" />
  12. <input type="reset" value="重置"/>
  13. </div>
  14. </form>

控制器

  1. <form class="loginForm" action="/getUser" method="post" onsubmit="return check()" >
  2. <div class="inputbox" style="text-align:center; ">
  3. <label for="user">用户名:</label>
  4. <input id="user" type="text" name="userName" placeholder="请输入用户名" />
  5. </div>
  6. <div class="password" style="text-align:center; " >
  7. <label for="mima">密码:</label>
  8. <input id="mima" type="password" name="password" placeholder="请输入密码" />
  9. </div>
  10. <div class="subBtn" style="text-align:center; ">
  11. <input type="submit" value="登录" />
  12. <input type="reset" value="重置"/>
  13. </div>
  14. </form>

(4)RESTFUL风格的参数传递

  1. /*{id}表示占位符*/
  2. @RequestMapping("/getid/{id}")
  3. @ResponseBody
  4. public Object getid(@PathVariable("id") Integer id){
  5. List<Accounts> name = accountService.getName(id);
  6. return name;
  7. }

(5)对象传递参数

IUserInfo实体类:

  1. package com.cmy.entity;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class IUserInfo {
  5. private int uid;
  6. private String username;
  7. //域属性注入
  8. private Teacher teacher;
  9. private List<Teacher> teacherList;
  10. public String getUsername() {
  11. return username;
  12. }
  13. public void setUsername(String username) {
  14. this.username = username;
  15. }
  16. public int getUid() {
  17. return uid;
  18. }
  19. public void setUid(int uid) {
  20. this.uid = uid;
  21. }
  22. public Teacher getTeacher() {
  23. return teacher;
  24. }
  25. public void setTeacher(Teacher teacher) {
  26. this.teacher = teacher;
  27. }
  28. public List<Teacher> getTeacherList() {
  29. return teacherList;
  30. }
  31.  
  32. public void setTeacherList(List<Teacher> teacherList) {
  33. this.teacherList = teacherList;
  34. }
  35. @Override
  36. public String toString() {
  37. return "IUserInfo{" +
  38. "uid=" + uid +
  39. ", username='" + username + '\'' +
  40. ", teacher=" + teacher +
  41. ", teacherList=" + teacherList +
  42. '}';
  43. }
  44. }

控制层

  1. @Controller
  2. @RequestMapping("/fout")
  3. public class FoutController {//属性
  4. @RequestMapping("/getUser")
  5. public String getUser(IUserInfo userInfo){
  6. System.out.println(userInfo.toString());
  7. return "welcome";
  8. }
  9. }

页面

域属性1

  1. <form class="loginForm" action="/fout/getUser" method="post" onsubmit="return check()" >
  2. <div class="inputbox" style="text-align:center; ">
  3. <label for="user">用户名:</label>
  4. <input id="user" type="text" name="teacher.teachername" placeholder="请输入用户名" />
  5. <input id="users" type="text" name="teacher.teachername" placeholder="请输入用户名" />
  6. </div>
  7. <div class="password" style="text-align:center; " >
  8. <label for="mima">密码:</label>
  9. <input id="mima" type="password" name="password" placeholder="请输入密码" />
  10. </div>
  11. <div class="subBtn" style="text-align:center; ">
  12. <input type="submit" value="登录" />
  13. <input type="reset" value="重置"/>
  14. </div>
  15. </form>

集合2

  1. <form class="loginForm" action="/fout/getUser" method="post" onsubmit="return check()" >
  2. <div class="inputbox" style="text-align:center; ">
  3. <label for="user">用户名:</label>
  4. <input id="user" type="text" name="teacherList[0].teachername" placeholder="请输入用户名" />
  5. <input id="users" type="text" name="teacherList[1].teachername" placeholder="请输入用户名" />
  6. </div>
  7. <div class="password" style="text-align:center; " >
  8. <label for="mima">密码:</label>
  9. <input id="mima" type="password" name="password" placeholder="请输入密码" /></div>
  10. <div class="subBtn" style="text-align:center; ">
  11. <input type="submit" value="登录" />
  12. <input type="reset" value="重置"/>
  13. </div>
  14. </form>

SpringMVC返回类型的更多相关文章

  1. springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

    springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/03 ...

  2. spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

    spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAn ...

  3. springMVC中controller的几种返回类型

    ==网文1,还不错,感觉比较老旧springMVC中controller的几种返回类型 - CSDN博客http://blog.csdn.net/qq_16071145/article/details ...

  4. SpringMVC返回Json,自定义Json中Date类型格式

    http://www.cnblogs.com/jsczljh/p/3654636.html —————————————————————————————————————————————————————— ...

  5. 05 SpringMVC:02.参数绑定及自定义类型转换&&04.SpringMVC返回值类型及响应数据类型&&05.文件上传&&06.异常处理及拦截器

    springMVC共三天 第一天: 01.SpringMVC概述及入门案例 02.参数绑定及自定义类型转换 03.SpringMVC常用注解 第二天: 04.SpringMVC返回值类型及响应数据类型 ...

  6. SpringMVC Controller的返回类型

    Controller的三种返回类型中 ModelAndView类型 带数据带跳转页面 String 跳转页面不带数据 void 通常是ajax格式请求时使用 1返回ModelAndView contr ...

  7. SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发

    1. SpringMVC与Servlet的关系 SpringMVC框架是建立在Servlet之上的,提供各种功能,各种封装,各种方便的同时,它一点儿也没有限制Servlet,我们完全可以在Spring ...

  8. Spring MVC控制层的返回类型--String类型与Bean类型

    SpringMVC控制层的返回类型形式多样,现拿其中的两种--String类型与Bean类型作以说明. 一.测试项目的结构 说明:(jsp的名字没起好) 控制层:UserController.java ...

  9. springmvc 返回xml

    需求: 1.springmvc返回xml: 技术及环境: Spring 4.3.1.RELEASE JDK 1.8 IDEA 15.0.6 Maven 3 实现: spirngxml的配置主要如下: ...

随机推荐

  1. [C++] 习题 2.15 实现简单环形队列

    目录 前置技能 环形队列 具体实现 设计一个环形队列,用front和rear分别作为队头和队尾指针,另外用一个tag表示队列是空 ( 0 ) 还是不空 ( 1 ),这样就可以用front==rear作 ...

  2. PAT(B) 1071 小赌怡情(Java)

    题目链接:1071 小赌怡情 (15 point(s)) 题目描述 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大 ...

  3. springboot基础、注解等

    SpringBoot 1.springboot概念 Spring Boot是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...

  4. 怎样安装ipython

    ipython 是一个python的交互式shell, 比默认的python shell更好用, 支持自动补全 / 上下翻等功能.  下面是按照方法: # 通用安装方法 pip install ipy ...

  5. jmeter接口测试中的用例数据分离

    用jmeter做接口测试的话,一个jmx文件就可以是一个用例,而用例的设计多数还是等价类.边界值等方法.用例越来越多的时候,维护比较麻烦,所以可以把用例的数据存在csv文件中,然后通过组件(CSV D ...

  6. python之(urllib、urllib2、lxml、Selenium+PhantomJS)爬虫

    一.最近在学习网络爬虫的东西,说实话,没有怎么写过爬虫,Java里面使用的爬虫也没有怎么用过.这里主要是学习Python的时候,了解到Python爬虫的强大,和代码的简介,这里会简单的从入门看是说起, ...

  7. $.ajaxSetup()与$.ajax()区别

    ajaxSetup()其使用方法与ajax()并无区别,只是在其之后的ajax()不用再重复添加相同参数,节省了代码量. 附:API中关于jQuery.ajaxSetup([options])的描述和 ...

  8. English-培训2-五大句型

  9. ABAP Code Inspector那些隐藏的功能,您都知道吗?

    最近有粉丝在后台给我留言,说新知识太多,"学不动了".所谓温故而知新,今天我们就来重温下ABAP里的Code Inspector的用法. 2015年6月,我在SAP社区上写了一篇博 ...

  10. SQL SERVER-LinkServer搬迁

    选中linkserver,按F7打开对象游览器, 选中linkserver,生成脚本. 把密码填入脚本运行即可 USE [master] GO /****** Object: LinkedServer ...