idea web项目之vue的异步加载

intellj idea的安装

首先到官网下载旗舰版

官网网址:https://www.jetbrains.com/idea/
对于注册码自己可以到网上百度,
在这里插入图片描述至于安装记得选择适合自己位数,剩下一路next即可。

创建项目

在idea中,创建project和其他软件有些区别,project是创建一个工作区间,然后在创建的project工作区间下去创建项目。在这里我们创建一个vuejs工作区间
在这里插入图片描述然后在右键vuejs目录选择modul,创建jsonp项目 。
1.选择maven,
2.点击New…选择你下载的jdk。
3.勾选Create…自动导入这些包,就不用配置环境了。(我这边没有自动导入,后面手动导入的)
在这里插入图片描述
在这里插入图片描述

导入相应的包

由于我们会用到json以及springBoot。接下来我们把相应的两个包导入进来。
首先进入maven依赖查询网站https://mvnrepository.com/,输入fastjson,找到Fastjson,点击进入会看到相应的版本,这里我是选择最新版的,点击相应的版本,之后网站会出现fastjson的依赖,复制到项目下的xml中。对于springboot的引入也是在该网站上查询springframework,找到相应的版本呢复制其依赖到项目的xml下。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

编写异步加载后端

直接贴代码,注释因为自己也是边学边写,注释没来得及写,
(idea里自动生成set和get方法是Alt+Insert)
Dept.java

package com.yootk.vuejs.vo;
import java.io.Serializable;
public class Dept implements Serializable {
    private Long deptno ;
    private String dname ;
    private String loc ;
    public Long getDeptno() {
        return deptno;
    }
    public void setDeptno(Long deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
}

DeptAction.java

package com.yootk.vuejs.action;
import com.alibaba.fastjson.JSONObject;
import com.yootk.vuejs.vo.Dept;
import org.apache.tomcat.util.digester.ArrayStack;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DeptAction {
    @ResponseBody
    @RequestMapping("/cors/dept_list")
    public Object list(String dname,String loc,String callback ){
        List<Dept> allDepts=new ArrayStack<Dept>();
        for(int x=0;x<10;x++)
        {   Dept dept=new Dept();
            dept.setDeptno(x+100L);
            System.out.println(dname);
            dept.setDname(dname+"-"+x);
            dept.setLoc(loc + " - " + x);
            allDepts.add(dept);
        }
        String returnData=callback+"("+ JSONObject.toJSONString(allDepts) +")";
        return  returnData;
            }
}

StartVuejsServer .java

package com.yootk.vuejs;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StartVuejsServer {
    public static void main(String[] args) {
        SpringApplication.run(StartVuejsServer.class,args);
    }
}

JSONPConfig .java

package com.yootk.vuejs.config
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.nio.charset.Charset;
import java.util.List;
@Configuration
@EnableWebMvc       // 启用MVC的环境配置
public class JSONPConfig {
    @Bean
    public WebMvcConfigurer getCorsConfig() {   //
        return new WebMvcConfigurer() {
            @Override
            public void configureMessageConverters(List<HttpMessageConverter<?>> list) {
                StringHttpMessageConverter converter = new StringHttpMessageConverter(
                        Charset.forName("UTF-8")) ; // 所有的请求都以UTF-8编码为主
                list.add(converter); // 追加一个转换器
            } // 进行WEB的配置
            @Override
            public void addCorsMappings(CorsRegistry corsRegistry) {
                corsRegistry.addMapping("/cors/**")         // 配置指定匹配路径
                        .allowedHeaders("*")  // 可以进行头部信息发送
                        .allowedOrigins("*")  // 接收任意的域名请求
                        .allowedMethods("*")  // 接收所有的请求模式
                        .allowCredentials(true)// 允许进行Cookie的发送
                        .maxAge(3600) ;
            }
        } ;
    }
}

之后访问localhost:8080/cors/dept_list就可以看到相应的json内容了,当然要先运行StartVuejsServer.java.
在这里插入图片描述

编写异步加载前端

直接贴代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="jQurey/jquery-3.3.1.min.js"></script>
    <script src="js/vue.js"></script>

    <script type="text/javascript" >
        window.onload=function () {
         var  app=new Vue({
                el: '#att',
                data: {
                    message: '跟老王学习vue',
                    id: 'HELLO WORLD',
                    inputAge: 0,
                    inputName: ' ',
                    inputSex: ' ',
                    dept: [],
                },
                methods: { //定义所有的操作函数
                    loadDeptData:function(){
                        $.ajax({
                            url:"http://jsonp.server.com:8080/cors/dept_list",
                            data:{
                                dname:'部门名称',
                                loc:'部门位置',
                            },
                            methods: 'post',
                            contentType:"application/json; charset=utf-8" ,
                            dataType:"jsonp",
                            success:function (data) {
                                app.$data.dept=data  ;
                            },
                            error:function (httpRequest,status,errMsg) {
                                console.log("错误状态"+status)
                                console.log("错误信息"+errMsg)

                            }

                        })

                    }}

            })}
    </script>


</head>
<body>
<div id="att">
    <button @click="loadDeptData">数据加载</button>
    <table>
        <thead><tr>
            <th>age</th>
            <th>name</th>
            <th>sex</th>

        </tr>
        </thead>
        <tbody>
        <tr v-for="(dep, index) in dept"><!--v-for是对数据进行循环遍历 dep 对 table 中的元素进行循环遍历,-->
            <!--index是对table进行序号显示 table中并没有index属性-->
            <td>{{index}}  </td><td>{{dep.deptno}}  </td><td>{{dep.name}}  </td><td>{{dep.loc }}  </td>

        </tr>
        </tbody>

    </table>
</div>
</body>
</html>

异步加载运行最后效果

加载前加载后

小结

运行过程中出现的问题

Error:java: 错误: 不支持发行版本 5

是由于我在引入springframe依赖时在xml文件中并没有标明引入的版本
错误的代码
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
正确的代码<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.0.RELEASE</version> </dependency>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值