TCP/IP四层模型
- 应用层(SMTP、FTP、DNS、SNMP、NFS、HTTP、TELNET)
- 传输层(TCP、UDP)
- 网际层
- 网络接口层
HTTP协议
超文本传输协议(文本、音频、视频),是一种分布式、合作式,多媒体信息系统服务,面向应用层的协议。
- 遵循请求/响应模型(三次握手)
- 无连接(每次只处理一个请求,结束断掉链接)
- 无状态(对事务没有记忆能力,处理前面处理过的,需要重传)
HTTP协议请求
请求行、消息报头(消息行)、请求正文
常用方法:GET、POST
HTTP响应
状态行、消息报头、响应正文
静态Web与动态Web区别
静态Web是无法继续进行数据库操作
动态Web是可以进行数据库操作。动态Web最大的特点是具有交互性(服务器会自动根据用户请求
响应不同的结果)。
Web容器
Web容器负责管理和运行Servlet
CGI缺陷:每次请求都会打开一个进程。严重消耗了系统资源,不支持高并发。
动态网页技术
- GUI(COmmon Gateway interface:公共网关接口)技术:最早的动态网页技术。跨平台。
- PHP(Hpertext Preprocessor:超文本预处理):跨平台的服务器端的嵌入式脚本语言。大量借用C、Java、Perl语言。优点:能快速的写出网页。缺点:只能在Apache平台上,使用MySql数据库技术。只适合个人或小型项目。
- ASP(Active Server Pages:动态服务页):ASP是一个动态Web服务器的开发环境。ASP采用的脚本语言VBscript作为开发语言。出现较早。ASP只能运行在IIS服务器上,且只能在SQLServler数据库上发挥最大性能。
- ASP.NET:ASP后续推出的。基于.NET架构平台。
- JSP/Servelt(Java Server Page:Java服务页):在HTML代码中嵌入Java代码。JSP不受平台限制,可支持多重服务器。如:Tomcat、WebLogic、JBoss、WebSphere等。适合中大型项目开发。
Servlet
- 运行在Web服务器或应用服务器上的Java程序
- 在Web上创建动态内容的(有效而强大的)解决方案
- 由容器来管理生命周期【加载(创建)程序、初始化、服务、终止(销毁)、卸载】与服务器交互
- 由Sun规范功能
Servlet生命周期
- 加载:通过web.xml配置指定Servlet的位置(包和类名),成功后web容器通过反射Servlet实例化。
- 初始化:调用init()方法初始化这个实例化的对象。在处理请求前完成一些初始化工作(建立数据库链接,读取源文件信息等)。初始失败,直接卸载Servlet。
- 服务:调用service()方法,处理请求。ServletRequest处理请求,ServletResponse设置响应信息。
- 销毁:Servlet从容器中被删除时,web容器自动调用destroy()方法。
- 卸载:Servlet调用完destroy()方法后,此实例被垃圾回收器回收,需再次使用此实例,会重新调用init()初始化。
正常情况下只会初始化、销毁一次;特殊情况(如:Servlet长时间不使用)下才会多次调用。
Servlet基本配置
- 完全匹配:
<url-pattern>/servlet/MyServlet.do</url-pattern>`
- 目录匹配:
<url-pattern>/servlet/*</url-pattern>
- 扩展名匹配:
<url-pattern>*.do</url-pattern>
容器查找:完全匹配 > 目录匹配(从最长目录匹配开始) > 扩展名匹配