Web开发概述

Web开发概述

  • WEB在英语中web即表示蜘蛛网的意思,它用于表示Internet主机上(服务器)供外界访问的资源
  • Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处是用户很容易访问应用程序。用户只需要有浏览器即可,不需要再安装其他软件。
  • 应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助服务器运行,需要IE等浏览器来查看运行结果。
B/S架构

浏览器/服务器架构Browser/Server简称B/S能够很好地应用在广域网上,成为越来越多的企业的选择。浏览器/服务器架构相对于其他几种应用程序体系结构的优点:

  • 这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据
  • 在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载
  • 在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,如Windows或直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是计算机的标准设备。
web应用资源

Internet上供外界访问的Web资源分为:

  • 静态web资源(如html、css、js页面):指web页面中供人们浏览的数据始终是不变
  • 动态web资源(如JSP、PHP、ASP):指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同
    * 常用静态web资源开发技术:html、css、js技术
    * 常用动态web资源开发技术: JSP/Servlet(JAVA)、ASP(微软.net)、PHP等

javaweb就是使用java技术开发web页面,供浏览器访问的项目。

  • Web是一种分布式应用架构,旨在共享分布在网络上的各个Web服务器中的所有相互链接信息
  • Web采用客户/服务器通信模式,客户与服务器之间用HTTP协议通信
  • Web使用超级文本技术(HTML)来链接网络上的信息。信息存放在服务器端,客户机通过浏览器(如IE、Chrome)就可以查找网络中的各个Web服务器上的信息。

与Web相关的一个概念是WWW(World Wide Web)。WWW是指全球范围内的Web,它以Internet为网络平台,Internet是来自世界各地的众多相互连接的计算机和其他设备的集合,而WWW则是Internet上的一种分布式应用结构。
归纳起来,Web具有3个特征:

  • 用超级文本技术HTML来表达信息,以及建立信息与信息的链接
  • 用统一资源定位技术URL来实现网络上信息的精确定位
  • 用网络应用层协议HTTP来规范浏览器与Web服务器之间的通信过程。
HTTP协议
  • HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,传输HTML文件
  • 用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。
  • 核心特征:无状态性、断开式连接
web应用详解

客户端根据用户输入的地址信息请求服务器,服务器在接收到用户的请求后进行处理,然后将处理结果响应给客户端,客户端将响应结果渲染显示给用户—请求响应模型

  • 请求:客户端根据用户地址信息将数据发送给服务器的过程
  • 响应:服务器将请求的处理结果发送给浏览器的过程
  • 协议:是指通信的双方,在通信流程或内容格式上,共同遵守的标准
web应用问题

客户端也就是浏览器有很多的,服务器的版本也是有很多的。如何实现不同版本的浏览器和不同版本的服务器之间的数据交互呢?

  • 解决:规范浏览器和服务器数据交互的格式
  • 实现:HTTP协议
简介HTTP协议

超文本传输协议Hyper Text Transfer Protocol是互联网上应用最为广泛的一种网络协议,是互联网的基础协议,也是网页开发的必备知识。Http协议是TCP/IP协议簇中应用层协议,实际上就是在TCP数据传输的基础上添加了数据传输的格式规定。

是一个基于请求与响应模式的、无状态的的协议,基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。

作用:规范了浏览器和服务器的数据交互
特点:
1、简单快速,由于协议简单,使用http服务器的程序规模小,因而通信速度很快,适用于分布式超媒体信息系统。
在这里插入图片描述
在这里插入图片描述
2、灵活。http允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记

3、不保持连接【断开式连接,http1.1连接默认都是持久连接】。限制每次连接只处理一个请求,服务器处理完毕客户端的请求后,在收到客户端应答后会自动断开连接。采用这种方式可以节省传输时间,节约服务器资源的占用。

4、无状态。http协议是无状态协议。无状态是指协议对于事务处理没有记忆功能。缺少状态意味着如果后续处理需要前面的信息,则只能重传。这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时应答方式就比较快

get和post请求

在http协议中的两种常见的传参方法get/post,例如

get和post的共同点:get提交和post提交都是将数据发送到服务器端,只是他们的提交的方式不一样

  • 1、语义不同。其中GET一般用于获取/查询资源信息,而POST一般用于更新资源信息[RESTful]
  • 2、实际上传输数据时method和data没有任何关系,但是get特定浏览器和服务器对URL长度有限制,一般采用的是数据包头的方式传输数据,只能传输ASCII编码字符,一般上限为2K;post采用数据包体的方式传输数据,可以传输二进制数据内容,理论上说没有上限,一般编程上限是64K。
  • 3、安全性问题,get传递数据会被缓存,能够存储在浏览器的历史记录中,所以安全性差,传递敏感数据一般采用post
  • 4、从请求反应速度get比post效率高,get要求服务器立即处理请求,而 post请求可能形成一个队列请求。
HTTP协议之响应

在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。最重要的是响应状态码。

状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

  • 1xx指示信息–表示请求已接收,继续处理
  • 2xx成功–表示请求已被成功接收、理解、接受
  • 3xx重定向–要完成请求必须进行更进一步的操作
  • 4xx客户端错误–请求有语法错误或请求无法实现
  • 5xx服务器端错误–服务器未能实现合法的请求

常见状态代码:

  • 200 OK客户端请求成功
  • 304 NOT MODIFIED该资源在上次请求之后没有任何修改,这通常用于浏览器的缓存机制
  • 400 Bad Request客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized请求未经授权
  • 403 Forbidden服务器收到请求,但是拒绝提供服务
  • 404 Not Found请求资源不存在,如输入了错误的URL
  • 500 Internal Server Error服务器发生不可预期的错误。
http和https协议

HTTP由于是明文传输,所谓的明文,就是说客户端与服务端通信的信息都是肉眼可见的,随意使用一个抓包工具都可以截获通信的内容。所以安全上存在以下三个风险

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没
  • 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎
  • 冒充风险,比如冒充淘宝网站,用户钱容易没。

HTTPS在HTTP与TCP层之间加入了TLS协议来解决上述的风险,安全传输层协议TLS及其前身安全套接层SSL用于在两个通信应用程序之间提供保密性和数据完整性。

TLS协议功能:1、信息加密:HTTP交互信息是被加密的,第三方就无法被窃取;2、校验机制:校验信息传输过程中是否有被第三方篡改过,如果被篡改过,则会有警告提示;3、身份证书:证明淘宝是真的淘宝网;

可见有TLS协议能保证HTTP通信是安全的了,那么在进行HTTP通信前,需要先进行TLS握手。HTTPS是应用层协议,需要先完成TCP连接建立,然后走TLS握手过程后才能建立通信安全的连接。

理解Tomcat和浏览器

Tomcat服务器是一个免费的开源的Web应用服务器,属于轻量级应用服务器,实际上仅仅是一个jsp/servlet容器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选,因为Tomcat运行时占用的系统资源小、扩展性好、性能稳定,已经成为目前比较流行的Web应用服务器,支持负载平衡与邮件服务等应用系统常用功能

Tomcat的架构

Tomcat支持Servlet和JSP的规范,它由一组嵌套的层次和组件组成,一般可分为以下四类:

  • 顶级组件:位于配置层次的顶级,并且彼此间有着严格的对应关系
  • 连接器:连接客户端(可以是浏览器或Web服务器)请求至Servlet容器
  • 容器:包含一组其它组件
  • 被嵌套的组件:位于一个容器当中,但不能包含其它组件;

常见组件

1、服务器server:Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例;因此,一台物理服务器上可以在启动多个JVM的情况下在每一个JVM中启动一个Tomcat实例,每个实例分属于一个独立的管理端口。这是一个顶级组件。

2、服务service:一个服务组件通常包含一个引擎和与此引擎相关联的一个或多个连接器。给服务命名可以方便管理员在日志文件中识别不同服务产生的日志。一个server可以包含多个service组件,但通常情下只为一个service指派一个server。

连接器类组件

3、连接器connectors:负责连接客户端(可以是浏览器或Web服务器)请求至Servlet容器内的Web应用程序,通常指的是接收客户发来请求的位置及服务器端分配的端口。默认端口通常是HTTP协议的8080,管理员也可以根据自己的需要改变此端口。一个引擎可以配置多个连接器,但这些连接器必须使用不同的端口。默认的连接器是基于HTTP/1.1的Coyote。同时,Tomcat也支持AJP、JServ和JK2连接器。

容器类组件

4、引擎Engine:引擎通是指处理请求的Servlet引擎组件,即Catalina Servlet引擎,它检查每一个请求的HTTP首部信息以辨别此请求应该发往哪个host或context,并将请求处理后的结果返回的相应的客户端。严格意义上来说,容器不必非得通过引擎来实现,它也可以是只是一个容器。如果Tomcat被配置成为独立服务器,默认引擎就是已经定义好的引擎。而如果Tomcat被配置为Apache Web服务器的提供Servlet功能的后端,默认引擎将被忽略,因为Web服务器自身就能确定将用户请求发往何处。一个引擎可以包含多个host组件。

5、主机Host:主机组件类似于Apache中的虚拟主机,但在Tomcat中只支持基于FQDN的“虚拟主机”。一个引擎至少要包含一个主机组件。

6、上下文Context:Context组件是最内层次的组件,它表示Web应用程序本身。配置一个Context最主要的是指定Web应用程序的根目录,以便Servlet容器能够将用户请求发往正确的位置。Context组件也可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。

7、阀Valve:用来拦截请求并在将其转至目标之前进行某种处理操作,类似于Servlet规范中定义的过滤器。Valve可以定义在任何容器类的组件中。Valve常被用来记录客户端请求、客户端IP地址和服务器等信息,这种处理技术通常被称作请求转储(request dumping)。请求转储valve记录请求客户端请求数据包中的HTTP首部信息和cookie信息文件中,响应转储valve则记录响应数据包首部信息和cookie信息至文件中。

8、日志记录器Logger:用于记录组件内部的状态信息,可被用于除Context之外的任何容器中。日志记录的功能可被继承,因此,一个引擎级别的Logger将会记录引擎内部所有组件相关的信息,除非某内部组件定义了自己的Logger组件。

9、领域Realm:用于用户的认证和授权;在配置一个应用程序时,管理员可以为每个资源或资源组定义角色及权限,而这些访问控制功能的生效需要通过Realm来实现。Realm的认证可以基于文本文件、数据库表、LDAP服务等来实现。Realm的效用会遍及整个引擎或顶级容器,因此,一个容器内的所有应用程序将共享用户资源。同时,Realm可以被其所在组件的子组件继承,也可以被子组件中定义的Realm所覆盖。

在这里插入图片描述
tomcat目录结构

  • bin:tomcat启动、关闭之类的脚本文件
  • conf:tomcat各种配置文件。其核心配置文件有:1、server.xml 配置与server相关信息。2、web.xml是web应用(一个web应用相当于一个站点)的父配置文件。3、tomcat-users.xml 配置tomcat相关信息(管理tomcat服务器的用户名、密码和权限等)
  • lib:tomcat启动所依赖的jar包
  • logs:tomcat的系统日志
  • temp:tomcat运行时产生的临时文件
  • webapps:web应用所在的目录,即提供外界访问的web资源存放目录。
  • work:tomcat工作目录,主要用于存放jsp被访问后生成对应的servlet文件以及class文件

Tomcat重要配置

  • maxThreads支持的最大并发连接数
  • port监听的端口号
  • protocol连接器使用的协议
  • redirectPort如果连接器支持的协议是http,当接收客户端发来的https请求时则转发到此属性定义的端口
  • connectionTimeout等待客户端发送请求的超时时间,单位为毫秒

Tomcat版本号

Tomcat是Apache 软件基金会Apache Software Foundation的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,所以最新的Servlet和JSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器
在这里插入图片描述
JavaEE8
JavaEE即Java平台企业版,之前为Java 2 Platform, Enterprise Edition,2018年3月更名为Jakarta EE。狭义的JavaEE是Sun公司为企业级应用推出的标准平台,用来开发B/S架构软件,可以说是一个框架,也可以说是一种规范
在这里插入图片描述
在这里插入图片描述
JavaEE应用开发的三层架构

三层架构自上而下将系统分为表示层、逻辑层、持久层

  • 表示层由处理用户交互的客户端组件及其容器所组成
  • 业务逻辑层由解决业务问题的组件组成
  • 数据层由一个或多个数据库组成,并可包含存储过程。

这种三层架构,在处理客户端的请求时,使客户端不用进行复杂的数据库处理;透明地为客户端执行许多工作,如查询数据库、执行业务规则和连接现有的应用程序;并且能够帮助开发人员创建适用于企业的大型分布式应用程序

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值