zoukankan      html  css  js  c++  java
  • 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的时的视图名。
  • 相关阅读:
    Codeforces Round #325 (Div. 2) F:(meet in the middle)
    Educational Codeforces Round 3:E (MST+树链剖分+RMQ)
    Educational Codeforces Round 3:D. Gadgets for dollars and pounds(二分答案+贪心)
    CodeForce 484B:(最大余数)
    CodeForce 540C:(DFS)
    HDU 1010:(DFS)
    Poj1741-Tree(树分治)
    uva10245-The Closest Pair Problem(平面上的点分治)
    hdu1561-The more, The Better(树形dp)
    hdu2196-Computer(树形dp)
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13238261.html
Copyright © 2011-2022 走看看