JavaWeb开发
计算机行业的发展中,最早的计算的使用门槛相对较高。因为都是使用指令进行计算机的操作。所以,最终有家公司站出来,愿景是,让普通人也能使用电脑。降低计算机的门槛,让计算机融入们的生活。提出所有的问题都是鼠标的右键解决------微软。开发了,桌面操作系统,windows系列。计算的门槛降低了,大部分人都能使用计算机。但是,没有融入生活。因为操作系统中,与人们生活相关的软件,还存在问题,有些欠缺,软件相对较少。基于这样的情况,出现开发软件。基于桌面系统开发软件,开发桌面程序。office , 扫雷,蜘蛛纸牌,暗黑破坏者,魔兽争霸。都是电脑上的单机版软件。但是,计算机在很大程度上就融入生活。然后,计算机和计算机之间的联系相对而言还是较少。每个计算机中的程序,一般都是独立运行,没有太多的数据交互。例如:office本地办公。但是,随着计算机用户群体增大,互联网的发展,人的诉求,已经不再限于,在一个小型的环境里面进行交流。QQ等等这样基于网络,以及客户端的程序逐渐出现。这种软件的架构模式,将各个地域的电脑中的信息,进行集中处理。这种就是CS架构模式。每个电脑上,安装客户端,客户端收集用户的操作,发送给服务器,服务器统一进行处理。这就是CS架构: C client S server,客户端服务器模式.
然而,随着计算机和互联网的发展,人们对计算机和网络的需求和依赖,逐渐加深。计算机和网络,融入到人们的生活。CS架构的弊端逐渐的体现体现出来。
不足:
-
客户端需要进行安装才能使用。在生活中不是很方便。例如:office,wps.因为wps小,很多时候,可以临时使用。
-
因为客户端需要进行安装,相对而言存在一定的门槛。例如: XX软件.手把手的教我设置XX软件,远程帮忙设置XX软件。
-
客户端程序和服务器程序一般都是成对。版本是对应的。且客户端程序是安装在用户本地。不便于维护。
例如: 如果客户端程序出现了BUG。需要进行升级。如果用户不升级。则可能存在安全漏洞问题。
基于以上不足,也随着互联网的发展。此时,掀起了另外一个架构模式:BS架构。
B : browser 浏览器
S : Server 服务器
浏览器服务器架构。
在浏览器服务器架构中,浏览器充当,客户端。而服务器是在硬件服务器中安装应用服务器。
服务器一般分为2类:
硬件服务器 : CPU 内存 带宽 磁盘 等等 就是一台物理主机及网络。
应用服务器 : 是指为应用程序提供服务的软件。tomcat jboss weblogic 等等。
优点:
-
一般操作系统都自带浏览器,及无需再安装客户端。
-
程序的升级操作,已经与客户端无关。提高了程序的可控性。只需要服务器更新,客户端无需作出改变。控制性能加好。
-
随着,移动互联网的发展。由于,手机的兼容性的问题。常规的移动应用程序,成本相对较高。IOS版本 安卓版本 TV版 手表 平板 等等各种版本。成本相对较大,且维护成本难度也相对较大。所以,基于浏览器的移动终端,也兴起。也属于web.属于BS架构,所以BS架构逐渐的兴起。
CS架构与BS架构的对比
-
CS架构,虽然安装相对麻烦,但是客户端是定制化的,所以数据传输和用户的操作,更加安全和流畅。
-
BS架构,依赖于浏览器,而浏览器只是各个浏览器厂商,用于浏览信息的程序,具有一定行业内的规范。
且依赖于HTTP协议。而HTTP协议是一个开源的,应用层协议。相对而言,数据不够安全,且相对传输效率较低。因为这个HTTP协议,是一个通用的协议。不论被传输的是啥,一些有关或者无关的信息都需要进行传输。
而Javaweb就是BS架构。
1.什么是BS架构?
B Browser 浏览器
S Server 服务器
BS架构,即是利用浏览器,依赖HTTP协议,与服务器进行数据交互的一种软件设计架构。BS架构本身也是一种分布式架构。
BS01.png
2.使用Tomcat发布一个项目
2.1.tomcat的目录结构
tomcat目录介绍.pngbin: tomcat中命令脚本 startup 启动 shutdown 停止
conf:
context.xml : 设置tomcat中默认监视的web应用程序的文件: WEB-INF/web.xml。在web程序中,web.xml是程序的入口
server.xml : tomcat的服务器配置文件
tomcat-users.xml : 配置tomcat的用户信息 登录认证
web.xml:tomcat自身也是一个web程序,Javaweb程序。web.xml也是tomcat这个web程序的配置信息
default的servlet,配置tomcat服务器支持的多媒体文件类型。
lib :tomcat相关的jar包 例如: jsp-api.jar servlet-api.jar el-api.jar jasper.jar 等等
logs: 日志文件
temp : 临时文件
webapps: web应用程序发布的目录 将需要发布的项目 拷贝到webapps目录即可。
work : tomcat实际运行时产生缓存文件
2.2.tomcat发布静态项目
将静态项目的相关文件,拷贝到tomcat的webapps目下,即可。
根据http://127.0.0.1:8080/biaobai/index.html url地址访问到项目。
静态项目的访问.png2.3.静态网站和非静态网站
什么是静态网站:网站的数据是静态,不会与服务器产生数据运算交互。
非静态网站:网站的数据是取决于服务器,是可以进行动态更新。
3.使用eclipse创建web项目
3.1.方式一:默认的web项目
eclipse创建web项目01.png eclipse创建web项目02.png eclipse创建web项目03.png eclipse创建web项目04.png eclipse创建web项目05.png注意:
由于实际运行程序,其实是编译好的文件,在tomcat中运行,所以web项目中,若需要使用第三方的相关jar包,jar文件,要拷贝到WEB-INF/lib这个文件夹中
eclipse创建web项目06.png
3.2.方式二:一般标准的WEB项目目录结构
eclipse创建web项目07.png eclipse创建web项目08.png eclipse创建web项目09.png4.HTTP协议
4.1.什么是协议?
协议,是为了对即将进行的行为,进行约束的规范。
4.2.为什么会产生HTTP协议
随着计算机,互联网的发展,利用网络传输数据,比重逐渐加大。出现了,传输成本高。网络传输,需要遵循TCP协议,最本质最终都是使用字节进行的传输,将数据做成数据包进行。历经网络传输的7层架构。数据打包到最后解包等操作,还要进行TCP3次握手。这样就提高了传输成本。且,所有的数据都最终转化为字节,需要解析。如果数据顺序不同,产生的字节也不相同,解析的方式也作出一定的改变。基于这些原因,在网络传输中,迫切的需要一个大家都遵循的规范,降低网络传输的成本。所以,HTTP协议,是一个应用层协议,它是对TCP传输协议的封装。制定了一套数据传输的规范。
4.3.HTTP协议有哪些?
HTTP 1.0 相对较早的版本,已经不再使用
HTTP 1.1 目前主流的HTTP协议的版本
HTTPS 目前推荐使用的HTTP协议版本,这个版本的协议,要求传输的双方,进行权限认证。
注意: 小程序开发,小程序只支持HTTPS协议。需要HTTPS证书。 tomcat也支持HTTPS协议,只是需要配置证书
4.4.HTTP协议的特征
- HTTP 协议是基于请求/响应模型的协议,请求和响应必须成对,先有请求后有响应。应答式的协议。
-
HTTP 协议默认的端口是 80。例如:http://www.bjsxt.com:80 HTTPS 默认端口: 443
-
简单快速:当客户端向服务器端发送请求时,只是简单的填写请求路径和请求方法即可,然后就可以通过浏览器或其他方式将该请求发送就行了。比较常用的请求方法有两种,分别是:GET、POST。不同的请求方法使得客户端和服务器端联系的方式各不相同。因为HTTP 协议比较简单,所以 HTTP 服务器的程序规模相对比较小,从而使得通信的速度非常快。
-
灵活:Http 协议允许客户端和服务器端传输任意类型的数据对象。这些不同的类型由ContentType 标记。
-
无状态:HTTP 协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,服务器不知道客户端是什么状态。web技术:session cookie的技术解决而这个无状态的问题。就是服务器不会记录客户端信息。HTTP 1.1
-
明文传输,不安全。 没有做任何加密之类的处理。
4.5.HTTP协议的使用
HTTP协议主要分为两块:请求和响应。而请求是由:请求行 , 请求头,请求参数,请求体组成。响应,则由响应头和响应体(响应的内容)组成。
4.5.1.HTTP请求的构成
Http 协议由 Http 请求和 Http 响应组成。
客户端连上服务器后,向服务器发送某个 web 资源的请求,称之为客户端向服务器发送了一个 HTTP
请求。一个完整的 HTTP 请求包括:请求行、请求头、请求体(请求正文)
-
请求行:位于请求消息的第一行,格式:请求方式 资源路径 HTTP 版本号
-
请求头:客户端发送给服务器的一些基本信息,使用键值对 key:value 表示。从第二行开始到
Request Headers 结束 -
请求体:当请求方式是 post 时,请求体中有请求的参数,每一项数据都用 key=value 表示,例
如:username=zhangsan&userpwd=123456.
如果请求方式为 get,那么请求参数不会出现在请求体中,会拼接在 url 地址后面
http://localhost:8080...?username=zhangsan&userpwd=123
4.5.2.HTTP请求参数说明
参数 | 描述 |
---|---|
Referer | 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这 个头。源头。可以用于推广。 |
Cookie | 与会话有关技术,用于存放浏览器缓存的 cookie 信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息。区分:手机 平板 PC |
Connection | 保持连接状态。Keep-Alive连接中,close 已关闭 |
Host | 请求的服务器主机名 |
Content-Length | 请求体的长度 |
Content-Type | 如果是 POST 请求,会有这个头,默认值为 application/x-www formurlencoded. 表示请求体内容使用 url 编码 |
Accept | 浏览器可支持的 MIME 类型,它是文件类型的一种描述格式。 MIME 格式:大类型/小类型[;参数],例如: text/html ,html 文件 text/css,css 文件 text/javascript,js 文件 |
Accept- Encoding | 浏览器通知服务器,它支持的数据压缩格式。如:GZIP 压缩 |
Accept-Language | 浏览器通知服务器它的语言环境 |
4.5.3HTTP响应参数说明
HTTP响应信息,是指服务器,向HTTP请求作出的回应.回应的内容就是响应信息.
HTTP 响应构成
一个完整的 HTTP 响应包括:响应行、响应头、响应体
-
响应行:位于响应消息的第一行,格式:HTTP 版本号 状态码 状态描述信息
例如:HTTP/1.1 200 OK -
响应头:服务器返回给客户端的信息,使用键值对 key:value 表示。从第二行开始到 Response
Headers 结束.响应头服务器可以自定义。 -
响应体:响应体是服务器回写给浏览器的页面正文,浏览器将正文加载到内存,根据Content-Type解析渲染,显示页面内容
常用状态码:
200(正常)表示一切正常,返回的是正常请求结果
302/307(临时重定向)指出被请求的文档已被临时移动到别处,此文档的新的URL 在
Location 相应头中给出(在Location 给出响应需要跳转的地址).
304(未修改)表示请求的资源没有改变,客户机可以直接访问本地缓存的资源,无需到服
务器请求。
404(找不到)服务器上不存在客户机所请求的资源。
500(服务器内部错误)服务器端的程序发生错误。
HTTP响应.pngHTTP 响应头参数说明
常见响应头 | 描述 |
---|---|
Location | 服务器通过这个头,来告诉浏览器跳转到哪里。重定向的地址 |
Content-Type | 响应正文的类型(MIME 类型) 取值如:text/html;charset=UTF-8 |
Content-Disposition | 通知浏览器以下载方式解析正文 取值如:attachment;filename=xx.zip |
Set-Cookie | 与会话相关技术。服务器向浏览器写入 cookie。将Cookie写入到客户端中 |
Content-Encoding | 服务器通过这个头,告诉浏览器,数据的压缩格式 取值如:gzip |
Content-length | 响应正文的长度 |
Refresh | 定时刷新,格式:秒数;url=路径 取值如:3;url=www.bjsxt.com //3 秒刷新页面到 www.bjsxt.com |
网友评论