vue与axios中get和post请求

一、Get请求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="utf-8" />
    <title>排行榜</title>
    <script type="text/javascript" src="js/axios.min.js"></script>
    <script type="text/javascript" src="js/vue.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
</head>
<div id="app" class="row">
    <div  class="col-lg-6">
        <table  class=" table table-condensed table-striped ">
            <tr class="row">
                <td class="col-lg-6">
                    序号
                </td>
                <td class="col-lg-6">
                    姓名
                </td>
            </tr>
            <tr v-for="(value,key,index) in lists" class="row">
                <td class="col-lg-6">{{key}}</td>
                <td class="col-lg-6">{{value}}</td>
            </tr>
        </table>
    </div>
    <div class="col-lg-6 form">
        <p>
            序号<input id="xuhao0" type="text" class="form-control" v-model="num"/>
        </p>
        <p>
            姓名<input id="mingzi0" type="text" class="form-control" v-model="name"/>
        </p>
        <p>
            <button class="btn" v-on:click="tianjia()">添加</button>
        </p>
    </div>
</div>

</body>
<script>
    var vue = new Vue({

        el: "#app",
        data: {
            num: "",
            name: "",
            op: "",
            lists: {}

        },
        methods: {
            tianjia: function () {
                var data = {};
                data.name = vue.name;
                data.num = vue.num;
                //在地址中书写键值对
                var url = "./add?num="+data.num+"&name="+data.name;
                //使用get方式将键值对传输过去
                axios.get(url).then(function (value) {
                    //现在需要取得Servlet传送过来的内容
                    console.log(value);
                    vue.lists = value.data.list;
                    if(value.data.msg==1){
                        alert("添加成功")
                    }else{
                        alert("添加失败")
                    }
                    //官方建议进行错误诊断
                }).catch(function (reason) {
                    console.log(reason);
                })

            }
        }
    })



</script>
</html>

二、Post请求(键值对方式)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="utf-8" />
    <title>排行榜</title>
    <script type="text/javascript" src="js/axios.min.js"></script>
    <script type="text/javascript" src="js/vue.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
</head>
<div id="app" class="row">
    <div  class="col-lg-6">
        <table  class=" table table-condensed table-striped ">
            <tr class="row">
                <td class="col-lg-6">
                    序号
                </td>
                <td class="col-lg-6">
                    姓名
                </td>
            </tr>
            <tr v-for="(value,key,index) in lists" class="row">
                <td class="col-lg-6">{{key}}</td>
                <td class="col-lg-6">{{value}}</td>
            </tr>
        </table>
    </div>
    <div class="col-lg-6 form">
        <p>
            序号<input id="xuhao0" type="text" class="form-control" v-model="num"/>
        </p>
        <p>
            姓名<input id="mingzi0" type="text" class="form-control" v-model="name"/>
        </p>
        <p>
            <button class="btn" v-on:click="tianjia()">添加</button>
        </p>
    </div>
</div>

</body>
<script>
    var vue = new Vue({

        el: "#app",
        data: {
            num: "",
            name: "",
            op: "",
            lists: {}

        },
        methods: {
            tianjia: function () {
                var data = {};
                data.name = vue.name;
                data.num = vue.num;
                var url = "./add";
                //使用这个对象来对键值对进行操作
                var da = new URLSearchParams();
                da.append("num",data.num);
                da.append("name",data.name);
                //使用post方式将键值对传输过去
                axios.post(url, da).then(function (value) {
                    //现在需要取得Servlet传送过来的内容
                    console.log(value);
                    vue.lists = value.data.list;
                    if(value.data.msg==1){
                        alert("添加成功")
                    }else{
                        alert("添加失败")
                    }
                    //官方建议进行错误诊断
                }).catch(function (reason) {
                    console.log(reason);
                })

            }
        }
    })



</script>
</html>

三、Post请求(JSON方式)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <meta charset="utf-8" />
    <title>排行榜</title>
    <script type="text/javascript" src="js/axios.min.js"></script>
    <script type="text/javascript" src="js/vue.js"></script>
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
  </head>
  <div id="app" class="row">
    <div  class="col-lg-6">
      <table  class=" table table-condensed table-striped ">
        <tr class="row">
          <td class="col-lg-6">
            序号
          </td>
          <td class="col-lg-6">
            姓名
          </td>
        </tr>
        <tr v-for="(value,key,index) in lists" class="row">
          <td class="col-lg-6">{{key}}</td>
          <td class="col-lg-6">{{value}}</td>
        </tr>
      </table>
    </div>
    <div class="col-lg-6 form">
      <p>
        序号<input id="xuhao0" type="text" class="form-control" v-model="num"/>
      </p>
      <p>
        姓名<input id="mingzi0" type="text" class="form-control" v-model="name"/>
      </p>
      <p>
        <button class="btn" v-on:click="tianjia()">添加</button>
      </p>
    </div>
  </div>

  </body>
  <script>
      var vue = new Vue({

          el: "#app",
          data: {
              num: "",
              name: "",
              op: "",
              lists: {}

          },
          methods: {
              tianjia: function () {
                  var data = {};
                  data.name = vue.name;
                  data.num = vue.num;
                  var url = "./add";
                  //post数据传输
                  axios.post(url, data).then(function (value) {
                      //现在需要取得Servlet传送过来的内容
                      console.log(value);
                      vue.lists = value.data.list;
                      if(value.data.msg==1){
                          alert("添加成功")
                      }else{
                          alert("添加失败")
                      }
                      //官方建议进行错误诊断
                  }).catch(function (reason) {
                      console.log(reason);
                  })

              }
          }
      })



  </script>
</html>

统一的接收方式(使用到了commons.io包,fastjson包)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;


public class addServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        //消除乱码
        request.setCharacterEncoding("UTF-8");
        response.setContentType("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        //使用键值对来对数据进行接受
        String num = request.getParameter("num");
        String name = request.getParameter("name");
        //加入一个判断条件,如果键值对的方式没有接收到数据则使用json进行接收
        if(num==null){
            //json形式的数据接收需要用到流
            InputStream in = request.getInputStream();
            //将流转换为字符串  使用的是org.apache.commons.io.IOUtils包下的内容
            String str = IOUtils.toString(in,"utf-8");
            //将字符串转换成json格式对象   使用的是com.alibaba.fastjson.JSONObject包下的方法
            JSONObject jsonObject = JSON.parseObject(str);
            //将json对象中的内容提取出来
            num = jsonObject.getString("num");
            name = jsonObject.getString("name");
        }
        //从域中取得一个集合
        Map list =(Map) request.getServletContext().getAttribute("list");
       //如果这个集合不存在,就新建一个集合
        if (list==null){
            list = new HashMap();
            //把集合放到域中
            request.getServletContext().setAttribute("list",list);
        }
        //新建一个JSON对象进行值的存入
        JSONObject json = new JSONObject();
       //对取到的值进行判断
        if(list.containsKey(num)){
            //如果key已经存在 则不让放入
            //用jsonobject.put()方法将值放入 json对象
            json.put("msg",0);    //第一个为key  第二个为value
        }else{
            //如果key不存在 则将取到的值放入
            list.put(num,name);
            //用jsonobject.put()方法将值放入 json对象
            json.put("msg",1);
        }
        //然后将 map 集合 也放入到json对象中
        json.put("list",list);
        //将json对象打包 做为返回值发送到jsp中
        //JSON.toJSONString()这个方法是为了将json对象转换为字符串   第一个字段为需要传输的对象 第二个是为了转义"/"
        response.getWriter().print(JSON.toJSONString(json, SerializerFeature.WriteSlashAsSpecial));
    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        doPost(request,response);
    }
}

猜你喜欢

转载自blog.csdn.net/scbiaosdo/article/details/81292028