1. 内置视图解析器

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

<!--默认的内置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--设置前缀-->
    <property name="prefix" value="/WEB-INF/templates"/>
    <!--设置后缀-->
    <property name="suffix" value=".html"/>
</bean>

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

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

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

控制器方法:

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

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;
    }

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<String,Object> map){
     map.put("test","Hello Map");
     return "success";
 }

 @RequestMapping("/testModelMap")
 public String testModelMap(ModelMap modelMap){
     modelMap.addAttribute("test","hello modelmap");
     return "success";
 }

如果方法的入参为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";
 }

总结

到此这篇关于Spring MVC数据响应处理的文章就介绍到这了,更多相关Spring MVC响应处理内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Spring MVC数据响应处理详解的更多相关文章

  1. JSP中springmvc配置validator的注意事项

    这篇文章主要介绍了JSP中springmvc配置validator的注意事项的相关资料,并说明springmvc中spring-servlet.xml、applicationContext.xml的区别需要的朋友可以参考下

  2. SpringMVC拦截器和异常处理器使用示例超详细讲解

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器参数及拦截器链配置,感兴趣的可以尝试一下

  3. Python图像运算之图像阈值化处理详解

    这篇文章将详细讲解图像阈值化处理,涉及阈值化处理、固定阈值化处理和自适应阈值化处理,这是图像边缘检测或图像增强等处理的基础,感兴趣的可以了解一下

  4. SpringMVC数据页响应ModelAndView实现页面跳转

    本文主要介绍了SpringMVC数据页响应ModelAndView实现页面跳转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. SpringMVC静态资源配置过程详解

    在javaweb项目中配置了DispatcherServlet的情况下,如果不进行额外配置的话,几乎所有的请求都会走这个servlet来处理,默认静态资源按路径是访问不到的会报404错误,下面就来讲一讲如何配置才能访问到静态资源吧

  6. 浅谈JS日期(Date)处理函数

    这篇文章主要整理了一下JS日期(Date)处理函数,算是对自己近期学习javascript的一个小小的总结,这里分享给大家

  7. Ajax上传实现根据服务器端返回数据进行js处理的方法

    这篇文章主要介绍了Ajax上传实现根据服务器端返回数据进行js处理的方法,实例分析了Ajax请求及java处理并返回服务器端数据请求的相关技巧

  8. 浅谈PHP中的错误处理和异常处理

    下面小编就为大家带来一篇浅谈PHP中的错误处理和异常处理。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. Python使用pandas将表格数据进行处理

    这篇文章主要介绍了Python使用pandas将表格数据进行处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

  10. 详解Node.js异步处理的各种写法

    这篇文章主要介绍了Node.js异步处理的各种写法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部