AJAX与spring mvc交互

(1)简单交互:

<table style="width: 100%" class="table" cellspacing="1" cellpadding="1" border="0">
  <tr><td  class="ti1"  colSpan="2">请选择审讯室</td></tr> 
 <tr><td  class="ti2hui">审讯室名称</td><td class="ti1cu">
    <select id="roomid" name="roomid" >
  <c:forEach items="${roomlist}" var="room">  
        <option value ="${room.id}">${room.name}</option>   
     </c:forEach>
    </select>
    </td></tr>
<tr><td   class="ti2hui" colSpan="2" align="center"><input type="button" onclick="setshow()"  value="确定"/>  </td></tr>
</table>

------------------------------ajax-----提交的参数可以通过url提交,也可以用data:{}方式提交-------------------------------

function setshow(){ 
$.ajax( {   
    type : "POST",   
    url : "<%=request.getContextPath()%>/initroom.do?method=set", 
    data : {
      ‘room‘ : $("#roomid").find(‘option:selected‘).text(),
      ‘roomid‘ :$("#roomid").val()
     },  
    dataType: "json",   
    success : function(data) {   
        if(data.success){   
            alert("设置成功!");   
             
        }   
        else{   
            alert("设置失败!");   
        }   
    },   
    error :function(){   
        alert("网络连接出错!");   
    }   
});   
}

------------------------spring mvc-------------------------------------------------

 @RequestMapping(params = "method=set")
 public void jump(HttpSession session,HttpServletRequest request, HttpServletResponse response) throws Exception{
  String roomid= request.getParameter("roomid");
  String room= request.getParameter("room");
  session.setAttribute("ROOMID", roomid);
  session.setAttribute("ROOMNAME", room);
  System.out.println("session set:"+room+"=="+roomid);
  response.setCharacterEncoding("utf-8");
  response.getWriter().write("{\"success\":true }");
  response.getWriter().flush();
 }

(2)springmvc 返回信息到ajax:

import com.googlecode.jsonplugin.JSONUtil;
List<Records> recordList = new ArrayList<Records>();
//获取recordlist操作省略
  response.setCharacterEncoding("utf-8");
   response.getWriter().write("{\"success\":true, \"data\":" + JSONUtil.serialize(recordList) + "}");
   response.getWriter().flush();

-------------------------------ajax处理序列化对象--------------------------------------------

var text = ‘‘;
       $(data.data).each(function() {
        text = text + ‘<li onclick="selectRecord(‘ + this.id + ‘)" style="cursor: pointer; height:20px; list-style:none; valign: center;line-height:23px;"><div style="float:left; width:15px; height:20px; background:url(Images/record_icon.png) no-repeat center;"></div>‘ + this.name + ‘</li>‘;
       });
       $(‘#recordDiv‘).html(text);

(3)最先进的做法:

在 Spring mvc3中,响应、接受 JSON都十分方便。

使用注解@ResponseBody可以将结果(一个包含字符串和JavaBean的Map),转换成JSON。

使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。

Spring这个转换是靠org.codehaus.jackson这个组件来实现的,所有需要引入jackson-core-asl和org.codehaus.jackson两个jar包

Html代码 
<title>Spring MVC</title>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>  
<script type="text/javascript" src="http://jquery-json.googlecode.com/files/jquery.json-2.2.min.js"></script>  
<script type="text/javascript" src="<%=request.getContextPath()%>/scripts/user/index.js"></script>  
</head>  
<body>  
<div id="info"></div>  
<form action="add" method="post" id="form">  
编号:<input type="text" name="id"/>  
姓名:<input type="text" name="username"/>  
年龄:<input type="text" name="age"/>  
  
<input type="button" value="提交" id="submit"/>  
</form>  
</body>  
</html>
Js代码  
//将一个表单的数据返回成JSON对象  
$.fn.serializeObject = function() {  
  var o = {};  
  var a = this.serializeArray();  
  $.each(a, function() {  
    if (o[this.name]) {  
      if (!o[this.name].push) {  
        o[this.name] = [ o[this.name] ];  
      }  
      o[this.name].push(this.value || ‘‘);  
    } else {  
      o[this.name] = this.value || ‘‘;  
    }  
  });  
  return o;  
};  
  
$(document).ready(  
    function() {  
      jQuery.ajax( {  
        type : ‘GET‘,  
        contentType : ‘application/json‘,  
        url : ‘user/list‘,  
        dataType : ‘json‘,  
        success : function(data) {  
          if (data && data.success == "true") {  
            $(‘#info‘).html("共" + data.total + "条数据。<br/>");  
            $.each(data.data, function(i, item) {  
              $(‘#info‘).append(  
                  "编号:" + item.id + ",姓名:" + item.username  
                      + ",年龄:" + item.age);  
            });  
          }  
        },  
        error : function() {  
          alert("error")  
        }  
      });  
      $("#submit").click(function() {  
        var jsonuserinfo = $.toJSON($(‘#form‘).serializeObject());  
        alert(jsonuserinfo);  
        jQuery.ajax( {  
          type : ‘POST‘,  
          contentType : ‘application/json‘,  
          url : ‘user/add‘,  
          data : jsonuserinfo,  
          dataType : ‘json‘,  
          success : function(data) {  
            alert("新增成功!");  
          },  
          error : function(data) {  
            alert("error")  
          }  
        });  
      });  
    });
Java代码  
@Controller  
@RequestMapping("/user")  
public class DemoController {  
  private Logger logger = LoggerFactory.getLogger(DemoController.class);  
  
  @RequestMapping(value = "/list", method = RequestMethod.GET)  
  @ResponseBody  
  public Map<String, Object> getUserList() {  
    logger.info("列表");  
    List<UserModel> list = new ArrayList<UserModel>();  
    UserModel um = new UserModel();  
    um.setId("1");  
    um.setUsername("sss");  
    um.setAge(222);  
    list.add(um);  
    Map<String, Object> modelMap = new HashMap<String, Object>(3);  
    modelMap.put("total", "1");  
    modelMap.put("data", list);  
    modelMap.put("success", "true");  
    return modelMap;  
  }  
  
  @RequestMapping(value = "/add", method = RequestMethod.POST)  
  @ResponseBody  
  public Map<String, String> addUser(@RequestBody UserModel model) {  
    logger.info("新增");  
    logger.info("捕获到前台传递过来的Model,名称为:" + model.getUsername());  
    Map<String, String> map = new HashMap<String, String>(1);  
    map.put("success", "true");  
    return map;  
  }  
}
时间: 2024-10-20 15:15:27

AJAX与spring mvc交互的相关文章

jquery的ajax与spring mvc对接注意事项

昨天一直纠结这么一个问题,应用场景是这样的: 这里登陆是通过jquery的ajax传输数据到后台controller类相应的映射mapping接收.本来是想,在后台验证成功之后返回一个视图modelAndView.但是却不曾想到有这么一个问题,就是不管你怎么返回,前台就是不跳转页面.这里牵扯到一个很重要的问题.先来看看我前端ajax发送登陆请求的代码: <script type="text/javascript"> $(function() { $('#submitLogi

Ajax分页 Spring MVC + Hibernate

效果图: 1.  添加公共类.方法.代码 1.    分页类:Page.java package cn.com.aperfect.sso.base.dao; import java.util.ArrayList; import java.util.List; public class Page<T> { // 当前页数 private int currentPage; // 记录偏移量 private int offset; // 总页数 private int totalsPage; //

spring mvc 和ajax异步交互完整实例

Spring MVC 异步交互demo: 1.jsp页面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR

spring mvc 和ajax异步交互完整实例(转自CSDN) 附下载地址

spring mvc 和ajax异步交互完整实例 spring MVC 异步交互demo: demo下载地址:http://download.csdn.net/download/quincylk/9521375 1.jsp页面: [java] view plain copy print? <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-

Spring MVC 通过ajax实现前后台交互

先看前台ajax部分: 1 $('#delMd').click( 2 function(){ 3 if($('#reqState').val() == '2'){ 4 $.Dialog.show("申请单已提交审批,不能再更改"); 5 return false; 6 } 7 if($("#itemNo").val() == '0'){ 8 $.Dialog.show("请选择要删除的主数据"); 9 return false; 10 } 11

jQuery中Ajax+Spring MVC实现跨域请求

项目开发中,某个可独立.也可集成的子业务模块须要向外开放相关API接口,先说下项目本身使用了jersery来实现RESTful webservice以名词形式公布API.有意思的是在实际的操作中同事却通过Ajax跨域请求的方式去调用该API,先不说成功与否,这样的方式本就是"滑稽"的.和他一起探讨了此种做法的不合理性,之后选择jersey client的方式进行远程调用.只是他在跨域请求中遇到了问题,自己闲暇时间予以解决,这才是此篇文章的由来. jQuery对跨域请求有两种解决方式各自

Ajax+Spring MVC实现跨域请求(JSONP)

JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载额文档的属性.有点绕,说的简单点就是浏览器限制脚本只能和同协议.同域名.同端口的脚本进行交互. JSONP就是为了解决这一问题的,JSONP是英文JSON with Padding的缩写,是一个非官方的协议.他允许服务端生成script tags返回值客户端,通过javascript call

Ajax+Spring MVC实现跨域请求(JSONP)(转)

背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 以将资源移动到相同的域名上或者启用 CORS 来解决这个问题. 百度一下,发现是遇到了跨域请求请求问题.搜集资料如下 JSONP解释 在解释JSONP之前,我们需要了解下"同源策略"这个概念,这对理解跨域有帮助.基于安全的原因,浏览器是存在同源策略机制的,同源策略阻止从一个源加载的文档或脚

Spring MVC前后端数据交互总结

控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是servlet的替代品. - append Spring MVC在Web应用中扮演V的角色,负责处理HTTP请求并返回相应的资源,它在用的时候要配置一个核心的Dispatcher负责检查资源,请求过来的时候会查找是否有相应的Handler,有就会把请求交给Controller,一般使用注解来配置暴露给用户