首页 > 其他分享 >Ajax前后端交互实例

Ajax前后端交互实例

时间:2023-10-18 23:44:45浏览次数:42  
标签:请求 9090 id xhr Ajax 实例 交互 teacher

什么是前后端联调?

在我们开发的过程中,发送请求的ajax数据都不是后端返回的真数据,而是我们自己通过接口mock模拟的假数据,当前端的代码编写完成后,后端的接口也写好后,我们就需要把mock数据换点,尝试使用后端提供的数据,进行一个前后端的调试,我们会把这个过程叫做前后端接口联调。

 

 真正的零基础都是从安装开始的AwA

编译器选择IDEA:附赠激活码:IntelliJ IDEA2023.2 破解 永久激活 最新版IDEA激活 亲测可用! - 爱激活网 (aijihuo.cn)

Node.js: 下载 | Node.js 中文网 (nodejs.cn)选择对应版本,安装程序除了安装地址以外其它都是默认就行

nginx:nginx: download

MySQL:超详细MySQL安装及基本使用教程 - 知乎 (zhihu.com)

先来介绍下前后端是怎么连接交互的:

一般是前端设计界面,向后端发送一些请求,而发送请求的技术选用的是Ajax,但现在流行的一般都是先转换成Json格式来交互数据的,

Ajax

先来说说什么是Ajax

异步 JavaScript 和 XML,或 Ajax 本身不是一种技术,而是一种将一些现有技术结合起来使用的方法,包括:HTML 或 XHTMLCSSJavaScriptDOMXMLXSLT、以及最重要的 XMLHttpRequest 对象。当使用结合了这些技术的 Ajax 模型以后,网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面。这使得程序能够更快地回应用户的操作。Ajax 最吸引人的特性是它的“异步”性质,这意味着它可以与服务器通信、交换数据并更新页面,而无需刷新页面。

尽管 Ajax 中的 X 代表 XML,但是 JSON 才是首选,因为它更加轻量,而且是用 JavaScript 编写的。在 Ajax 模型中,JSON 和 XML 都被用来包装信息

HTTP请求报文格式与参数

行:         POST /s?ie=utf-8  HTTP/1.1

头:         Host: hepingan.top

    Cookie: a=name=hepingan

    Content-type: application/x-www-form-urlencoded

    User-Agent: chrome 83

空行

体   username=admin&password=admin

上面的就是一个http请求的例子,下面就是响应报文的例子

行  HTTP/1.1  200  OK

头  Content-Type: text/html;charset=utf-8

   Content-length: 2048

   Content-encoding: gzip

空行

体  <html>

     ....

   </html>

 

首先先搞后端,我用的是java 的springboot框架,创建时选择如下配置:

springboot的版本尽量选低点,不然不兼容出问题。jdk版本我选的是11.

打开pom.xml并在denpendences里引入mybatis的坐标:

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter-test</artifactId>
            <version>2.3.1</version>
            <scope>test</scope>
        </dependency>

然后将application的文件格式给成yml,并输入:

server:
  port: 9090


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    password: 1234
    username: root
    url: jdbc:mysql://localhost:3306/hh?useUnicode=true&characterEncoding=utf-8&

 password 和url的数据库名记得换成自己的!我这里写的后端端口为9090;

引入数据库:

右边选择数据库并添加数据源,选择mysql。

username输入root,password就是你的密码。

然后创建一个表,mysql创建语句:

create table teacher
(
    id int unsigned primary key auto_increment comment '主键ID',
    name varchar(20) ,
    age  int         
);

然后再在idea自带的数据库表格编辑里添加几个数据方便测试。

然后创建下面的包:

先编辑TeacherController:

@RestController
@RequestMapping("/teacher")
public class TeacherController {
    @Autowired
    private TeacherMapper teacherMapper;

    @GetMapping("/")
    public List<Teacher> ListTeacher(){
        List<Teacher> list = teacherMapper.ListTeacher();
        return list;
    }

    @GetMapping("/{id}")
    public Teacher getTeacher(@PathVariable("id") Long id){
        return teacherMapper.getTeacher(id);
    }

大概意思就是一个/teacher的接口里有get形式查询teacher表的请求和根据id查询的接口。

然后再在TeacherMapper里编写:

@Mapper
public interface TeacherMapper {

    @Select("select * from teacher")
    List<Teacher> ListTeacher();


    @Select("select *from teacher where id=#{id}")
    Teacher getTeacher(Long id);

然后启动项目:

然后在浏览器输入localhost:9090/teacher/和localhost:9090/teacher/1,如果有结果就说明成功了。

接下来是前端:

直接随便创建个html文件,里面就编写:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>ajax</title>
	</head>
	<body>
		<body>
		  <div id="dataContainer"></div>
		</body>
		<script>
			var xhr = new XMLHttpRequest();
			var dataContainer = document.getElementById('dataContainer');
			
			xhr.onreadystatechange = function() {
			  if(xhr.readyState === 4) {
			    if(xhr.status === 200) {
			      // 请求成功,处理返回的数据
			      dataContainer.innerHTML = xhr.responseText;
			    } else {
			      // 请求失败,处理错误
			      console.error(xhr.statusText);
			    }
			  }
			};
			
			xhr.open('GET', 'http://localhost:9090/teacher/', true);
			xhr.send();
		</script>
	</body>
</html>

然后再运行浏览器打开就可以看到成果了。

标签:请求,9090,id,xhr,Ajax,实例,交互,teacher
From: https://www.cnblogs.com/hepingan/p/17750496.html

相关文章

  • springbatch 实例
    packagecom.jeesite.modules.sdbatch.service;importcom.jeesite.common.idgen.IdGen;importcom.jeesite.modules.medrec.service.MedRecMainService;importcom.jeesite.modules.sdcommon.DateUtils;importcom.jeesite.modules.sdform.service.SdCourseService;imp......
  • Java(Spring) 通过反射classforName获取对象实例导致@Autowired注入失效
    使用策略模式多态获取具体的策略问题描述:classforName在代码中使用反射获取对象实例后,对象实例中通过@Autowrite注解注入的属性值为null(注入失败),导致带反射获取的对象实例调用方法时出现空指针等情况。问题原因:通过反射获取对象实例相当于“new”了一个对象,所以这个对象并没有被......
  • 浅谈AJAX
    什么是AJAX?AJAX(AsynchronousJavaScriptandXML),中文叫做:异步的JavaScript和XML。这是一种Web交互方法AJAX说白了,就是”服务器和客户端之间是如何交流的?“这是一种“老技术,新用法”。它最早是2005年由"AJAX之父"JesseJamesGarrett提出。AJAX技术的理解实际上,它是由几......
  • 【Python&语义分割】Segment Anything(SAM)模型交互式分割+掩膜保存(三)
    ​我之前分享了SegmentAnything(SAM)模型的基本操作,这篇给大家分享下交互式语义分割代码,可以通过鼠标点击目标物生成对应的掩膜,同时我还加入了掩膜保存的代码。1SegmentAnything介绍1.1概况        MetaAI公司的SegmentAnything模型是一项革命性的技术,该模型能......
  • docker 交互式运行容器的方法
    3.交互式运行容器的方法:dockerrun-itcentos每创建一个容器都是在之前的image之上多了一层,比如dockerrun了二次,每一次会基于这个镜像加了一层.所以,在查看contrainer时,会有两个容器.4.命令说明:docker分为ManagementCommands和Commands两种命令.#1.删除某个容器docke......
  • 优维产品使用最佳实践:实例拓扑
    背景实例拓扑可以帮助我们直观地了解整个系统的架构和组成情况,该拓扑图是通过已有的实例的关联关系自动生成,当实例数据和关系变化时拓扑图也能实时更新,我们可以快速直观的查看当前实例下所有资源的之间的网状关系和资源数量。实例拓扑支持以下功能:过滤实例,可以只看符合的规则的实......
  • Java大文件上传详解及实例代码
    前言:上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里服......
  • WPF3D关于HelixToolkit-3D呈现的交互处理
    关于HelixToolkit-这个3D呈现的交互处理推荐使用,因为功能比较强大一个开源3D库,根据MIT许可证获得许可。MIT许可证非常宽松,允许在专有软件中使用。该库基于.NET,目前专注于WPF平台。HelixToolkit是.NETFramework的一个开源3D图形库,它主要用于创建和操作3D图形1。HelixToolkit......
  • linux的expect用法,用来跳过窗口交互性
    expect的核心是spawnexpectsendset spawn调用要执行的命令expect等待命令提示信息的出现,也就是捕捉用户输入的提示:send发送需要交互的值,替代了用户手动输入内容set设置变量值interact执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登......
  • Python 练习实例22
    题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。程序源代码:实例#!/usr/bin/python#-*-coding:UTF-8-*-foriinrange(ord('x'),ord('z')+1):......