ModelAndView相关

ModelAndView在工作中使用比较频繁,一直没有整理过,概念还有些模糊,今天将其整理一下作为笔记以后看起来方便。

MVC工作流程:

当客户端发出请求,web服务器接收到请求在web.xml中找到DispartcherServlet(前端控制处理器:它负责协同和组织不同组件完成请求处理并返回响应工作)的映射路径并把请求转发到DispartcherServlet处理。DispartcherServlet将请求转发给MVC的控制器,DispartcherServlet查询处理映射(handler mapping)处理映射根据URL信息匹配由哪个控制器来处理请求。controller进行业务处理后返回一个ModelAndView给DispartcherServlet,然后DispartcherServlet借助视图解析器完成modelandview逻辑视图名到真实视图对象view的解析工作。DispartcherServlet根据modelandview中的视图模型对view对象进行视图渲染,最后客户端得到的响应信息可能是普通的HTML文件,或者json串,也有可能是一个图片或者PDF格式文件。

ModelAanView详解:(转载原文:https://blog.csdn.net/qq_36306340/article/details/78542918

当控制器处理完请求时,通常会将包含视图名称或者视图对象以及一些模型属性的ModelAanView对象返回到DispartcherServlet。所以需要在控制器中构造ModelAndView对象,ModelAndView类提供了一些重载的构造器和一些方便的方法,我们可以根据自己的喜好来构造ModelAndView对象,这些构造器和方法都是相类似的,以类似的方式支持视图名称和视图对象。

当只有一个模型属性要返回时,可以在构造器中指定该属性来构造ModelAndView对象,通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面,使用addObject()设置需要返回的值,addObject()有几个不同参数的方法,可以默认和指定返回对象的名字,调用addObject()方法将只设置到一个名为ModelMap的类属性,ModelMap是LinkHashMap的子类。

ModelAanView对象被放置在request对象中,jsp页面可以直接通过el表达式直接访问获取参数。

可以在页面中利用${keyName}直接访问存在model中的对象。第一个参数是页面名称

@RequestMapping("SMDetail.htm")
    public ModelAndView commonClaimDetail(int id) throws Exception{
//        List<Map<String,Object>> list=serDeptManageService.findClaimDetail(id);
        List<Map<String,Object>> list=new ArrayList<>();
        try {
            list=serDeptManageService.findClaimDetail(id);
        }catch (Exception e){
            logger.error("加载备注信息错误:"+e.getCause());
        }
        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute("list",list);
        modelMap.addAttribute("id",id);
        ModelAndView modelAndView = new ModelAndView("model",modelMap);
        modelAndView.setViewName("claim/commonClaimDetail");
        return modelAndView;
    }

ModelAndView重定向:

spring web 框架利用ModelAndView也能实现请求妆发(forward)、重定向(redirect)

    @RequestMapping("page.htm")
    public ModelAndView page(){return new ModelAndView("claim/serDeptManage");}
 //第三个参数(UserModel user)默认为绑定对象  
    @RequestMapping(value = "/user/save", method = RequestMethod.POST)  
    public ModelAndView saveUser(HttpServletRequest request, HttpServletResponse response,UserModel user) throws Exception {  
        ModelAndView mv = new ModelAndView("/user/save/result");//默认为forward模式  
//      ModelAndView mv = new ModelAndView("redirect:/user/save/result");//redirect模式  
        mv.addObject("message","保存用户成功!");  
        return mv;  
    }  

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的lib目录. 3. 创建mysql 测试数据库和用户表,注意,这里采用的是 utf-8 编码 创建用户表,并插入一条测试数据 程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'
<br>认识 Spring <br> 来认识 Spring 的一些特性,并初步了解一下什么叫作 IoC?什么叫作 DI? <br>简介 Spring <br>Inversion of Control <br>Dependency Injection <br><br><br>核心容器 <br> Spring 核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解 Spring 的重点所在。 <br>管理 Bean <br>从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。<br>第一个 Spring 程式 <br>BeanFactory、 ApplicationContext <br>Type 2 IoC、Type 3 IoC <br>属性参考 <br>自动绑定 <br>集合物件注入 <br>Bean 的生命周期 <br>Bean 进阶管理 <br>理想上对于 Bean 来说,它不需要意识到 Spring 容器的存在,然而有时候 Bean 仍必须知道有关于 Spring 容器或自己的一些讯息,而另一方面,您可能必须让容器对 Bean 进行一些额外处理。<br>不使用XML定义档进行 Bean设置 <br>Aware 相关介面 <br>BeanPostProcessor <br>BeanFactoryPostProcessor <br>PropertyPlaceholderConfigurer <br>PropertyOverrideConfigurer <br>CustomEditorConfigurer <br>讯息与事件 <br>ApplicationContext 除了具备如 BeanFactory 基本的容器管理功能之外,并支援更多应用程式框架的特性,像是资源的取得、讯息解析、事件的处理与传播。<br>Resource 的取得 <br>解析文字讯息 <br>倾听事件 <br>事件传播 <br><br><br>AOP(Aspect-Oriented Programming) <br> 在一个服务的流程中插入与服务无关的逻辑(例如Logging、Security),这样的逻辑称为 Cross-cutting concerns,将 Crossing-cutting concerns 独立出来为一个物件,这样的特殊物件称之为 Aspect,Aspect-oriented programming 着重在 Aspect 的设计及与应用程式的缝合(Weave)。<br><br>AOP 入门 <br>AOP 的观念与术语都不是很直觉,可以先从代理机制(Spring 实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。<br>从代理机制初探 AOP <br>动态代理<br><br>AOP 观念与术语 <br>Spring AOP <br>Advices <br>Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,Spring 提供了几种不同的 Advices。<br>Before Advice <br>After Advice <br>Around Advice <br>Throw Advice <br>Pointcut、Advisor <br>Pointcut 定义了 Advice 的应用时机,在 Spring 中,使用 PointcutAdvisor 将 Pointcut 与 Advice 结合成为一个物件,Spring 中大部分内建的 Pointcut 都有对应的 PointcutAdvisor。<br>NameMatchMethodPointcutAdvisor <br>RegExpMethodPointcutAdvisor <br>ControlFlowPointcut <br>Pointcut 介面 <br>Pointcut 交集、联集操作 <br>Introduction <br>为特殊的 Advice,它影响的不是方法的流程,而是影响整个物件的行为,为物件动态 mixin 职责。<br>IntroductionInterceptor <br>DelegatingIntroductionInterceptor <br>Autoproxing <br>自动代理可以让您不用为每一个要被 Advised 的 Target 手动定义代理物件,透过 Bean 名称或是 Pointcut 的比对,自动为符合的 Target 建立代理物件。<br>BeanNameAutoProxyCreator <br>DefaultAdvisorAutoProxyCreator <br><br><br>持久层 <br> 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 <br>资料库存取 <br>Spring 提供了 DAO 框架,让应用程式开发时无须耦合于特定资料库技术。<br>Spring 的 DAO 支持 <br>DataSource 注入 <br>DataSource 置换 <br>JDBC 支援 <br>Spring 在 JDBC 的使用上提供了几个类别,让您可以简化 JDBC 在使用时的流程。<br>使用 JdbcTemplate <br>JdbcTemplate 执行与更新<br><br>JdbcTemplate - 查询 <br>以物件方式进行操作 <br>DataFieldMaxValueIncrementer <br>交易管理 <br>Spring 提供编程式的交易管理(Programmatic transaction management)与宣告式的交易管理(Declarative transaction management),为不同的交易实作提供了一致的编程模型。<br>Spring 对交易的支援 <br>JDBC 编程式交易管理 <br>JDBC 宣告式交易管理 <br>交易的属性介绍 <br>TransactionAttributeSource、 TransactionAttribute <br>Hibernate 支援 <br>Spring 整合了对 Hibernate 的设定,并提供有 HibernateTemplate 等类别,让您在结合 Hibernate 时可以简化使用上的流程。<br>第一个 Hibernate 程式 <br>SessionFactory 注入 <br>HibernateTemplate <br>Hibernate 编程交易管理 <br>Hibernate 宣告式交易管理 <br><br><br>Web 层 <br> Spring 提供了 MVC Web 框架,您可以善用 IoC 容器在依赖注入上的好处,另一方面,Spring 也致力于与其它的 Web 框架的整合。 <br>Spring MVC 入门 <br>从一个最简单的 Spring Web 应用程式,来看看 Spring MVC 框架的架构与 API 组成元素。<br>第一个 Spring MVC 程式 <br>WebApplicationContext <br>Handler Mapping <br>Handler Interceptor <br>Controller 继承架构 <br>ModelAndView <br>View Resolver <br>Exception Resolver <br>使用 Controller 相关类别 <br>与其它 Web 框架的 Action 物件不同的是,Spring 提供了丰富的 Controller 相关类别,让您可以依需求来制作自己所需的 Controller 物件。<br>AbstractController <br>MultiActionController 与 ParameterMethodNameResolver <br>MultiActionController 与 PropertiesMethodNameResolver <br>ParameterizableViewController <br>AbstractCommandController <br>AbstractFormController <br>SimpleFormController <br>AbstractWizardFormController <br>ThrowawayController <br>搭配 Controller 的类别 <br>介绍如何在 Controller上搭配使用验证器(Validator)、如何实作Command资料的型态转换,以及如何使用Spring的相关API来实作档案上传的功能。<br>实作 Validator <br>使用 PropertyEditor <br>档案上传<br><br><br><br>View层方案、Web框架整合 <br> 当使用JSP作为View层技术时,您可以结合JSTL以及Spring提供的标签,而除了JSP技术作为View层之外,Spring还提供了不同 View层技术的解决方案,您甚至可以定义自己的View层技术实现。 <br>JSP View 层 <br>当使用 JSP 作为 View 层技术时,您可以结合 JSTL 以及 Spring 提供的标签。<br>结合 JSTL <br><spring:bind> 标签 <br>数据绑定的几个方法 <br><spring:message> 标签 <br><spring:transform> 标签 <br>其它 View 层 <br>除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立自己的 View Class。<br>以 Tiles 为例 <br>自订 View Class <br>与其它 Web 框架的整合 <br>您可以将 Spring 与现在的一些 Web 框架结合在一起,重点都在于如何让 Web 框架意识到 Spring 的存在。<br>第一个 Struts 程式 <br>在 Struts 中整合 Spring <br>第一个 JSF 程式 <br>在 JSF 中整合 Spring <br><br><br>其它 <br> Spring 提供了简化且一致的方式,让您在使用一些 API 或服务时更加简单。 <br>远程(Remoting) <br>Spring 提供了一致的使用方式,即使所采用的远程服务技术不尽相同,在 Spring 中运用它们的方式却是一致的。<br>RMI <br>Hessian、 Burlap <br>Http Invoker <br>邮件 <br>对于邮件发送服务的支援是由Spring的 org.springframework.mail.MailSender介面所定义,它有两个实作类别, org.springframework.mail.cos.CosMailSenderImpl与 org.springframework.mail.javamail.JavaMailSenderImpl。<br>简单邮件 <br>HTML 邮件 <br>内嵌图片或附档 <br>排程 <br>Spring则对 java.util.Timer提供了抽象封装,让您可以善用Spring的容器管理功能,而Spring对Quartz进行了封装,让它在使用上更加方便。<br>使用 TimerTask <br>使用 MethodInvokingTimerTaskFactoryBean <br>使用 Quartz <br>使用 MethodInvokingJobDetailFactoryBean <br>
### 回答1: 在JavaScript中获取ModelAndView的值,需要先将ModelAndView对象转换为JSON格式,然后再通过JavaScript解析JSON对象获取其中的值。具体步骤如下: 1. 在后端控制器中,将需要传递给前端的数据封装到ModelAndView对象中。 2. 在前端页面中,使用JavaScript发送Ajax请求获取后端返回的ModelAndView对象。 3. 在JavaScript中解析JSON对象,获取其中的值。 示例代码如下: 后端控制器: ``` @RequestMapping("/test") public ModelAndView test() { ModelAndView modelAndView = new ModelAndView("test"); modelAndView.addObject("name", "张三"); modelAndView.addObject("age", 18); return modelAndView; } ``` 前端页面: ``` $.ajax({ type: "GET", url: "/test", success: function(data) { var json = JSON.parse(data); var name = json.name; var age = json.age; console.log("姓名:" + name + ",年龄:" + age); } }); ``` ### 回答2: 在JavaScript中,要获取ModelAndView的值,可以通过以下步骤: 1. 在网页中引入jQuery或其他JavaScript库,以便使用相关函数和方法。 2. 在JavaScript中使用AJAX技术向服务器发送请求,获取ModelAndView的值。 3. 首先,需要明确ModelAndView是一个由服务器端生成的对象,包含了数据模型(Model)和视图(View)。 4. 在发送请求时,可以通过URL参数、请求头或请求体将需要的数据传递给服务器端。 5. 服务器端接收到请求后,将数据模型填充完整,并将ModelAndView对象返回给前端。 6. 前端使用AJAX的回调函数来处理服务器返回的数据。 7. 在回调函数中,可以通过JavaScript的语法来获取ModelAndView的值。 8. 如果返回的数据是JSON格式,可以通过解析JSON对象来获取具体的值。 9. 如果返回的数据是HTML片段或其他格式,可以使用相应的方法来提取所需的值。 10. 最后,将获取到的值用于前端页面的显示或其他操作。 总而言之,通过AJAX技术向服务器端发送请求,并在前端使用JavaScript来处理返回的ModelAndView对象,可以获取到其中的值并进行相关操作。 ### 回答3: 在JavaScript中,要获取ModelAndView对象的值,需要通过从服务端返回的响应数据中提取需要的值。通常情况下,服务器会将数据以JSON格式返回给前端,因此我们可以通过解析JSON数据来获取ModelAndView的值。 首先,我们可以通过XMLHttpRequest对象发送异步请求并获取响应数据。例如: ```javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'your-url', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var responseData = JSON.parse(xhr.responseText); // 从responseData中获取ModelAndView的值 var model = responseData.model; var view = responseData.view; // 处理获取到的值 // ... } }; xhr.send(); ``` 在上述代码中,我们通过XMLHttpRequest对象发送了一个GET请求,并在readystatechange事件中处理响应数据。首先,我们通过JSON.parse()方法将响应数据解析为对象,然后从解析后的对象中获取ModelAndView的值。 根据具体的响应数据结构,你可能需要根据实际情况进行一些调整和处理。一般情况下,ModelAndView的值会在JSON对象中以key-value对的形式存在,你可以根据需要来获取对应的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值