WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
• 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
• 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
l 静态web资源开发技术
• Html
l 常用动态web资源开发技术:
• JSP/Servlet、ASP、PHP等 ruby python
• 在Java中,动态web资源开发技术统称为Javaweb,我们课程的重点也是教大家如何使用Java技术开发动态的web资源,即动态web页面。
但是我们做java开发,不是做网页。
网络上的资源分为两种
早期:静态页面 html实现。 观看
现在:动态页面 java jaxa jsp 交互.
jsp—>java去做网页所使用的技术。jsp本质上就是servlet
使用jsp开发成本高。
BS====>浏览器+服务器 只要有浏览器就可以
CS----->客户端+服务器. 必须的在客户端安装程序.
现在基本上开发的都是BS程序
BS怎样通信:
必须有请求有响应。
有一次请求就应该具有一次响应,它们是成对出现的。
必会术语
分布式应用(distributed application )
–由不同的运行于分离的运行环境下的组件构成的应用程序 ,通常是在不同的平台上通过网络互联起来 –建立在网络之上的软件系统
典型的分布式应用
–双端式(客户机-服务器 Client/Server)
–三端式(客户机-中间件-服务器 Client/Middleware/Server) –多端式(客户机-多组件-多服务器 Client/Multiple Middleware/Multiple server)
集中式应用与分布式应用
集中式应用 :多个Teminals对一个Mainframe
分布式应用:指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。可以处理并发。
C/S模式 – 即 客户机/服务器 结构 – 早期的软件系统多以此作为首选设计标准。服务器通常采 用高性能的PC、工作站或小型机,并采用大型数据库系统 – 客户端安装专门的软件
常见的C/S模式:
–数据库服务器 –网络游戏客户端/服务器端
–QQ客户端/QQ服务器端
两层结构
–通常所说的C/S结构
三层结构
B/S模式
– 主要应用于广域网
– 软件业务逻辑大部分在服务器端实现,不必开发客户端, 应用广泛,易于管理维护 – 用户界面完全通过浏览器实现,一部分事务逻辑在前端实 现,但是主要事务逻辑在服务器端实
Http协议
http请求
请求行:POST /index.jsp HTTP/1.1
GET /get.html?name=xiaoming&passWord=123456 HTTP/1.1 (请求方式 资源路径 协议/版本)
请求头:
Host: beacon.tingyun.com User-Agent: Mozilla/5.0
(Macintosh; Intel Mac OS X 10.11; rv:60.0) Gecko/20100101
Firefox/60.0 Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language:
zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br Referer: https://blog.csdn.net
Cookie: Hm_lvt_93 Connection: keep-alive Content-Length: 0
请求体:
name=liming&passWord=123456 (GET请求没有请求体)
http响应
响应行:
HTTP/1.1 200 OK (协议/版本 状态码 状态码描述)
200 请求成功
302 请求重定向
400请求错误语法错误
403权限不够
404 资源不存在
500 服务器内部错误
响应头:
200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jul 2016 16:06:00 GMT
Etag: “c561c68d0ba92bbeb8b0f612a9199f722e3a621a”
Keep-Alive: timeout=5, max=997
Last-Modified: Mon, 18 Jul 2016 02:36:04 GMT
Server: Apache
Set-Cookie: mykey=myvalue; expires=Mon, 17-Jul-2017 16:06:00 GMT; Max-Age=31449600; Path=/; secure
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding
X-Backend-Server: developer2.webapp.scl3.mozilla.com
X-Cache-Info: not cacheable; meta data too large
X-kuma-revision: 1085259
x-frame-options: DENY
响应体:
服务器向浏览器返回的html正文
Servlet
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
HttpServletRequest
客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。
HttpServletResponse
在Servlet的API中,定义了个HttpServletResponse接口,它继承自ServletResponse接口,专门用于封装HTTP的响应,由于HTTP响应包含着响应行、响应头和响应体三部分,因此在HttpServletResponse中分别定义了发送响应行、响应头和响应体的相关方法。
Servlet生命周期
首先加载servlet的class,实例化servlet,然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法,最后是容器关闭时候调用destroy 销毁方法。
Servlet什么时候被创建?
默认情况下,第一次被访问时,Servlet被创建,然后执行init方法;
提供服务:执行service方法,执行多次
被销毁:当Servlet服务器正常关闭时,执行destroy方法,只执行一次