SpringMVC系列(三)

SpringMVC技术细节(二)

一. SpringMVC中域的使用


  1. request域

    1. 传统方式向request域中写入数据:直接通过request对象写入。

    2. 向model中写入数据,默认就是写入request域

  2. session域

    1. 传统方式向session域中写入数据

    2. 通过model+@SessionAttributes将数据写入session

  3. ServletContext域

    1. 只能通过传统方式

  4. @ModelAttribute

    1. 使用在方法上
      被修饰的方法将会在当前类的任意handler方法执行之前执行,该方法的返回值会自动存入model供后续使用。

    2. 使用在方法参数前

      会从model中获取属性值复制到被修饰的方法参数上。

 

二. 实现返回一段数据


  1. 返回字符串数据

    1. 通过response返回

      response.getWriter().write("abcde");

    2. 直接获取PrintWriter返回

      @RequestMapping("/test.action")
      public void test(PrintWriter writer)throws Exception {
      	writer.write("abcde");
      }
      
    3. 通过ResponseBody返回

      @ResponseBody
      @RequestMapping(value="/test.action",produces="text/html;charset=utf-8")
      public String test() {
      	return "abcd中国";
      }
      
      
  2. 返回json数据

    1. 手动拼接json

    2. 通过配置@ResponseBody利用内置的jackson将对象处理为json返回

      @ResponseBody
      @RequestMapping(value="/test.action",produces="application/json;charset=utf-8")
      public User test() throws Exception {
      	User user = new User(99,"张三",Arrays.asList("bj","sh","gz"));
      	return user;
      }
      
      

 

三. 处理器方法支持的参数类型和返回值类型总结


  1. 支持的方法参数类型

    • HttpServletRequest 代表当前请求的对象
    • HttpServletResponse 代表当前响应的对象
    • HttpSession 代表当前会话的对象
    • WebRequest
      SpringMVC提供的对象,相当于是request和session的合体,可以操作这两个域中的属性。
    • InputStream OutputStream Reader Writer
      代表request中获取的输入流和response中获取的输出流
    • 通过@PathVariable @RequestParam声明的方法参数
      @PathVariable可以将请求路径的指定部分获取赋值给指定方法参数。@RequestParam可以将指定请求参数赋值给指定方法参数。如果不写此注解,则默认会将同名的请求参数赋值给方法参数
    • 通过@CookieValue和@RequestHeader声明的方法参数
      @CookieValue可以将请求中的指定名称的cookie赋值给指定方法参数@RequestHeader可以将请求参数中的指定名称的头赋值给指定方法参数
    • Model和ModelMap和java.util.Map
      向Model ModelMap Map中存入属性,相当于向模型中存入数据
    • Bean类
      SpringMVC自动将请求参数封装到bean
    • MultipartFile
      实现文件上传功能时,接收上传的文件对象
    • Errors BindingResult
      实现数据验证的参数
  2. 支持的返回值类型

    • ModelAndView
      可以返回一个ModelAndView对象,在其中封装Model和View信息
    • View
      可以直接返回一个代表视图的View对象
    • 字符串
      直接返回视图的名称
    • void
      如果返回值类型是void,则会自动返回和当前处理器路径名相同的视图名
    • 方法被@ResponseBody修饰
      当方法被@ResponseBody修饰时,默认将返回的对象转为json写入输出
    • 以上之外,返回的任何内容都会被当做模型中的数据来处理,值为返回的数据,键为返回类型名首字母转小写,而返回的视图名等同于返回值为void的时的视图名。
原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13238261.html