2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 1/8
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来表达信息,以及建立信息与信息的链接
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 2/8
用统一资源定位技术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服务器的程序规模小,因而通信速度很快,适用于分布式超媒体
信息系统
请求方法有GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE、CONNECT总8种
OPTIONS返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发
送‘*’的请求来测试服务器的功能性
HEAD向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不
必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息
GET向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通
过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求
中,永远不会包含呈现数据
POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求
体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
PUT向指定资源位置上传其最新内容
DELETE请求服务器删除Request-URL所标识的资源
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 3/8
TRACE回显服务器收到的请求,主要用于测试或诊断
CONNECT是HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
常见面试题:get和post之间的区别
2、灵活。http允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记
3、不保持连接【断开式连接,http1.1连接默认都是持久连接】。限制每次连接只处理一个请求,服务
器处理完毕客户端的请求后,在收到客户端应答后会自动断开连接。采用这种方式可以节省传输时间,
节约服务器资源的占用。
4、无状态。http协议是无状态协议。无状态是指协议对于事务处理没有记忆功能。缺少状态意味着如果
后续处理需要前面的信息,则只能重传。这样可能导致每次连接传送的数据量增大。另一方面在服务器
不需要先前信息时应答方式就比较快
http协议的无状态性
无状态是指当浏览器发送请求该服务器的时候,服务器只是简单的响应客户端请求。但是当同一个浏览
器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器。简单的说就是服务器不会记
得你,所以是无状态协议
HTTP/1.0主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其
他资源,就必须再新建一个连接。TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且
开始时发送速率较慢slow start。所以HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越
多,这个问题就愈发突出了。
为了提高用户使用浏览器时的性能,现代浏览器还支持并发的访问方式,浏览一个网页时同时建立多个
连接Connection: keep-alive,以迅速获得一个网页上的多个图标,这样能更快速完成整个网页的传输。
HTTP1.1中提供了这种持续连接的方式,而下一代HTTP协议HTTP-NG更增加了有关会话控制、丰富的内
容协商等方式的支持,来提供更高效率的连接
get和post请求
在http协议中的两种常见的传参方法get/post,例如 <form method="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客户端错误--请求有语法错误或请求无法实现
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 4/8
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。
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 5/8
连接器类组件
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组件也
可包含自定义的错误页,以实现在用户访问发生错误时提供友好的提示信息。
被嵌套类nested组件:这类组件通常包含于容器类组件中以提供具有管理功能的服务,它们不能包含其
它组件,但有些却可以由不同层次的容器各自配置。
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目录结构
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 6/8
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架构软件,可以说是一个框架,也
可以说是一种规范
Oracle之所以放弃Java EE,正体现了Oracle对丧失Java控制权的无奈。企业的本质是逐利,
Oracle每年为制定Java EE规范投入不少人力、财力,但制定的规范最终并没有获得市场的青睐,
所以Oracle最终决定放弃这种吃亏不讨好的事情
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150"
connectionTimeout="20000" redirectPort="8443"/>
1
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 7/8
JavaEE号称有十三种核心技术。它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、
Java IDL、JTS、JTA、JavaMail和JAF
JavaEE应用开发的三层架构
三层架构自上而下将系统分为表示层、逻辑层、持久层。
表示层由处理用户交互的客户端组件及其容器所组成
业务逻辑层由解决业务问题的组件组成
数据层由一个或多个数据库组成,并可包含存储过程。
这种三层架构,在处理客户端的请求时,使客户端不用进行复杂的数据库处理;透明地为客户端执行许
多工作,如查询数据库、执行业务规则和连接现有的应用程序;并且能够帮助开发人员创建适用于企业
的大型分布式应用程序
IDEA开发工具
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,
尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整
合、代码分析、 创新的GUI设计等方面的功能可以说是超常的
IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧
程序员为主。它的旗舰版本还支持HTML、CSS、PHP、MySQL、Python等。免费版只支持Java等少数
语言。
目前最新版本为IntelliJ IDEA 2020.1,添加了对 Java14的支持、为部分Web和测试框架添加新功能,通
过数据流分析辅助升级了调试器,新增了 LightEdit 模式,以及支持从 IDE 直接下载和配置 JDK 等
IntelliJ IDEA分为Ultimate Edition 旗舰版和Community Edition 社区版本,旗舰版可以免费试用30天,
社区版本免费使用,但是功能上对比旗舰版有所缩减。
IDEA中解决中文乱码
在配置文件idea64.exe.vmoptions末尾追加-Dfile.encoding=utf-8
2021/4/6 0-开发基础1
file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 8/8
Windows下安装需求
Microsoft Windows 10/8/7 (incl.64-bit)
4 GB RAM minimum, 8 GB RAM recommended
2 GB hard disk space + at least 1 G for caches
1024×768 minimum screen resolution
JDK 1.6 or higher
Web开发概述
最新推荐文章于 2023-12-15 11:25:54 发布