利用Vue和axios在页面加载完成后发送异步请求

这是servlet层的代码:

package com.fldwws.web;

import com.alibaba.fastjson.JSON;
import com.fldwws.pojo.Brand;
import com.fldwws.service.BrandService;

import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/SelectAllServlet")
public class SelectAllServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.调用BrandService的方法

        //1.1 new一个对象
        BrandService brandService = new BrandService();
        //1.2 调用方法
        List<Brand> brands = brandService.SelectAll();

        //3.将json数据序列化
        String jsonString = JSON.toJSONString(brands);

        //4.响应数据
        response.setContentType("text/json;charset=utf-8");
        response.getWriter().write(jsonString);
    }
}

在这一部分中,在得到结果集合后,需要有三个操作

  1. 将得到的数据序列化
  2. 设置响应格式,防止乱码
  3. 响应数据

这是web层代码:

<html>
<head>
    <title>数据展示界面</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>

<body>
<div class="container mt-5" id="app">



    <button class="btn btn-primary mb-5 mt-5" id="add">新增一条数据</button>


    <table class="table  table-bordered">
<!--<%&#45;&#45;        表头&#45;&#45;%>-->
        <thead>
        <tr>
            <th>序号</th>
            <th>品牌</th>
            <th>公司</th>
            <th>价格</th>
            <th>描述</th>

        </tr>
        </thead>
<!--<%&#45;&#45;        主体&#45;&#45;%>-->
        <tbody v-for="(brand,i) in brands">
            <td>{{i + 1}}</td>
            <td>{{brand.brandName}}</td>
            <td>{{brand.companyName}}</td>
            <td>{{brand.ordered}}</td>
            <td>{{brand.description}}</td>
        </tbody>



    </table>
</div>


</body>
<!-- 官网提供的 axios 在线地址 -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    new Vue({
        el:"#app",
        data(){
            return{
                brands:[]
            }
        },
        mounted(){
            //页面加载完成发送异步请求,查询数据
            var that = this;
            axios.get("http://localhost:8080/SelectAllServlet")
                .then(function(response){
                    // console.log(response.data);
                    that.brands = response.data;
                }, function (err) {
                })
        }
    })
</script>
</html>


这里也有几个使我耳目一新的地方。

  1. 页面加载完成发送异步请求,查询数据

也就是在vue中的mounted(){}函数,只要将axios代码写在这里就可以实现页面加载完成就发送请求。

  1. 数组的定义。

这里数组是定义在一个return中的,查资料说是可以重用。因为我之前学习的只见过放在data属性里面,看来还是应该多学习,长见识。这样子获取到结果集合的话确实方便,学习 学习。

data(){
	return{
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值