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

 

### 回答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、付费专栏及课程。

余额充值