Java Web开发概述

200 阅读5分钟

这篇文章会以 Java Web 是什么,做了什么,怎样做到的的宏观角度对基于当前版本的 Java Web 开发进行宏观的讲解。

Java Web 是什么

要了解 Java Web,首先要对于 Java Web 的开发到底做了什么有所了解。

简单的说,目前的Web页面开发垂直拆分分为了前端和后端(为了使每部分开发,每一部分的人只负责自己的部分)

image.png

·前端主要是在客户端负责了界面的加载,渲染,展示。

·后端则是在服务器负责对于用户的数据持久储存以及对应业务场景的业务逻辑的实现。

·前端以及后端通过统一规定的 Http 协议接口完成通信以完成用户对于Web网页的使用。

而 Java Web 则是后端众多实现方式的一种(通俗来说,经过 Java Web 的使用过程便是程序员通过电脑完成了代码的逻辑编写过后部署到服务器的以响应所有的客户端数据请求的代码)

Java Web 做了什么

其实在 Java 发展之初其实并没有想到会用到基于网页 Web 的开发。那个时候的Java只是做到可以开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。我们通常使用Java用于大型单体的软件的开发也就是 JavaSE(Java Platform,Standard Edition)。

随着时代的进步 Web 技术发展如火如荼。Java 也引入了这一套 Web 开发的规范,包括就是用 Java 语言做企业开发中的一整套规范,便有了我们现在的 Java EE (Java Platform,Enterprise Edition)。

也就是说 Java Web 的核心就是这一部分 Java EE在 Java SE 基础上使用 Java 语言本身基于 Web 实现的功能。

我们可以在官网看到

Java EE The Java EE platform is built on top of the Java SE platform. The Java EE platform provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications.

多出来的部分是提供了 API 和 Runtime Environment 的支持的。

通俗来说就是做一些开发动态网站,或者对外提供调用服务的网站中的一整套规范,比如类的封装方法,网页的请求的方法处理,语言编码的处理,拦截器的定义,请求返回的信息等。

而下文中会提到的 Tomcat 就是按照使用 Java SE 按照这套规范开发的容器软件中的一个,类似的还有很多像Weblogic、 JBoss、 Resin等。

Java Web 怎么做到的

需要简单了解的知识

多线程编程

在没有接触多线程之前,我们都知道程序跑起来肯定是需要写一个 Main 函数作为入口的。这便是是一个线程 Main,当然这是单线程下的编程。 在 Java Web 的使用场景下,为了非异步非阻塞的处理同时多个任务(比如我们在处理请求的同时需要访问其他资源那么我们是会需要用到多线程同时进行的)这里就有了对于多线程的需求。

Http,Tcp 和 Socket

HTTP 是基于应用层的请求-响应协议。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。服务于应用。(位于应用层)

TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议。负责数据的同步传输。(位于传输层)

Socket 名为套接字作为不同主机间的进程进行双间通信的端点,即作为一个确定两个端口后的唯一有效连接。只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

Http,Tcp 和 Socket 的关系是许多的 Socket 建立的端对端连接组成了 Tcp。Tcp 作为基于传输的协议为 Http 作为应用实现的提供了连接。

Socket --> Tcp --> Http --> Application

image.png

Servlet

定义了 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类。独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。

Tomcat

是一个实现了 Servlet 规范的 Servlet 容器,可以依赖它做 Servlet 的创建与管理。

Java Web的实现

Thread -1-> Socket -2-> Servlet -3-> Tomcat -4-> Tcp -5-> Http -6-> RestAPI -7-> Application

  1. 即 Java Web 使用多线程编程开了一个 Thread 用于处理记录 Socket 的这种连接。 image.png

  2. Servlet 依靠 Socket 建立的连接实现在服务器与客户端之间通信的技术。

image.png

  1. 打包起来的 Tomcat 容器会启动一个线程用线层不断的请求去建立 Socket 连接。

image.png

  1. 在建立完毕建立 Socket 连接之后。Tomcat 监听端口,请求过来后,根据 url 等信息,确定要将请求交给哪个 Servlet 去处理。以响应 Http 协议的请求,并且实现用户自己的逻辑,最终将结果返回到用户的客户端。 image.png

  2. 同一个应用的多个 Tcp 标准的传输通讯实现了 Http 请求之间的调用。即以多个 Tcp 组成的端对端接口实现了应用级别的 Http 协议。

image.png

  1. 应用依赖于使用的 Http 标准的 Restful API 接口完成服务器间的通讯以及前后端的通讯组成一个完整的应用。 image.png

总结

  1. Java Web 作为 Java 开发的一种在 Java SE 的基础上引入 API 和 Runtime Environment 进行拓展成了Java EE。
  2. Java Web 其中由 Thread 建立 Socket 在 Tomcat 等容器的管理下实现 Servlet 接口以完成 Tcp 的传输连接来建立稳定的 Http 连接以服务于应用。
  3. 虽然其中的 Tomcat 容器以及 Servlet 接口和 Socket 等都是基于封装好的 Sdk,但是其中的实现都是基于Java SE,也就是说可以手写实现。