springmvc处理ajax请求

来源:互联网 发布:手机淘宝怎么上门取件 编辑:程序博客网 时间:2024/04/29 21:27

转载:http://www.cnblogs.com/tingbogiu/p/5796199.html

1.controller将数据封装成json格式返回页面

复制代码
@RequestMapping("/dataList") public void  datalist(CsoftCunstomerPage page,HttpServletResponse response) throws Exception{    List<CsoftCunstomer> dataList = csoftCunstomerService.queryByList(page);    //设置页面数据    Map<String,Object> jsonMap = new HashMap<String,Object>();    jsonMap.put("total",page.getPager().getRowCount());    jsonMap.put("rows", dataList);         try {        //设置页面不缓存        response.setContentType("application/json");        response.setHeader("Pragma", "No-cache");        response.setHeader("Cache-Control", "no-cache");        response.setCharacterEncoding("UTF-8");        PrintWriter out= null;        out = response.getWriter();        out.print(JSONUtil.toJSONString(jsonMap));        out.flush();        out.close();    } catch (IOException e) {        e.printStackTrace();    }     }
复制代码

2.ajax提交数据以json格式到controller中

  例一:

复制代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"><html >  <head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <!--<script type="text/javascript" src="../static/js/jquery-1.7.2.min.js"></script>-->    <!--JS的地址可以写成下面这样,将来部署的时候,这些静态文件就可以单独部署了,不依赖于后台路径-->    <script type="text/javascript" src="http://localhost:8080/sshdemo/static/js/jquery-1.7.2.min.js"></script>    <script type="text/javascript">      $(document).ready(function() {        ajaxRequest();      });      function ajaxRequest() {        $.ajax({          url: "http://localhost:8080/sshdemo/hello/ajax",          type: "POST",          dataType: "json",          data: {            "a": 1,            "b": 2,            "c": 3          },          async: false,          success: function(data) {            alert("success");            $.each(data, function(index, element) {              alert(element.a);              alert(element.b);              alert(element.c);            });          },          error: function() {            alert("error");          }        });      }    </script>  </head>  <body>    <div>Hello World!</div>  </body></html>
复制代码
复制代码
package com.xbs.ready.ssh.controller;import com.alibaba.fastjson.JSON;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.logging.Level;import java.util.logging.Logger;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;/** * * @author xbs */@Controller@RequestMapping("hello")public class HelloController {  /**   * ajax请求不需要返回页面,只需要得到response中的数据即可,所以方法签名为void即可   *    * @param request   * @param response    */  @RequestMapping(value = "ajax", method = RequestMethod.POST)  public void ajaxDatas(HttpServletRequest request, HttpServletResponse response) {    String jsonResult = getJSONString(request);    renderData(response, jsonResult);  }  private String getJSONString(HttpServletRequest request) {    //故意构造一个数组,使返回的数据为json数组,数据更复杂些    List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>(5);    Map<String, Object> map1 = new HashMap<String, Object>(10);    //可以获得ajax请求中的参数    map1.put("a", request.getParameter("a"));    map1.put("b", request.getParameter("b"));    map1.put("c", request.getParameter("c"));    datas.add(map1);    //故意构造一个数组,使返回的数据为json数组,数据更复杂些    Map<String, Object> map2 = new HashMap<String, Object>(10);    map2.put("a", "11");    map2.put("b", "22");    map2.put("c", "33");    datas.add(map2);    String jsonResult = JSON.toJSONString(datas);    return jsonResult;  }  /**   * 通过PrintWriter将响应数据写入response,ajax可以接受到这个数据   *    * @param response   * @param data    */  private void renderData(HttpServletResponse response, String data) {    PrintWriter printWriter = null;    try {      printWriter = response.getWriter();      printWriter.print(data);    } catch (IOException ex) {      Logger.getLogger(HelloController.class.getName()).log(Level.SEVERE, null, ex);    } finally {      if (null != printWriter) {        printWriter.flush();        printWriter.close();      }    }  }}
复制代码

  例二:

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html>    <head>        <title>helloworld</title><script type="text/javascript" src="/spring_mvc/js/jquery.js"></script><script type="text/javascript">    $(function(){        $("#testButton").click(function(){            var $a = $(this);            $.ajax({                url:"/spring_mvc/testAjax.do",                type:'post',                data:'name=admin&password=123456',                dataType:'html',                success:function(data,status){                    if(status == "success"){                        var objs = jQuery.parseJSON(data);                        var str = "";                        for(var i=0;i<objs.length;i++){                            str = str + objs[i].activityName+" ";                        }                        $("#content").html(str);                    }                },                error:function(xhr,textStatus,errorThrown){                }            });        });    });</script>    </head>    <body>        <button id="testButton">异步传输</button>        <div id="content"></div>    </body></html>
复制代码
复制代码
public class TestAjaxAction implements Controller {    public ModelAndView handleRequest(HttpServletRequest request,            HttpServletResponse response) throws Exception {                response.setCharacterEncoding("UTF-8");                String name = request.getParameter("name");        String password = request.getParameter("password");        System.out.println(name+" : "+password);        PrintWriter out = response.getWriter();                List<Map<String,String>> list = new ArrayList<Map<String,String>>();        Map<String,String> m1 = new HashMap<String,String>();        m1.put("activityId", "000001");        m1.put("activityName", "阿斯蒂芬1");        Map<String,String> m2 = new HashMap<String,String>();        m2.put("activityId", "000002");        m2.put("activityName", "阿斯蒂芬2");        Map<String,String> m3 = new HashMap<String,String>();        m3.put("activityId", "000003");        m3.put("activityName", "阿斯蒂芬3");        Map<String,String> m4 = new HashMap<String,String>();        m4.put("activityId", "000004");        m4.put("activityName", "阿斯蒂芬4");        Map<String,String> m5 = new HashMap<String,String>();        m5.put("activityId", "000005");        m5.put("activityName", "阿斯蒂芬5");        list.add(m1);        list.add(m2);        list.add(m3);        list.add(m4);        list.add(m5);                String s = JSONArray.fromObject(list).toString();        out.print(s);        out.close();                return null;    }}
复制代码

  例三:

复制代码
@RequestMapping("/dataList") public void  datalist(CsoftCunstomerPage page,HttpServletResponse response) throws Exception{    List<CsoftCunstomer> dataList = csoftCunstomerService.queryByList(page);    //设置页面数据    Map<String,Object> jsonMap = new HashMap<String,Object>();    jsonMap.put("total",page.getPager().getRowCount());    jsonMap.put("rows", dataList);         try {        //设置页面不缓存        response.setContentType("application/json");        response.setHeader("Pragma", "No-cache");        response.setHeader("Cache-Control", "no-cache");        response.setCharacterEncoding("UTF-8");        PrintWriter out= null;        out = response.getWriter();        out.print(JSONUtil.toJSONString(jsonMap));        out.flush();        out.close();    } catch (IOException e) {        e.printStackTrace();    }     }
复制代码

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网贷天天发信息怎么办 诈骗电话一直打个不停怎么办 寄快递电话号码写错了怎么办 寄快递收件人号码错了怎么办 嫒和媛分不清楚怎么办 快递柜单号没了怎么办 邮政蜜蜂箱 退件怎么办 手机狂收验证码怎么办 快递柜超过24小时怎么办 快递柜短信删了怎么办 丰巢电话留错了怎么办 e栈快递员软件打不开怎么办 耳朵里进了东西怎么办 e栈收不到取件码怎么办 挖机排放不达标怎么办 三星手机一直开机关机怎么办 高速路上胎爆了怎么办 迪兰588温度高怎么办 象印保温杯掉漆怎么办 报销的车票丢了怎么办 快递写错一个字怎么办 外国人在中国护照过期怎么办 大学选课选漏了怎么办 高德地图不能琦跨城导航怎么办 水痘预防针间隔时间太久怎么办 车载导航被删了怎么办 高德地图gps信号弱怎么办 ai里面图片太多文件太大怎么办 ai文件太大怎么办1个G 文件写错了字怎么办 戒指弄不下来了怎么办 高德地图反应慢怎么办 白色印花t恤染色怎么办 印花t恤图案掉了怎么办 衣服上印花掉了怎么办 ps cs 3图标太小怎么办 ai cs6图标太小怎么办 su界面太小怎么办win10 华为p9手机gps信号弱怎么办 小米手机导航gps信号弱怎么办 安卓手机gps信号弱怎么办