angular2下用http到由SpringMVC发布rest服务的服务器端拉取数据

2023-11-02

本文讲述如何使用angular2的http服务来去一台由SpringMVC发布的rest服务的服务器上拉取数据。

我们现来上服务端代码,

 @ResponseBody
    @RequestMapping("/hero")
    public Object getData(HttpServletResponse response) {

        //服务器端跨域的配置
        response.setHeader("Access-Control-Allow-Origin","*");
        logger.warn("得到调用.....");
        System.out.println(new Hero().getName() );
        Hero hero = new Hero();
        hero.setName("张三李强");
        return  hero;
    }

response.setHeader("Access-Controller-Allow-Origin","*");这行代码是为了允许跨域,  所谓的跨域这里笔者简单的讲一下,就是访问不同域的时候,是否允许跨域的一个问题。


javascript请求的网络地址只要协议、域名、端口有任何一个不同,都被当作是不同的域。

打一个比方 http://www.test.com/ 和

http://www.test.com:8080就是不同的域


服务器端的rest服务就讲到这里。

现在来讲客户端的实现。

angular2采用的编程语言是typescript。

类似于其他的MVVM框架。angular2同样的进行了组件化。

这里笔者写了三个文件

student.component.ts  //组件文件

student,service.ts   //服务文件

student.ts   //实体文件

组件代码调用服务代码,服务的代码发起http请求从rest服务器上拉取数据



这里笔者直接上代码了,代码的注释都已经很详细了。足以说明问题

student.component.ts 

import {Component, OnInit} from "@angular/core";
import {StudentService} from "./student.service";
import {Student} from "./student";
@Component({
  moduleId: module.id,
  selector: 'student',
  template: `{{title}}`,
  providers: [StudentService],
})
//实现了OnInit接口以便于加载完组件就进行从服务器端抓取数据
export class StudentComponent implements OnInit {
  title = '这是学生组件用于演示ng2从springmvc服务器端拉取数据';
  students: Student[];
  //注入StudentService服务
  constructor(private studentService: StudentService) {
  }
  //组件被加载立即去rest服务器上拉取数据
  ngOnInit(): void {
    this.getStudent();
  }

  getStudent() {
    this.studentService.getStudent().then(students => console.log()
      , error => console.log(error));
  }


}


student,service.ts

import {Injectable} from "@angular/core";
import {Http, Response} from "@angular/http";
import {Student} from "./student";

@Injectable()
export class StudentService {
  //从指定的地址拉取数据
  private url = 'http://localhost:8080/hero';

  constructor(private http: Http) {
  }

  getStudent(): Promise<Student[]> {
    return this.http.get(this.url).toPromise()
      .then(this.extractData)
      .catch(this.handleError);
  }
  private extractData(res: Response) {
    let body = res.json();
    //将拿到的hero数据进行打印....
    console.log("即将开始对Student数据的打印-----");
    console.log(body['name']);
    console.log("结束对Student数据的打印-----");

    return body;
  }
  private handleError (error: Response | any) {
    console.log("有错误???");
    // In a real world app, we might use a remote logging infrastructure
    let errMsg: string;
    if (error instanceof Response) {
      const body = error.json() || '';
      const err = body.error || JSON.stringify(body);
      errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
    } else {
      errMsg = error.message ? error.message : error.toString();
    }
    console.error(errMsg);
    return Promise.reject(errMsg);
  }
}


student.ts  

//自己封装的实体
export class Student {
  constructor(public id: number, public name: string) {
  }
}

完整的代码地址是:   http://download.csdn.net/detail/u013803262/9752256


代码在myNg2_http_demo这个分支上,代码在app/student文件夹下。


至于服务器端只需要在springMVC的controller类中加入一个被@RequestMapping注解修改的方法即可,直接返回pojo对象就可以了。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angular2下用http到由SpringMVC发布rest服务的服务器端拉取数据 的相关文章

随机推荐

  • 牛客——子序列(组合数学)

    子序列 题目描述 给定一个小写字母字符串 T T T 求有多少长度为 m m m的小写字母字符串 S
  • 端口相关知识总结

    端口相关知识总结 80是服务器上的一个软件 服务器软件 端口是软件的代号 3306是MySQL的端口 1521是Oracle的端口 80是外部服务器的通用端口 京东也是 不写也可以访问 80端口可以省略 文件下载端口 FTP 都是21 FT
  • Android 13 - Media框架(2)- Demo App与MediaPlayer Api了解

    尝试用MediaPlayer写了一个播放demo 实现了网络流和本地流的播放 由于本人对app开发一窍不通 所以demo中很多内容是边查资料边写的 写的也比较杂乱 能够帮助理解api就行 这一节主要会记录demo开发中学到的内容 以及了解M
  • LeetCode 312. Burst Balloons(戳气球)

    原题网址 https leetcode com problems burst balloons Given n balloons indexed from 0 to n 1 Each balloon is painted with a nu
  • 微信小程序云开发实现微信小程序订阅消息服务通知教程

    微信小程序云开发实现微信小程序订阅消息服务通知教程 申请模板 云函数 小程序页面 调试 我这里就直接真机测试了 申请模板 1 在这边菜单栏 找到 功能 里的 订阅消息 2 在 公共模板库 里面选取自己想要的模板 选取自己想要的消息即可 云函
  • 『学Vue2+Vue3』指令补充、computed计算属性、watch侦听器

    day02 一 今日学习目标 1 指令补充 指令修饰符 v bind对样式增强的操作 v model应用于其他表单元素 2 computed计算属性 基础语法 计算属性vs方法 计算属性的完整写法 成绩案例 3 watch侦听器 基础写法
  • linux文件基础-2_linux文件细节_lseek_文件指针

    一 linux管理文件 1 硬盘中的静态文件和inode i节点 1 静态文件 放在硬盘中 固定的形式 2 硬盘的两大区域 1 硬盘内容管理表项和储存内容区域 2 操作系统先去访问硬盘内容管理表项 gt 扇区级别的信息 gt 得到储存内容区
  • SAP 货币类型和公司代码的货币设置

    货币类型分为公司代码和集团货币 一般FI 10类型和集团货币 30 事务代码是8KEM 设置货币类型的事务代码是OB22 在S 4 1809版本里编辑功能统合到事务代码FINSC LEDGER 中了 这里集中了分类账和公司代码的设置 设置多
  • 使用正确的命令重启WSL子系统

    问题 大家都知道一般Linux系统重启非常简单 但是在WSL子系统中执行以下两个重启命令是完全无效的 reboot shutdown r 执行命令后提示如下 System has not been booted with systemd a
  • JavaWeb——Servlet

    目录 一 JavaWeb 二 servlet本质 三 Servlet对象生命周期 四 Servlet类的方法介绍 五 适配器思想 一 JavaWeb 对于一个web应用来说 涉及到的角色和规范协议 二 servlet本质 可以将servle
  • Over-smoothing issue in graph neural network(GNN中的过平滑问题)

    在这里转载只是为了让不能够科学搜索的同学们看到好文章而已 个人无收益只是分享知识 顺手做个记录罢了 原网址 https towardsdatascience com over smoothing issue in graph neural
  • 2011.11.24

    完成了刚体 并基本上封装好了
  • 小程序文章详情界面id传送问题

    今天在做由文章列表跳转至文章详情界面时发现不能正常获取文章ID 控制台显示未定义 经过询问他人与搜索资料终于找到了问题所在之处 心累 可以看到这里显示id未定义 错误中学到了什么 大家在发现错误时 一定要善于用console log 来看一
  • 解决创建Vue项目出现template下方有红色波浪错误

    问题 在创建完vue项目后每个点开的文件只要有template或const等单词都会出现红色波浪线报错提示 虽然不影响项目运行 但是看着还是非常碍眼 将鼠标一上去会显示 No Babel config file detected for 路
  • Linux中top命令参数详解

    因为面试经常会问top命令用法 以及各个参数的含义 因此转载补充了了一下 以便自己学习 top命令经常用来监控linux的系统状况 是常用的性能分析工具 能够实时显示系统中各个进程的资源占用情况 top的使用方式 top d number
  • 小程序引入vant-Weapp保姆级教程及安装过程的问题解决

    小知识 大挑战 本文正在参与 程序员必备小知识 创作活动 本文同时参与 掘力星计划 赢取创作大礼包 挑战创作激励金 当你想在小程序里引入vant时 第一步 打开官方文档 第二步 切到快速上手 然后开始步骤一 步骤二 步骤三 你只会看到 以下
  • Awesome IoT

    本文来自 https github com HQarroum awesome iot 中文可以参考 https yq aliyun com articles 54793 Inspired by the awesome list thing
  • 基于BowyerWatson的Delaunay三角化算法实现

    实现效果如下图所示 代码 include
  • 【C++】 Qt-线程并发与线程同步

    文章目录 线程并发 线程同步 原子访问 InterLocked 关键段 Critical Section 也叫临界区 回顾单例出现的问题 关键段基本使用 封装关键段 Qt下的多线程 多线程与进度条 Qt QThread 线程并发 我们再创建
  • angular2下用http到由SpringMVC发布rest服务的服务器端拉取数据

    本文讲述如何使用angular2的http服务来去一台由SpringMVC发布的rest服务的服务器上拉取数据 我们现来上服务端代码 ResponseBody RequestMapping hero public Object getDat