JavaWeb+Web服务器简介

一、Java Web

1.1 简介

Web,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。

Java Web指的是使用Java技术开发的Web应用程序。Java在Web开发中有着广泛的应用,主要得益于其跨平台性、安全性和丰富的开发工具与框架支持。
在这里插入图片描述

1.2 发展

  1. Servlet和JSP时代(1990s - 2000s)

    • Servlet和JSP是Java Web开发的基础。Servlet作为服务器端的Java程序,用于处理HTTP请求和生成动态内容。JSP(JavaServer Pages)则允许在HTML页面中嵌入Java代码,便于生成动态内容。
  2. Java EE(J2EE)时代(2000s - 2010s)

    • Sun Microsystems推出了Java 2 Platform, Enterprise Edition(J2EE),后来改名为Java EE。Java EE提供了一整套技术规范和API,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等,使得开发者能够构建复杂的企业级应用。
  3. 框架和工具的兴起(2000s至今)

    • 随着Java Web应用程序的复杂性增加,开发者开始采用各种框架和工具来简化开发过程和提高效率。其中,Spring Framework是最具影响力的一个,提供了全面的基础设施支持和模块化的解决方案,如Spring MVC、Spring Boot等。
  4. RESTful Web服务和微服务(2010s至今)

    • 随着移动设备和前后端分离架构的流行,RESTful Web服务成为开发API的首选标准。Java提供了JAX-RS规范来支持RESTful服务的开发。此外,微服务架构的兴起也推动了Java在分布式系统和云原生应用中的应用。
  5. 现代化和云原生(近年来)

    • 近年来,随着云计算和容器化技术的普及,Java Web开发也朝着云原生方向发展。Spring Boot作为一个轻量级的微服务框架大受欢迎,其集成了各种现代化的技术栈,如Spring Cloud、Netflix OSS等,方便开发者构建和部署云原生应用。

1.3 特点

  1. 跨平台性

    • Java的“编写一次,到处运行”的理念使得Java Web应用程序可以在各种操作系统上运行,只要有对应的Java虚拟机(JVM)支持即可。
  2. 安全性

    • Java提供了强大的安全性特性,包括沙箱安全模型、内置的安全管理器和SSL支持,使得Java Web应用程序能够处理敏感数据和进行安全的通信。
  3. 多线程和并发支持

    • Java语言天生支持多线程和并发编程,这对处理同时到达的请求以及优化性能非常重要。
  4. 丰富的工具和框架支持

    • Java生态系统中有许多成熟的开发工具和框架,如Spring、Hibernate、Struts等,它们提供了各种功能和模块,帮助开发者更高效地构建和管理Web应用程序。
  5. 支持大型和复杂系统

    • Java适合开发大规模和复杂的Web应用程序,其面向对象的特性和模块化设计使得系统易于扩展和维护。

1.4 工作流程

当我们在浏览器地址栏输入“http://baidu.com/”并按下回车键时,我们就能看到百度为我们提供的页面。工作流程如下:

  • Web浏览器发送HTTP请求到web服务器(tomcat)。
  • 服务器(tomcat)调用servlet对请求信息进行处理(例如参数解析、请求转发)。
  • servlet再将逻辑处理结果交给jsp,动态输出HTML内容。
  • 动态生成的HTML内容返回到浏览器显示。

在这里插入图片描述

1.5 关于Web

1.5.1 简介

WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。

在这里插入图片描述

1.5.2 发展

Web技术自20世纪90年代初诞生以来,经历了快速的发展和变革。以下是Web技术的发展历程简介:

  1. Web 1.0(1990s - 2000s初)

    • 静态网页:最初的网页主要是静态的,由HTML(超文本标记语言)编写,用于展示文本、图片和链接。
    • 浏览器竞争:Netscape Navigator和Internet Explorer是当时的主要浏览器。
    • 搜索引擎:Google、Yahoo等搜索引擎的出现,使得用户能够更容易地找到信息。
  2. Web 2.0(2000s中期 - 2010s初)

    • 动态内容:引入了动态网页技术,如ASP、PHP、Ruby on Rails等,允许服务器端生成动态内容。
    • AJAX:异步JavaScript和XML技术使得网页可以在不重新加载整个页面的情况下更新部分内容。
    • 用户生成内容:社交媒体、博客、维基等平台的兴起,用户可以创建和分享内容。
    • Web服务:RESTful API和SOAP等技术使得不同的Web应用程序能够相互通信。
  3. 移动互联网(2010s)

    • 智能手机和平板电脑的普及,推动了移动优先的Web设计。
    • 响应式设计:网页设计需要适应不同屏幕尺寸和设备。
    • 移动应用:原生应用和Web应用之间的界限变得模糊。
  4. Web 3.0(2010s末 - 2020s)

    • 语义Web:使用RDF、OWL等技术,使Web内容更加易于机器理解和处理。
    • 人工智能和机器学习:在搜索引擎、推荐系统、自然语言处理等领域的应用。
    • 区块链和去中心化:区块链技术为Web带来了去中心化的可能性,如以太坊等。
  5. 现代Web技术(2020s至今)

    • 前端框架:React、Vue.js、Angular等前端框架和库的流行,提高了Web应用的开发效率和用户体验。
    • 单页应用(SPA):使用JavaScript和Ajax技术,用户在不刷新页面的情况下与Web应用交互。
    • PWA(Progressive Web Apps):像原生应用一样工作,提供离线功能和更好的用户体验。
    • 云计算和微服务:云服务提供了弹性的计算资源,微服务架构使得Web应用更加模块化和可扩展。
    • WebAssembly:允许在Web浏览器中以接近原生性能运行编译后的代码。
  6. 未来趋势

    • 5G和边缘计算:提高数据传输速度和降低延迟,为实时Web应用提供支持。
    • 增强现实(AR)和虚拟现实(VR):在Web上提供更加沉浸式的体验。
    • 物联网(IoT):将更多的设备连接到互联网,实现设备间的通信和数据交换。
    • 隐私和安全:随着数据泄露和隐私问题日益严重,Web技术需要更加注重安全性和隐私保护。

Web技术的发展历程是一个不断演进和创新的过程,随着新技术的出现和旧技术的淘汰,Web将继续改变我们获取信息、交流和工作的方式。

1.5.3 分类

  1. 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。

  2. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

    静态web资源开发技术:Html
    常用动态web资源开发技术:JSP/Servlet、ASP、PHP等
    在Java中,动态web资源开发技术统称为Javaweb。

静态WEB

*htm、*html,这些是网页的后缀,如果现在在一个服务器上直接读取这些内容,那么意味着是把这些网页的内容通过网络服务器展现给用户。整个静态WEB操作的过程图如下:

在这里插入图片描述

在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给WEB服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过WEB服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。

静态WEB中存在以下几个缺点:

1、Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。

为了可以让静态的WEB的显示更加好看,可以加入了JavaScript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。

实现静态WEB客户端动态效果的手段:

  • JavaScript
  • VBScript

在实际的开发中JavaScript使用得最多。

2、静态WEB无法连接数据库,无法实现和用户的交互

使用数据库保存数据是现在大多数系统的选择,因为数据库中可以方便地管理数据,增删改查操作可以使用标准的SQL语句完成。

动态WEB

所谓的动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。整个动态WEB操作的过程图如下:

在这里插入图片描述

动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(*.htm或者是*.htm)还是动态资源。

如果WEB Server Plugin发现客户端请求的是静态资源(*.htm或者是*.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

如果WEB Server Plugin发现客户端请求的是动态资源(*.jsp、*.asp/*.aspx、*.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

动态WEB应用的实现手段

动态WEB现在的实现手段非常多,较为常见的有以下几种:

  • Microsoft ASP、http://ASP.NET
  • PHP
  • JAVA Servlet/JSP

1、Microsoft ASP、http://ASP.NET

微软公司动态WEB开发是比较早的,而且最早在国内最流行的是ASP。ASP就是在HTML语言之中增加了VB脚本,但是标准的开发应用应该是使用ASP+COM,但是实际情况来看,在开发ASP的时候基本上都在一个页面中写上成百上千的代码,页面代码极其混乱。

ASP本身有开发平台的限制:Windows+IIS+SQL Server/Access,ASP只能运行在Windows操作系统上,ASP现在基本上已经淘汰,现在基本上都是使用http://ASP.NET进行开发,http://ASP.NET在性能有了很大的改善,而且开发迅速,但是依然受限于平台。http://ASP.NET中主要是使用C#语言。

2.PHP

PHP开发速度很快,功能强大,跨平台(平台指的就是运行的操作系统),而且代码也简单。

3.Servlet/JSP

这是SUN公司(SUN现在已经被Oracle公司收购)主推的B/S架构的实现语言,是基于JAVA语言发展起来的,因为JAVA语言足够简单,而且很干净。

Servlet/JSP技术的性能也是非常高的,不受平台的限制,各个平台基本上都可以使用。而且在运行中是使用多线程的处理方式,所以性能非常高。

SUN公司最早推出的WEB技术推出的是Servlet程序,Servlet程序本身使用的时候有一些问题,所有的程序是采用JAVA代码+HTML的方式编写的,即,要使用JAVA输出语句,一行一行地输出所有的HTML代码,之后,SUN公司受到了ASP的启发,发展出了JSP(Java Server Page),JSP某些代码的编写效果与ASP是非常相似的。这样可以很方便地使一些ASP程序员转向JSP的学习,加大市场的竞争力度。

二、Web服务器

2.1 简介

Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序

当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。

在这里插入图片描述

服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。

比如,我当前在杭州,你能否用自己的电脑访问我桌面上的一张图片?恐怕不行。我们太习惯通过URL访问一个网站、下载一部电影了。一个资源,如果没有URL映射,那么外界几乎很难访问。而Web服务器的作用说穿了就是:将某个主机上的资源映射为一个URL供外界访问。

在这里插入图片描述

2.2 常见Web服务器

1、WebLogic

WebLogic是美国bea公司出品的一个application server。BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。是目前应用最广泛的Web服务器,支持J2EE规范,而且不断的完善以适应新的开发要求,启动界面如图

在这里插入图片描述

2、WebSphere

WebSphere Application Server 是一种功能完善、开放的Web应用程序服务器,是IBM公司电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理 Internet 和 Intranet Web 应用程序。这一整套产品进行了扩展,以适应 Web应用程序服务器的需要,范围从简单到高级直到企业级。启动界面如图:

在这里插入图片描述

3、Tomcat

TomcatTomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:

在这里插入图片描述

4、IIS

Microsoft的Web服务器产品为Internet Information Services (IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在ⅡS的平 台上。IIS提供了一个图形界面的管理工具,称为Internet信息服务管理器,可用于监视配置和控制Internet服务。

在这里插入图片描述

IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。

在这里插入图片描述

学习web开发,需要先安装一台Web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。

学习Web开发,为什么必须要先装一个Web服务器?

在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。这说明什么问题?

1、不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。

2、WEB服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,We应用的开发者只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542213.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

鼻咽癌中三级淋巴结构的单细胞与空间转录组分析|文献精析·24-09-22

小罗碎碎念 研究团队通过单细胞和空间转录组分析,揭示了与鼻咽癌进展和免疫治疗反应相关的三级淋巴结构。 作者角色作者姓名单位(中文)第一作者Yang Liu/通讯作者Jin-Xin Bei国家癌症中心南方肿瘤学重点实验室,鼻咽癌诊断治疗广东…

TryHackMe 第3天 | Pre Security (二)

该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识,本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…

『功能项目』QFrameWork更新道具图片UGUI【71】

我们打开上一篇70QFrameWork物品交换UGUI的项目, 在资源商店免费下载图片 创建Image重命名为Icon并且隐藏Name 给Icon一张随意道具图片Icon 重新绑定对象 接下来创建IItem.cs接口 与 ItemConfig.cs道具配置类 创建Config文件夹 创建脚本:ItemConfig.cs 编…

【416】【举报垃圾信息】

这题倒挺简单的 注意一下映射关系,再使用字典即可。 class Solution:def reportSpam(self, message: List[str], bannedWords: List[str]) -> bool:nlen(message)if n1:return Falsedictdefaultdict(int)num0for a in message:dict[a]1for b in bannedWords:if…

构建高效心理辅导平台:Spring Boot实践

1绪 论 1.1研究背景 随着计算机和网络技术的不断发展,计算机网络已经逐渐深入人们的生活,网络已经能够覆盖我们生活的每一个角落,给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代,计算机网络的发展…

安装黑群晖,并使用NAS公网助手实现DDNS动态域名解析

很多人都会安装安装一个黑群晖进行练手,黑群晖有很多玩法和NAS套件,而且黑群晖安装比较简单,没有复杂的步骤,这也是很多人玩黑裙的理由,这里教大家如何安装黑群晖,并且安装神卓互联NAS公网助手实现DDNS动态…

【STM32】 TCP/IP通信协议(1)

一、前言 TCP/IP是干啥的?它跟SPI、IIC、CAN有什么区别?它如何实现stm32的通讯?如何去配置?为了搞懂这些问题,查询资料可解决如下疑问: 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …

VisionPro - 基础 - 模板匹配技术和在VP中的使用 - PMAlign - PatMax (5)- 非线性模板变形匹配

前言: 本机继续对VP的PatMax 算子进行说明:本节讲非线性变形的模板匹配。 Non-Linear Pattern Deformation By default, PatMax requires that each boundary point in the instance of a pattern found in a run-time image closely correspond to a b…

Java 使用递归方法遍历B站下载文件并解析重命名

目录 背景 操作方法 声明 背景 出于学习和日常使用方便的目的,且考虑到有的资源过一段时间会失效,所以有时会下载B站的音频,视频,进行存放保留,下面介绍下载和下载之后解析文件的方法,仅供学习…

C++20中头文件compare的使用

<compare>是C20中新增加的头文件&#xff0c;此头文件是language support库的一部分。它包括&#xff1a;concepts、classes、customization point objects、functions。 1.concepts&#xff1a;三向比较运算符<>&#xff0c;目的是简化比对对象的过程&#xff0c;…

【编程实践】利用高德地图开放平台制作简易地图规定半径范围

需求分析 [little demo] 使用高德地图API创建一个显示特定半径范围的简易地图。 注册高德开放平台账号&#xff0c;获取API Key。&#xff08;精度要求不高可不需要&#xff09; 创建HTML页面&#xff0c;引入高德地图API。 设置地图中心点和初始缩放级别。 编写代码绘制指定半…

本地电脑基于nginx的https单向认证和双向认证(自制证书+nginx配置)保姆级

目录 1、背景 2、运行环境 3、工具下载 3.1、OpenSSL下载 3.2、nginx下载 4、制作https证书&#xff1a; 4.1、CA与自签名&#xff1a; 4.2、制作CA根证书&#xff08;公钥&#xff09; 4.3、制作服务端证书&#xff1a; 4.4、制作客户端证书&#xff1a; 4.5、制作…

初识ZYNQ——FPGA学习笔记15

一、ZYNQ简介 ZYNQ&#xff1a;Zynq-7000 All Programmable SoC&#xff08;APSoC&#xff09;&#xff0c;赛灵思公司&#xff08;AMD Xilinx&#xff09;推出的新一代全可编程片上系统 PS&#xff1a;Processing System&#xff0c;处理系统 PL&#xff1a;Program Logic&…

828华为云征文 | 构建高效搜索解决方案,Elasticsearch Kibana的完美结合

前言 构建高效搜索解决方案&#xff0c;FlexusX服务器与Elasticsearch & Kibana的完美结合&#xff0c;为企业带来云端搜索新体验。FlexusX实例以其卓越性能与灵活扩展性&#xff0c;确保高并发搜索的流畅运行。部署Elasticsearch&#xff0c;享受分布式搜索的精准与快速&a…

MySQL:SQL语句执行过程

本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程&#xff0c;包括 SQL 的查询在 MySQL 内部会怎么流转&#xff0c;SQL 语句的更新是怎么完成的。 在分析之前我会先带着你看看 MySQL 的基础架构&#xff0c;知道了 MySQL 由那些组件组成以及这些组件的作用是什么&#xf…

9.22今日错题解析(软考)

前言 这是用来记录我每天备考软考设计师的错题的&#xff0c;大部分错题摘自希赛中的题目&#xff0c;但相关解析是原创&#xff0c;有自己的思考&#xff0c;为了复习&#xff1a;&#xff09;&#xff0c;最后希望各位报考软考的小伙伴都能上岸&#xff01;&#xff01;&…

掌上高考爬虫逆向分析

目标网站 aHR0cHM6Ly93d3cuZ2Fva2FvLmNuL3NjaG9vbC9zZWFyY2g/cmVjb21zY2hwcm9wPSVFNSU4QyVCQiVFOCU4RCVBRg 一、抓包分析 二、逆向分析 搜索定位加密参数 本地生成代码 var CryptoJS require(crypto-js) var crypto require(crypto);f "D23ABC#56"function v(t…

Redis数据结构之set

一.set集合特性 集合类型也是保存多个字符串类型的元素的&#xff0c;但和list列表不一样&#xff0c;集合中的元素是无序的&#xff0c;而且元素不能够重复&#xff0c;不仅支持增删查改&#xff0c;还支持交集并集等操作 二.相关命令 1.sadd sadd key members…… 咱们把…

华为HarmonyOS地图服务 9 - 如何在地图上绘制多边形?

场景介绍 本章节将向您介绍如何在地图上绘制多边形。 接口说明 添加多边形功能主要由MapPolygonOptions、addPolygon和MapPolygon提供&#xff0c;更多接口及使用方法请参见接口文档。 接口名 描述 MapPolygonOptions 用于描述MapPolygon属性。 addPolygon(options: mapC…

SOMEIP_ETS_122: SD_Interface_Version

测试目的&#xff1a; 验证DUT能够以正确的格式响应接口版本获取请求。 描述 本测试用例旨在确保DUT能够正确地返回其接口版本信息&#xff0c;这是SOME/IP协议中用于确定服务兼容性的关键信息。 测试拓扑&#xff1a; 具体步骤&#xff1a; TESTER&#xff1a;触发接口版…