• Spring MVC响应处理


    大家好,我是郭尕~
    在这里插入图片描述

    响应处理

    1. 内置视图解析器

    Spring MVC 中的视图解析器负责解析视图,可以通过在配置文件中定义一个ViewResolver来配置视图解析器,配置如下:

    
    
        
        
        
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    定义了一个id为viewResolver的视图解析器,并设置了前缀后缀,这样设置的好处就是简化方法中定义的路径。在访问视图解析器是就会自动的增加前缀和后缀。

    2. 使用原生servlet的对象传递数据

    HttpServletRequest:通过request对象获取请求信息

    控制器方法:

    //使用servlet传递数据
    @RequestMapping("/testServlet")
    public String testRequestByServletAPI(HttpServletRequest request){
        request.setAttribute("test","hello,servlet");
        return "success";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 使用ModelAndView对象传输数据

    当使用modelAndView对象的时候,返回值的类型也必须是ModelAndView,可以将要跳转的页面设置成view的名称,来完成跳转的功能,同时数据也是放到request域中。

    使用方式:

    • 创建ModelAndView对象
    • 向模型对象中添加数据
    • 设置逻辑视图名
    • 返回ModelAndView对象

    控制器方法:

     @RequestMapping("/testModelAndView")
        public ModelAndView testModelAndView(){
            //创建ModelAndView对象
            ModelAndView mav = new ModelAndView();
            //处理模型数据,即向请求域request共享数据
            mav.addObject("test","Hello ModelAndView");
            //设置视图名称
            mav.setViewName("success");
            return mav;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    ModelAndView对象的作用:
    将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。

    4. 使用Model、Map、ModelMap传输数据

    在SpringMVC中除了可以使用原生servlet的对象传递数据之外,还有什么其他的方式呢?
    可以在方法的参数上传入Model,ModelMap,Map类型,此时都能够将数据传送回页面。

    控制器方法:

    @RequestMapping("/testModel")
    public String testModel(Model model){
         model.addAttribute("test","Hello Model");
         return "success";
     }
    
     @RequestMapping("/testMap")
     public String testMap(Map map){
         map.put("test","Hello Map");
         return "success";
     }
    
     @RequestMapping("/testModelMap")
     public String testModelMap(ModelMap modelMap){
         modelMap.addAttribute("test","hello modelmap");
         return "success";
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    如果方法的入参为Map,Model和ModelMap类型,Spring MVC会将隐含模型的引用传递给这些入参。在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据,作用类似于request对象的setAttribute方法的作用: 用来在一个请求过程中传递处理的数据。

    三者之间的关系:

    • Map为原生的储存键值的对象,里面很多的方法可以使用;
    • Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
    • ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;
    • Map、Model、ModelMap的底层都是使用BindingAwareModelMap。
    • Map、Model和ModelMap返回的是地址路径
      在这里插入图片描述

    5. 使用session传输数据

    HttpSession:通过session对象得到session中存储的对象

    控制器方法

    //向session域共享数据
    @RequestMapping("/testSession")
     public String testSession(HttpSession httpSession){
         httpSession.setAttribute("testSessionScope","hello session");
         return "success";
     }
    
     //向application域共享数据
     @RequestMapping("/testApplication")
     public String testApplication(HttpSession session){
         ServletContext servletContext = session.getServletContext();
         servletContext.setAttribute("testApplicationScope","hello application");
         return "success";
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    VB 语言介绍以及VBA、宏(Macro)的关系
    「运维有小邓」用户个人资料管理
    华为OD:跳房子I
    【Three.js】第七章 Cameras 相机
    idea2023根据表自动生成+springboot跑起来
    百度Comate代码助手全新上线SaaS服务-免费申请试用+深入教程解读
    DQL语言进阶3
    【深度学习CPU(番外篇)——初识总线】
    JavaScript基础---JavaScript简单类型与复杂类型---11.3
    习题 --- 快排、归并、浮点数二分
  • 原文地址:https://blog.csdn.net/embelfe_segge/article/details/126114156