一, ajax方式

(一)controller中

1. 定义AjaxResponse类 成员有: status , message, data.  其中 status是成功或失败状态, message是给出的相关信息, data是传递过来的数据

2. 定义返回AjaxResponse对象的controller:

一个实例:

     @RequestMapping("createOrder")
@ResponseBody
public AjaxResponse createOrder(String subData, String travellerDetail) {
AjaxResponse response = new AjaxResponse();
response.setStatus(AjaxResponseStatus.FAILED); //先设置状态为失败
String operatorName = getOperator().getOperatorName();
DisneyOrderCreateVo vo = JSON.parseObject(subData, DisneyOrderCreateVo.class);
vo.setOperator(operatorName);
List<TravellerDetail> travellerDetails = new ArrayList<TravellerDetail>();
travellerDetails = JSON.parseArray(travellerDetail, TravellerDetail.class);
try {
orderService.createDsnOrder(vo, travellerDetails);
} catch (Exception e) {
logger.debug(e.getMessage(), e);
response.setMessage(e.getMessage()); // 将失败信息返回到页面
return response;
}
response.setStatus(AjaxResponseStatus.SUCCESS); // 将状态设置为成功
return response;
}

3. 在js中接收controller中返回的AjaxResponse 对象

一个实例:

         $.ajax({
url : basepath + "/disney/order/createOrder",
method : 'POST',
data : {"subData":JSON.stringify(subData) , "travellerDetail":JSON.stringify(travellerDetail)}, //将对象序列化为json对象
dataType : "json", //预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断
success:function(res){ // 成功后进行的操作 返回200
if(res && res.status==="SUCCESS"){
createOrderPopwin.close();
window.location.href=basepath+"/disney/order/orderList";
}else if(res && res.status === "FAILED"){
var errorMsg = res.message;
alert(errorMsg);
}
},
error:function(res){ } //失败后进行的操作 除200外的返回状态都执行error
});

-------补充知识:----------

简单的说Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState): 
0-未初始化 
1-正在初始化 
2-发送数据 
3-正在发送数据 
4-完成 
当XMLHttpRequest.readyState为4时,表示请求已经完成可以得到响应结果。当然success和error方法还是根据响应状态码来触发。当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().其他状态码则触发error(). 
Jquery的$.ajax()函数只是封装了ajax请求,本质上还是通过JS XMLHttpRequest内置对象来处理的。 )

----------------------------------------------

二, 在controller中的@RequestMapping方法中通过参数Model 来传递数据

三, 在controller中的@RequestMapping方法中通过返回值Map来传递数据

四, 在controller中通过ModelAndView 来传递参数,

一个实例:

    @RequestMapping("/tourVisitorList")
public ModelAndView tourVisitorList(@RequestParam(required = true) String tourGroupMark) {
tourGroupMark = StringUtils.trimToNull(tourGroupMark);
ModelAndView mav = new ModelAndView("opPage/jn/signUp/tour_visitor_list");
tourGroupMark = StringUtils.trimToNull(tourGroupMark);
Map<String, Object> idSaleMap = new HashMap<>();
Map<String, Object> idCusMap = new HashMap<>();
mav.addObject("idSaleMap", idSaleMap);
mav.addObject("idCusMap", idCusMap);
return mav;
}

其中, ModelAndView mav = new ModelAndView("opPage/jn/signUp/tour_visitor_list"); 设置返回的页面.   mav.addObject("xxx",XXX); 设置传递的数值.

此传递的数值在freemark中渲染, 不需要@responseBody.

web开发-服务器Controller到前端中的数据传递的更多相关文章

  1. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  2. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  3. Asp.net MVC中 Controller 与 View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...

  4. MVC中Controller与View之间的数据传递

    一.Controller向View传递数据 Controller向View传递数据有3种形式: 通过ViewData传递 在Controller里面的Action方法中定义ViewData,并且赋值, ...

  5. web开发-前端到服务器Controller中的数据传递

    一, ajax方式 1. ajax获取页面中的数据,包括表单中的数据, 然后封装成对象,数组, 字符串, 或其他基本类型的数据. 2. 将封装得到的数据通过ajax传递到controller中(注:在 ...

  6. 将Controller中的数据传递到View中显示

    如何将Controller 中的数据传送到View 步骤: (1)要有数据,如果要用到对象可以在Model 中定义对应的类 (2)要有装数据的容器: System.Text.StringBuilder ...

  7. 剖析 Rails 3 MVC 中的数据传递

    引用链接:https://www.ibm.com/developerworks/cn/web/1108_linhx_rails3mvc/ 如果读者已经开发过基于 Rails 的应用,但对其 MVC 间 ...

  8. 后端list集合中的数据传递到前台HTML中显示(表格形式)

    关键字:web项目中前后台数据传递问题 在学习web项目的过程中,我们肯定会遇到前后台数据交换问题.这个问题我也思考了很久,今天借此总结一下.由于博主水平有限,如有不当之处,还请大家多多指正,,废话不 ...

  9. springmvc中的数据传递

    import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; impo ...

随机推荐

  1. Android获取窗体信息的Util方法

    package com.wangyi.tools; import android.app.Activity; import android.util.DisplayMetrics; public cl ...

  2. hibernate对象关系实现(一)一对多

    hibernate是对jdk一个封装工具,实现对象和数据库之间数据映射.使用时涉及到四个问题:a.对象之间的关系在类中的体现:b,对象关系对应的数据库中表之间体现:c.实现a,b在hibernate的 ...

  3. iOS 设置button中图文位置

    方法一. -(CGRect)imageRectForContentRect:(CGRect)contentRect {    return CGRectMake(self.width - kImage ...

  4. 10 database tables

    本章提要-----------------------------------各种数据库表的讨论, 并介绍什么情况使用哪种表情调表的物理存储特征---------------------------- ...

  5. jQuery插件开发全解析,类级别与对象级别开发

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...

  6. VideoView

    [1]这个控件就是对surfaceview 和 meidiaplayer进行封装 [2]meidiaplayer 播放视频他只支持 3gp MP4格式    

  7. number-of-segments-in-a-string

    https://leetcode.com/problems/number-of-segments-in-a-string/ package com.company; class Solution { ...

  8. z-index总结【转载http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html】

    元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...

  9. 【服务器环境搭建-Centos】Nginx1.9.9 安装(编译源码)

    nginx官网不同版本下载地址:http://nginx.org/download/ 我使用的是nginx-1.9.8.tar.gz 安装其他支持软件 可以使用rpm –q xxx   查询库是否已经 ...

  10. Oracle一个用户查询另一个用户的表数据

    1.两个用户是在不同的库,需要建立dblink 2.属于同一个库的不同用户 1)方法一:使用"用户名."的方式访问 例如:要从USER1账号访问USER2中的表TABLE2 A. ...