Web应用可以理解为浏览器和服务器之间的交互。
我们可以看一个简单的例子
1.我们在浏览器上方输入www.baidu.com并回车。
2.此时我们的浏览器便对百度的服务器发送数据(请求)。
3.百度的服务器收到并分析了我们的请求后,对我们的浏览器发送数据(响应,里面就有我们拿到的百度主页的这个页面的数据)
4.经过我们浏览器的处理,我们便看到了如下的页面:
![](https://www.www.zyiz.net/i/l/?n=20&i=blog/2466412/202108/2466412-20210803174453357-879349028.png
这就是B/S架构的一个web简单交互过程。
浏览器——请求——>服务器
浏览器<——响应——服务器
它们之间的交流通过某种数据结构(例如json)进行沟通。
Web开发,就是我们编写一个程序运行在服务器上,这个程序可以拿到来自浏览器的数据进行处理,并对浏览器发送数据。
简述一个登录逻辑(同上)
1.用户输入登录信息(账号密码),浏览器发送这个登录信息的数据到服务器。
2.服务器上的程序拿到了这个登录信息,同时这个程序根据登录信息在数据库中进行查找。
3.查找到数据库存储的相关的登录信息,进行比对判断,并将登录结果的正确与否以及处理返回到浏览器中。
除了浏览器,还可以是手机app或者其他什么,本质上都是通过网络,在你这一端和浏览器的数据交互。
各类简单的小系统开发,可以理解为操作程序对数据库的增删改查(CRUD)。
老样子举个简单例子:注册
1.程序获得用户的注册信息,然后连接数据库,并将注册信息存储进数据库,这就是程序层面上的注册逻辑。
如果我们结合前面讲的web本质,就会获得这一整条完整的链路。
1.我们在浏览器注册页面上,输入注册信息。
2.注册信息被发送到服务器。
3.服务器上运行的程序拿到数据,存入数据库。
这里就涉及到了数据库的增 操作
结合数据库中的各类操作,与程序的一些逻辑处理,就可以完成实现开发一个Web系统。
一个进阶一点点的例子(普通的Web业务系统的数据流动)
Java+springboot+Mybatis一个简单的图书管理业务
首先看一下,一个springboot中重要的部分有以下这些层
我们尝试实现一个查询图书的业务
1.[前端]
前端(用户直接看到的那一层),拿到数据(要查询的图书的id),进行包装发送到后端(服务器的程序)
2.[后端.controller]
此时后端启动的springboot程序中的controller层的程序,对相应的路由(比如xxxx.com/login就是一条路由)进行监听(可以理解为这个程序一直关注,代码中的这些路由,有没有人对这些路由发送信数据),对应的路由收到了浏览器发送来的数据,就会执行对应的逻辑。
下图实例程序就是controller层程序,这个路由的作用是:浏览器对服务器xxxx.com/list/这个路由发送一个id值,然后这个程序就会调用springboot项目中service层里的方法findBookById(),并返回这个方法的结果到浏览器。
3.[后端.service]
我们的数据从controller层的针对查书的路由,传入到service层的findBookById()方法。
该方法执行的内容是,将controller中来的id值再传入到dao层的selectBookById方法,然后接收dao层返回的结果,进行处理,再返回到controller再到前端。4.[后端.dao]
dao层就是和数据库接触关联的一层,这里先通俗介绍以下mybatis
mybatis就是一个持久层框架(为什么叫持久层,因为数据在程序中是无法永久保存的,程序结束内存释放,程序里的数据就丢失,如果我们将数据放入到数据库中,它就实现了持久化),它把对数据库的各种操作封装起来,通过一些关联的方式,让我们可以在springboot程序的dao层调用各种增删该查操作:
dao层就是映射了mybatis中的各种对数据库的操作,然后通过dao层的方法对数据库进行增删改查。回到我们的小例子,此时数据从前端——>controller——>service——>dao层,然后我们的dao层再执行了selectBookById()调用了数据库中的查询方法,向上返回查询结果。
图中映射的方法就在上一张介绍mybatis的图中有标注。
5.[后端.数据库]
走到这里我们就走到了最下面一层,数据库查询的结果便可以往上返回,一直到前端啦!
tips:这里的数据在前后段之间是通过json数据格式传输。但是再程序内,返回的结果是由entity中写好的Book类实例出来的对象来接受着的,
直到它从controller层到前端,才变为json格式的数据。
总结:
以上根据id查询书本的小例子中,我们的数据是这么走的:
要查的书籍的id从:前端——>controller——>service——>dao层——>数据库
我们要拿到的查询结果再从:数据库——>dao层——service层——>controller层——>前端
看到这里,你已经对web开发和相关框架即方法和设计思想有一个宏观的粗略的理解,甚至可以简单的上手去阅读并修改项目,接下来根据你的需求,去学习相应的知识能够成为你的一大助力。
你可以通过看教程或阅读别人的小型项目的源码结合文档阅读,开始你的学习。个人的小建议是多敲多读多思考感受,相信你很快就能熟练掌握,并再次进入到下一步的学习中。* 1.