zoukankan      html  css  js  c++  java
  • springmvc处理ajax请求

    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();
        }
         
    }
    复制代码
  • 相关阅读:
    Douglas-Peucker 轨迹压缩算法
    Marching squares 算法 获取轮廓(contour tracing)
    创建Mesh->格子地图转NavMesh->可破坏墙壁
    StretchedBillboard 实现
    程序员的微创业
    买云服务器有推荐吗?国内知道有腾讯云、阿里云...等等,不知道该选哪个好了,另外优惠吗?
    我的阿里云5年
    2021阿里云、腾讯云、华为云、滴滴云评测比较
    终于找到可以一文多发的平台了!
    2019年最新阿里云主机优惠购买指南
  • 原文地址:https://www.cnblogs.com/soundcode/p/6443347.html
Copyright © 2011-2022 走看看