在用注解对配置 处理器时,一般是一个方法处理一个请求,不同方法的返回类型有着不同的意义。

返回值为 ModelAndView 类型

  ModelAndView 是Model 和 View 的一个集合类型,其中Model 是一个Map类型的空间,其主要用来存储页面请求的返回数据

  而view 则一般是用来存储 请求数据 将要被 接收的 页面(一般为页面名称),也是服务器响应的页面(即前端得到响应后要显示的页面)

@RequestMapping("/find.action")
public ModelAndView findUser(){
List<User> users = us.findAllUsers();
ModelAndView mav = new ModelAndView();
mav.addObject("users", users);
mav.setViewName("showUser");//使用转发
return mav;
}

返回值 为 String 类型(比较常用)

   如果controller方法返回string,

      1、表示返回逻辑视图名。

          真正视图(jsp路径)=前缀+逻辑视图名+后缀    return "index"

      2、redirect重定向

          redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享)

return "redirect:xxx.action"  重定向到另一个Action 请求中

      3、forward页面转发

          通过forward进行页面转发,浏览器地址栏url不变,request可以共享。

           return "forward:xxx.action"

返回值为void 时

  在controller方法形参上可以定义request和response,使用request或response指定响应结果:

    1、使用request转向页面,如下:

      request.getRequestDispatcher("页面路径").forward(request, response);

    2、也可以通过response页面重定向:

      response.sendRedirect("url")

    3、也可以通过response指定响应结果,例如响应json数据如下:

      response.setCharacterEncoding("utf-8");

      response.setContentType("application/json;charset=utf-8");

      response.getWriter().write("json串");

@RequestMapping("/find.action")

   public void findUser(HttpServletRequest request,HttpServletResponse response){

      //使用原始servlet的形式进行数据和页面的处理

   }

请求参数:

  客户端的请求参数一般是k/v的结构  key=value  如 id=1&name="zhangsan";

  springmvc中,接收页面提交的数据是通过方法形参来接收的;

  

//前台页面发送xxxx?name=zhangsan&pwd=123的请求,springmvc将
//name设为参数user的name属性值
//pwd设为参数user的pwd属性值
//如果请求参数名和参数对象的属性名不一致,不会注入
@RequestMapping(value="/save.action",method=RequestMethod.POST)
public String saveUser(User user){
// User user = new User();
// user.setName(name);
// user.setPwd(pwd);
us.saveUser(user);
return "redirect:find.action";
}

一般类型的参数是可以直接被直接注入进对象的同名属性的,对日期数据绑定需要自定义converter(转换器)

  进行参数绑定时的注解:

    1、@requestParam()

该注释可以将请求的字符串转换为简单的数据类型 如:test(@requestParam("id") int id)

      也可以匹配不是同名的参数 如:test(@requestParam("username") String name)

      也可以设置参数的必需属性 如:test(int id ,@requestParam("username" , required=true) String name)  此时,如果请求参数中没有username这个值是,就会报错      

      三种写法,test(String name), 
          test(@RequestParam String name), 
          test(@RequestParam("userName") String name), 
          第一种如果没有name 参数不会报错, 
          第二种没有name 参数会报错,(也可以设置required = false), 
          第三种跟第二种的区别是 请求的参数名userName转换成方法的参数name

    2、@ModelAttribute   该注解有两个用法,一个是用于方法上,一个是用于参数上;

      用于方法上时:  通常用来在处理@RequestMapping之前,为请求绑定需要从后台查询的model;即在执行@RequestMapping 的方法之前 执行 @ModelAttribute的方法 将相关参数放到请求域中(默认都是存放在请求域中的)

    //这个方法找到了一个User,并且把这个User放入到ModelAttribute中的user属性
//@ModelAttribute修饰的方法一定会在@RequestMapping方法前执行
@ModelAttribute("user")
public User findUser(){
User user = us.findUserById(9);
return user;
}

      

    用于参数上时: 用来通过名称对应,把相应名称参数的值绑定到注解的参数bean上;要绑定的值来源于:

      A) @SessionAttributes("name") 启用的session域的attribute 对象上;(即方法的形参的值来源于session域中的 name 的值)

      B) @ModelAttribute(“name”) 用于方法上时指定的model对象;(即方法的形参的值来源于请求域中的 name 的值)

      C) 上述两种情况都没有时,new一个需要绑定的bean对象,然后把request中按名称对应的方式把值绑定到bean中(默认)

      @SessionAttributes

        该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。

        该注解有value、types两个属性,可以通过名字和类型指定要使用的attribute 对象;

SpringMVC 学习笔记(请求方法的返回值和参数)的更多相关文章

  1. SpringMVC学习笔记三:Controller的返回值

    springMVC的返回值有ModelAndView,String,void,Object类型 项目目录树: 该项目是在前面项目的基础上修改的,这里的pom.xml文件需要加入使用到的包,应为@Res ...

  2. SpringMVC由浅入深day01_10@RequestMapping_11controller方法的返回值

    10 @RequestMapping 10.1 Url路径映射 @RequestMapping(value="/item")或@RequestMapping("/item ...

  3. Java反射机制二 获取方法的返回值或参数的泛型信息

    在使用反射机制时,我们经常需要知道方法的参数和返回值类型,很简单  ,下面上示例,示例中的两个方法非常相似 package deadLockThread; import java.lang.refle ...

  4. day11 python学习 函数的建立,返回值,参数

    函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等 ...

  5. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  6. SSM-SpringMVC-21:SpringMVC中处理器方法之返回值Object篇

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 今天要记录的是处理方法,返回值为Object的那种,我给它分了一下类: 1.返回值为Object数值(例如1) ...

  7. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  8. springmvc学习笔记(简介及使用)

    springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...

  9. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

随机推荐

  1. mssql-在一个特定的会话停止出发器

    用SET CONTEXT_INFO来实现 --在某个会话里设置 SET CONTEXT_INFO 0x8888 --在触发器里判断 ) SELECT @Cinfo = Context_Info() 原 ...

  2. LeetCode:柠檬水找零【860】

    LeetCode:柠檬水找零[860] 题目描述 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向 ...

  3. 简介windows的环境变量

    环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等.这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设置的默认路 ...

  4. ibdata1文件非常大如何解决,ibdata单独存储

    启用独立表空间innodb_file_per_table(如果这个参数没有开启,mysql会将数据.索引.元数据都存入到ibdata中的) 数据表 表索引 MVCC(多版本并发控制)数据 回滚段 撤销 ...

  5. KbmMemTable的简单应用(增删改查示例)

    //kbmMemTable unit Unit1;   interface   uses   Windows, Messages, SysUtils, Variants, Classes, Graph ...

  6. node cluster模块的使用和测试

    首先安装async包 用到的有http.cluster包 http和cluster都会node自带的包,无需安装 1:创建cluster.js,代码如下,更具cpu创建多个进程 var cluster ...

  7. Javascript-- jQuery事件篇(2)

    jQuery表单事件之blur与focus事件 单处理事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件 它们之间的本质区别: 是否支持冒泡处理 举个 ...

  8. linux命令学习笔记(59):rcp命令

    rcp代表“remote file copy”(远程文件拷贝).该命令用于在计算机之间拷贝文件.rcp命令有两种格式.第一种格式用于文件到文件的拷贝:第二种格式用于把文件或目录拷贝到另一个目录中. . ...

  9. stl_set.h

    stl_set.h // Filename: stl_set.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http://blo ...

  10. 【LeetCode】014. Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. 题解: 简单的暴力遍历解决 ...