简明易懂,将细节隐藏,面向新手树立web开发概念

——学完Java基础语法,超快速上手JavaWeb开发

Web本质(先忽视各种协议)

Web应用可以理解为浏览器和服务器之间的交互。

我们可以看一个简单的例子

1.我们在浏览器上方输入www.baidu.com并回车。

2.此时我们的浏览器便对百度的服务器发送数据(请求)。

3.百度的服务器收到并分析了我们的请求后,对我们的浏览器发送数据(响应,里面就有我们拿到的百度主页的这个页面的数据)

4.经过我们浏览器的处理,我们便看到了如下的页面:

![](https://img2020.cnblogs.com/blog/2466412/202108/2466412-20210803174453357-879349028.png

这就是B/S架构的一个web简单交互过程。

浏览器——请求——>服务器

浏览器<——响应——服务器

它们之间的交流通过某种数据结构(例如json)进行沟通。

Web开发,就是我们编写一个程序运行在服务器上,这个程序可以拿到来自浏览器的数据进行处理,并对浏览器发送数据。

简述一个登录逻辑(同上)

1.用户输入登录信息(账号密码),浏览器发送这个登录信息的数据到服务器。

2.服务器上的程序拿到了这个登录信息,同时这个程序根据登录信息在数据库中进行查找。

3.查找到数据库存储的相关的登录信息,进行比对判断,并将登录结果的正确与否以及处理返回到浏览器中。

除了浏览器,还可以是手机app或者其他什么,本质上都是通过网络,在你这一端和浏览器的数据交互。

简单的小系统开发理解

各类简单的小系统开发,可以理解为操作程序对数据库的增删改查(CRUD)。

老样子举个简单例子:注册

1.程序获得用户的注册信息,然后连接数据库,并将注册信息存储进数据库,这就是程序层面上的注册逻辑。

如果我们结合前面讲的web本质,就会获得这一整条完整的链路。

1.我们在浏览器注册页面上,输入注册信息。

2.注册信息被发送到服务器。

3.服务器上运行的程序拿到数据,存入数据库。

这里就涉及到了数据库的增 操作

结合数据库中的各类操作,与程序的一些逻辑处理,就可以完成实现开发一个Web系统。

最简单快速上手了解springboot+mybatis的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.

简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发的更多相关文章

  1. 面向新手的Web服务器搭建(一)——IIS的搭建

    很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题.看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器 ...

  2. java基础语法中容易出错的细节

    1 java中的数字默认类型为int **容易出现类型转换错误 long 定义的数字后面必须有 “l” “L” float 定义的数字后面必须有 “f” “F” java中比int表述范围大的数,不会 ...

  3. 简明易懂的call apply

    在iteye看到一篇对call解释得相当简明易懂,觉得得宣传一下 : http://uule.iteye.com/blog/1158829 一.方法的定义 call方法: 语法:call([thisO ...

  4. 面向新手的Webserver搭建(一)——IIS的搭建

    非常多童鞋说自己是做移动开发的,想挂个简单的Web API,但是server又不会搭,这样一来測试就成了问题.看看网上的教程.发现略难懂,并且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的We ...

  5. socket网络编程快速上手(二)——细节问题(5)(完结篇)

    6.Connect的使用方式 前面提到,connect发生EINTR错误时,是不能重新启动的.那怎么办呢,是关闭套接字还是直接退出进程呢?如果EINTR前,三次握手已经发起,我们当然希望链路就此已经建 ...

  6. 新手学习Linux之快速上手分析

    一.起步 首先,应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix 问题1:版本的选择 北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先 ...

  7. 新手必看】Highcharts的100个基础问答

    新手必看]Highcharts的100个基础问答 2014-12-2 10:59| 发布者: Mr.Zhang| 查看: 2749| 评论: 3|来自: Highcharts中文论坛   摘要: 1. ...

  8. Vue基础语法-数据绑定、事件处理和扩展组件等知识详解(案例分析,简单易懂,附源码)

    前言: 本篇文章主要讲解了Vue实例对象的创建.常用内置指令的使用.自定义组件的创建.生命周期(钩子函数)等.以及个人的心得体会,汇集成本篇文章,作为自己对Vue基础知识入门级的总结与笔记. 其中介绍 ...

  9. 新手学习web遇到的一些乱码问题

    在新手学习web网站学习的时候经常会遇到?????这种乱码,对于刚起步的菜鸟来说真的很头痛,很容易打击继续学的信心当然了对于菜鸟的我最近也遇到过乱码问题,沉浸其中不能自拔,爱的深啊!!!!!我所遇到的 ...

随机推荐

  1. IDEA拷贝类路径

    1.方法一 1.1.鼠标右击需要复制的类 1.2.点击 Copy Reference 2.方法二 快捷键:Ctrl + Alt + Shift + C

  2. 从HTTP到HTTPS

    从HTTP到HTTPS HTTP存在的缺陷 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改 防窃听 通信加密 HTTP 协议 ...

  3. Java-Lambda相关使用介绍

    频繁使用的语句   Lambda又涉及到comparator和comparable区别(Comparable是实现comparable接口,实现后可以使用Collections.sort或Arrays ...

  4. 散列数据结构以及在HashMap中的应用

    1. 为什么需要散列表? 对于线性表和链表而言,访问表中的元素,时间复杂度均为O(n).即便是通过树结构存储数据,时间复杂度也为O(logn).那么有没有一种方式可以将这个时间复杂度降为O(1)呢?当 ...

  5. SpringCloud Alibaba实战(9:Hystrix容错保护)

    源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经使用OpenFeign完成了服务间的调用.想一下,假如我们一个服务链 ...

  6. CentOS安装ffmpeg+h264

    CentOS安装ffmpeg+h264 前言 坑!坑!坑! 全是坑. 本文安装系统环境为CentOS7.2.我这里提供安装所需的四个源码包,均需要编译安装.所有组件最好都安装最新的稳定版,或者下载使用 ...

  7. 高性能的Redis之对象底层实现原理详解

    对象 在前面的数个章节里, 我们陆续介绍了 Redis 用到的所有主要数据结构, 比如简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合, 等等. Redis 并没有直接使用这些数据结构来实 ...

  8. 『心善渊』Selenium3.0基础 — 16、Selenium对iframe表单的操作

    目录 1.什么是iframe表单 2.iframe表单操作流程 3.iframe表单操作常用方法 (1)进入表单 (2)多表单切换 4.表单操作示例 1.什么是iframe表单 实际上就是HTML页面 ...

  9. SpringBoot:springBoot注解大全

    springboot源码下载 https://github.com/spring-projects/spring-boot/releases 一.注解(annotations)列表 @SpringBo ...

  10. MyEclipse中,编写properties文件,输入中文显示乱码

    我在properties文件中输出中文,结果显示的是乱码,额......好吧,其实不是乱码,哪有这么规范的乱码 其实是在输入中文时发生了转码,就是下面这个样子: 字符集不支持中文,修改方法: 选中你工 ...