SpringMVC 域对象共享数据

这篇具有很好参考价值的文章主要介绍了SpringMVC 域对象共享数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



SpringMVC 域对象共享数据,Spring 家族,springMVC,spring,RequestMapping,java

SpringMVC 域对象共享数据,Spring 家族,springMVC,spring,RequestMapping,java

在Spring MVC中,可以使用域对象来共享数据。域对象是一个Map类型的对象,可以在请求处理方法之间共享数据。

数据共享可以实现数据在不同组件、请求或模块之间的传递和共享,以方便数据的处理和展示,提高应用程序的性能和灵活性。

SpringMVC主要提供了一下几种方式来达到数据共享:

1、使用ServletAPI向request域对象共享数据

在处理请求的方法中将数据存储到了HttpServletRequest对象的request域中,使用setAttribute方法。"myData"是数据的键,"data"是数据的值。

示例代码:
// 获取要共享的数据
// 将数据存储在request域对象中
// 转发请求至其他Servlet或JSP页面

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
   
    String data = "Hello, World!";
    
    request.setAttribute("myData", c);
    
    RequestDispatcher dispatcher = 	request.getRequestDispatcher("/path/to/your/servlet-or-jsp");
    dispatcher.forward(request, response);
}

2、使用ModelAndView向request域对象共享数据

ModelAndView对象是一个包含数据模型和视图信息的容器,在控制器方法中可以将需要共享的数据存储到ModelAndView对象中,然后将该对象返回给Spring MVC框架。

创建一个ModelAndView对象,并使用addObject方法将数据存储到该对象的模型中。"key"是数据的键,“value"是数据的值。然后,使用setViewName方法设置视图信息,指定要渲染的视图名为"example-view”。

然后,Spring MVC框架会将ModelAndView对象中的数据传递给视图,并在视图渲染时将数据存储到request域对象中。在视图中可以使用相应的表达式语言(如JSTL或Thymeleaf的EL表达式)来获取并展示存储在request域中的数据。

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
    /**
     * ModelAndView有Model和View的功能
     * Model主要用于向请求域共享数据
     * View主要用于设置视图,实现页面跳转
     */
    ModelAndView mav = new ModelAndView();
    //向请求域共享数据
    mav.addObject("testScope", "hello,ModelAndView");
    //设置视图,实现页面跳转
    mav.setViewName("success");
    return mav;
}

建议尽量在实际开发中使用更现代和推荐的方式,例如使用@ModelAttribute注解或在方法参数中使用Model对象,以更加简洁和便捷地向request域对象共享数据。

3、使用Model向request域对象共享数据

Model是一个接口,它可以在控制器方法的参数中声明,并使用它的方法将数据添加到其中,然后这些数据将自动传递到request域中。

@RequestMapping("/testModel")
public String testModel(Model model){
    model.addAttribute("testScope", "hello,Model");
    return "success";
}

4、使用map向request域对象共享数据

在控制器方法的参数中声明一个Map参数,Spring MVC会自动将一个Map对象注入到该参数中。您可以向这个Map对象添加键值对,然后它们将自动传递到request域中。

@RequestMapping("/testMap")
public String testMap(Map<String, Object> map){
    map.put("testScope", "hello,Map");
    return "success";
}

当控制器方法返回视图名称时,Spring MVC框架会自动将Map对象中的数据传递到request域中,并在渲染视图时可以使用这些数据。例如,如果您使用JSP作为视图技术,您可以在JSP文件中使用EL表达式${key}来获取存储在request域中的数据

5、使用ModelMap向request域对象共享数据

ModelMap是一个具体实现了Model接口的类,它提供了更多的便捷方法来添加和访问数据。

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

当控制器方法返回视图名称时,Spring MVC框架会自动将ModelMap对象中的数据传递到request域中,并在渲染视图时可以使用这些数据。例如,如果您使用JSP作为视图技术,您可以在JSP文件中使用EL表达式${key}来获取存储在request域中的数据。

6、Model、ModelMap、Map的关系

Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的

public interface Model{}
public class ModelMap extends LinkedHashMap<String, Object> {}
public class ExtendedModelMap extends ModelMap implements Model {}
public class BindingAwareModelMap extends ExtendedModelMap {}

7、向session域共享数据

在控制器类上使用@SessionAttributes注解并指定了"myData"作为需要存储在Session域中的模型属性。在example方法中,我们使用model.addAttribute方法将数据添加到"myData"模型属性中。

@RequestMapping("/testSession")
public String testSession(HttpSession session){
    session.setAttribute("myData", "hello,session");
    return "success";
}

8、向application域共享数据

控制器方法的参数中声明了一个ServletContext对象,并将其命名为"servletContext"。然后,我们使用setAttribute方法将数据添加到ServletContext对象中,"key"是数据的键,"value"是数据的值。

数据将被存储在Application域中,可以在整个应用程序中访问和共享。

@RequestMapping("/testApplication")
public String testApplication(HttpSession session){
	ServletContext application = session.getServletContext();
    application.setAttribute("testApplicationScope", "hello,application");
    return "success";
}

9、总结

本文主要讲解了以下几种域对象可以使用:

request域对象:通过使用HttpServletRequest对象的setAttribute方法向request域中存储数据,使用getAttribute方法从request域中获取数据。

session域对象:通过使用HttpSession对象的setAttribute方法向session域中存储数据,使用getAttribute方法从session域中获取数据。

application域对象:通过使用ServletContext对象的setAttribute方法向application域中存储数据,使用getAttribute方法从application域中获取数据。

这些域对象都可以在控制器中使用,可以在不同的请求处理方法之间共享数据。例如,一个请求处理方法可以将数据存储到request域中,然后另一个请求处理方法可以从request域中获取这些数据。


⭐好书推荐

SpringMVC 域对象共享数据,Spring 家族,springMVC,spring,RequestMapping,java

清华社【秋日阅读企划】领券立享优惠

IT好书 5折叠加10元 无门槛优惠券:https://u.jd.com/Yqsd9wj

活动时间:9月4日-9月17日,先到先得,快快来抢

《Node.js从基础到项目实践(视频教学版)》
SpringMVC 域对象共享数据,Spring 家族,springMVC,spring,RequestMapping,java

【内容简介】

《Node.js从基础到项目实践(视频教学版)》以理论结合实践的形式,讲解了Node.js 基础、框架、进阶知识和项目实践。本书为视频教学版,每一章节都有相对应的视频讲解,通过视频讲解可快速切入主题,提高学习效率。

全书分为4 大部分,共13 章: 分别是Node.js 基础入门、Node.js 框架、Node.js 进阶以及企业项目实践。其中,第1~3 章为Node.js 基础入门讲解,包括Node.js 核心模块、自定义模块、第三方模块;第4~7 章为Node.js 框架讲解,包括Express 流行框架、MySQL 数据库、在Express 框架中操作MySQL 数据库以及Express 框架身份验证;第8~12 章为Node.js 进阶讲解,包括Node.js 事件循环、Koa 框架、socket.io、网络爬虫、GraphQL 基础语法;第13 章为企业项目实践讲解,使用Express 框架和MySQL 数据库完成x闻管理系统API 的开发。

📚 京东购买链接:《Node.js从基础到项目实践(视频教学版)》
📚 当当购买链接:《Node.js从基础到项目实践(视频教学版)》


SpringMVC 域对象共享数据,Spring 家族,springMVC,spring,RequestMapping,java文章来源地址https://www.toymoban.com/news/detail-709649.html



到了这里,关于SpringMVC 域对象共享数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring教程23】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC简介与SpringMVC概述

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《Spring事务角色与 Spring事务属性、事务传播行为》 从这一节开始,我们开始

    2024年02月03日
    浏览(59)
  • 【Spring+SpringMVC+Mybatis】Spring+SpringMVC+Mybatis实现前端到后台完整项目

    🌕博客x主页:己不由心王道长🌕! 🌎文章说明:Spring+SpringMVC🌎 ✅系列专栏:Spring 🌴本篇内容:使用Spring、SpringMVC对以前做过的项目进行重新整合和介绍。🌴 ☕️每日一语:宁愿因做自己而招人厌恶,也不愿为了迎合他人而伪装自己,懂你的人会留下来,不懂你的人,你

    2024年02月02日
    浏览(49)
  • Spring MVC:域对象共享数据

    在上一章中,谈到处理器 Controller 获取请求参数的实现。那么,在处理器 Controller 处理请求后,下一步是将 模型数据 通过 域对象共享的方式 (结果会封装成模型视图 ModelAndView 对象)返

    2024年02月09日
    浏览(40)
  • Spring框架常见注解(Spring、Springboot、Springmvc)

    注解 说明 @Component、@Controller、@Service、@Repository 使用在类上用于实例化Bean @Autowired 使用在字段上用于根据类型依赖注入 @Qualifier 结合@Autowired一起使用用于根据名称进行依赖注入 @Scope 标注Bean的作用范围 @Configuration 指定当前类是一个 Spring 配置类,当创建容器时会从该类上

    2024年02月15日
    浏览(53)
  • Spring+SpringMVC+SpringBoot

    bean基础配置 bean别名配置 注意事项: 获取bean无论是通过id还是name获取。如果无法获取到,将抛出异常NoSuchBeanDefinitionException bean的作用范围配置 适合交给容器进行管理的bean 表现层对象、业务层对象、数据层对象、工具对象 不适合交给容器进行管理的bean 封装实体的域对象

    2024年02月04日
    浏览(44)
  • Spring 注解 和SpringMVC注解

    Spring和Spring MVC是两个紧密相关但又不同的框架,它们都使用一系列注解来简化开发。以下是Spring和Spring MVC中一些常用的注解: ### Spring 注解: 1. **`@Component`:**    - 用于将类标记为Spring容器中的组件,由Spring自动扫描并进行管理。    - 具体的派生注解有`@Service`、`@Reposit

    2024年01月23日
    浏览(56)
  • Spring Mvc:初识SpringMvc

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 SpringMvc版本:5.3.1 ①SpringMVC是Spring的一种 子框架 ,它是Spring为【 展现层 | 表示层 | 表述层 | 控制层 】提供的 基于MVC设计理念 的优秀的Web框架,是目前最主流的MVC框架。

    2024年02月13日
    浏览(55)
  • Spring、SpringMVC、SpringBoot的区别

    它们之间的区别如下: Spring 是一个完整的框架,提供了大量的功能和组件,包括依赖注入、面向切面编程、事务管理、数据访问、Web 开发等。 SpringMVC 是 Spring 框架的一部分,用于开发 Web 应用程序。它提供了 MVC(Model-View-Controller)模式的实现,将应用程序分为模型、视图和

    2024年02月05日
    浏览(64)
  • Spring、SpringMVC、SpingBoot的区别

    Spring是一个IOC容器,用来管理Bean,使用依赖注入实现控制反转,可以狠方便的整合各种框架,提供AOP(切面)机制弥补OOP(面向对象)的代码重复问题、更方便将不同类不同方法中的共同处理抽取成切面、自动注入给方法使用,比如日志异常等 SpringMVC是spring对web框架的一个解决方

    2024年02月15日
    浏览(40)
  • 【手撕Spring源码】深度理解SpringMVC【上】

    既然我们讨论SpringMVC那么就必然绕不开一个东西叫做DispatcherServlet。 DispatcherServlet是SpringMVC的核心Servlet,也叫做前端控制器。它的主要作用是调度请求并将请求分发给相应的处理器。 我们要注意: DispatcherServlet由Servlet容器创建,并且它的生命周期也是Servlet那套体系由Servle

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包