1. B/S 与C/S区别
1.1 C/S
c/s即Client/Server(客户机/服务器)结构。它在技术上很成熟。
特点:
- 维护成本高(因为采用cs结构时,对于不同的客户端要开发不同的程序,而且软件安装调试和升级都需要在所有客户机上进行。)
- 在本地安装,如果需要更新,需要安装更新程 序,
- 还可能会造成更新失败
- 只能够在局域网内访问(管理系统)
- 界面开发不够灵活
- 交互性强
- 具有安全的存取模式
- 网络通信量低
- 响应速度快
- 利于处理大量数据
- 客户端负载大(cs客户端不仅负责和用户的交互,收集用户信息,而且还需要通过网络向服务器发出请求。而bs把事务处理逻辑部分交给了服务器,客户端只是负责显示。)
例如:QQ,WeGame,Word软件都是属于c/s的软件
1.2B/S
B/s即Browser/Server(浏览器/服务器)结构。就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。
- 维护成本相比较略低,维护方便
- 无需在本地安装,如果需要更新,直接更新服务 器端的内容,客户端使用浏览器进行访问
- 可以支持广域网,分布性强
- 依赖于HTML5\CSS3\JS...实现更加灵活的页面设 计和开发
- 开发简单且共享性强
- 安全性差
例如:taobao、京东、百度金融大型应用
2.http协议
超文本传输协议(Hyper Text Transfer Protocol, HTTP)是一个简单的请求-响应协议,它通常运行在TCP 之上。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传输协议。他是应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型。它指定了客户端可能发送给服务器什么样的消息 以及得到什么样的响应。请求和响应消息的头以ASCII形 式给出;而 消息内容则具有一个类似MIME的格式。这 个简单模型是早期Web成功的有功之臣,因为它使开发 和部署非常地直截了当。
2.1 协议
计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。
2.3 OSI模型
. 将计算机网络体系结构的通信协议划分为7层,自上而下分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
2.4 http协议特点
-
支持客户/服务器模式,也支持B/S结构
-
HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
-
HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记
无连接
无连接是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断 开连接。采用这种方式可以节省传输时间。在1.1 版本中,采用长连接形式,但是不代表一直保持 连接,当超过连接时长限制时,就会断开连接。
无状态
HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则 它必须重传,这样可能导致每次连接传送的数据量增大。另一方面好处就是,如果后续的连接不 需要之前提供的信息,响应就会比较快.而为了解决HTTP的无状态特性,出现了Cookie和Session技 术
2.5 HTTP工作原理
- 客户端的请求的过程
- 向服务器发送请求。
- 接收服务器返回的报文并解释成友善的信 息供阅读。
- 客户端大概有:浏览器,应用程序等。
- 如今时代可能使用最多的就是浏览器, 当用户在地址栏输入网址回车时,浏览器会为什 么做如下处理:
a.解析协议和域名。
b.使用HTTP协议并创建请求报文向服务端发 送请求。
c.接收服务器返回的内容并展示给客户。
- 服务端的响应过程
- 服务器端在接收到客户端发送的请求后会 开始处理请求。
- 服务器处理过程:服务器软件一直在监听 端口是否有新的请求达到,如iis或者tomcat 在建立web站点后,默认会一直监听80端口 等待HTTP请求到达服务器。
a.建立连接:如果客户端已经打开道服务器的 持久连接,则可以直接使用,否则客户端需要 在服务器打开一条新的连接。
b.接收请求报文:连接上有数据到时,web服 务器会从网络连接中读取数据,并将请求报文 中的内容解析出来。
c.处理请求:当请求被接收后,服务器便可以 根据请求报文进行处理了。例如post方法中 提出报文主体的数据并插入到数据库中。
d.访问资源:请求处理完后,比如web会根据 数据生成一系列的HTML页面或图片等信息, 此步骤将访问这些存储在服务器上的物理文 件。
e.构建响应:web服务器在识别资源后,构造 响应报文,响应报文包括:状态码,响应头, 响应主体等内容。 f.发送响应:服务器将响应的数据发送给客户 端机器。
g.记录日志:请求结束,服务器会在日志文件 中记录一条请求日志。
2.6 http的组成(URL)
- 协议部分 该URL的协议部分为“http:”,这代表网页使用的是 HTTP协议。在Internet中可以使用多种协议,如 HTTP,FTP等等本例中使用的是HTTP协议。在” HTTP”后面的“//”为分隔符
- 域名部分 该URL的域名部分为www.aspxfans.com, URL中也 可以使用ip地址作为域名
- 端口部分 跟在域名后面的是端口,域名和端口之间使用“:”作为 分隔符。如果没有,那么说明URL使用的是默认端口 80,端口不是URL的必须组成部分
- 虚拟目录部分 从域名后的第一个“/”开始到最后一个“/”为止,是虚拟 目录部分。虚拟目录也不是一个URL必须的部分。本 例中的虚拟目录是“/news/”
- 文件名部分 从域名后的最后一个“/”开始到“?”为止,是文件名部 分,如果没有“?”,则是从域名后的最后一个“/”开始到 “#”为止,是文件部分,如果没有“?”和“#”,那么从 域名后的最后一个“/”开始到结束,都是文件名部分。 本例中的文件名是“index.asp”。文件名部分也不是一 个URL必须的部分,如果省略该部分,则使用默认的 文件名
- 锚部分 从“#”开始到最后,都是锚部分。本例中的锚部分是 “name”。锚部分也不是一个URL必须的部分
- 参数部分 从“?”开始到“#”为止之间的部分为参数部分,又称搜 索部分、查询部分。本例中的参数部分为 “boardID=5&ID=24618&page=1”。参数可以允许有 多个参数,参数与参数之间用“&”作为分隔符。
http://域名/资源
http://ip地址:端口号/资源?xxx=xxx&xxx=xxx
2.7 请求/响应报文
客户端与服务器之间的信息传递使用的载体 (overload)叫做报文,报文分为请求和响应两个部分。
- 组成
请求行:包含请求方法,要访问的资源以及所 舒勇的HTTP版本
请求头部:说明服务器要使用的附加信息
空行:请求报文头部后的空行是必须的
请求体:get往往不存在请求体,post请求体包 含请求的参数(有时候在负载中)
- http请求方式
GET(获取):请求获取Request-URI所标识的 资源。(没有请求体,请求参数和对应的值附在URL后,参数用key=value键值对 的方式书写,多个参数使用&分割,传输的参数长度是没有限制的。不 同的浏览器会对get做长度限制)
POST(更新或新增):在Request-URI所标识的 资源后附加新的数据。(有请求体,数据相对安全,数据无大小限制。向指定资源提交表单数据进行处理 请求,参数数据被包含在请求体中, 以名称/值的形式出现,POST请求可能会导致新的资 源的建立和/或已有资源的修改)
HEAD:请求获取由Request-URI所标识的资 源的响应消息报头。
PUT(新增):请求服务器存储一个资源,并用 Request-URI作为其标识。
DELETE(删除):请求服务器删除Request-URI 所标识的资源。
TRACE:请求服务器回送收到的请求信息,主 要用于测试或诊断。
CONNECT:保留将来使用。
OPTIONS:请求查询服务器的性能,或者查 询与资源相关的选项和需求。
get post的本质
GET和POST都是 TCP连接,并无实质的区别。但是由于 HTTP/浏览器的限定,导致它们在应 用过程中体现出了一些不同。GET产 生一个数据包,POST产生两个数据 包。对于GET请求,浏览器会把http header 和 data 一并发出去,服务器 响应200(返回数据)。而对于POST,浏 览器先发送header,服务器响应100 continue,浏览器再发送data,服务 器响应200。
2.8 http状态码
10x: 消息,指连接状态(建立请求)
20x: 成功
30x:重定向 (适用缓存)
40x:找不到资源【客户端错误】
50x:服务器错误
3. Tomcat服务器
作用:
Tomcat是一个应用服务器。能够解析JAVA的代码, 生成.class文件,同时将java转换为html相应的内容。
bin: 放置所有的可执行文件
conf:放置所有的配置文件
lib:放置所有的支持jar包
logs:日志文件
temp:临时文件存储目录
webapps:放置所有的web应用
work:放置被编译之后的.class文件
4. JSP的基本语法与运行机制
4.1 JSP的基本语法
- 指令(代表着当前页面的属性设置)
<%@ page 属性=“属性值”%>
contentType:页面的内容的类型 text/html; charset=utf-8
import:导入要用到的包
language: 代表页面的编程语
<%@ page
contentType="text/html;charse
t=UTF-8" language="java" %>
- 静态代码 (指的页面中的所有静态代码(html\css\js\图片))
- 小脚本 (小脚本就是在页面中的多段java代码。)
<%
代码段
%>
- 表达式( 类似于输出语句,能够将内容输出到页面)
<%=java代码%>
- 声明 (能够在页面中编写java的方法,该形式已经被彻 底废弃了)
<%!
方法
%>
- 注释
html注释:在客户端是能够被看到的
<!--
-->
jsp注释:无法在客户端是能够被看到的
<%--
//单行注释
/***/ 多行注释
--%>
4.2 JSP的运行机制
运行流程:
1. 在客户端第一次请求时,先对JSP进行翻译,形成“JAVA”文件
2.之后会对java文件编译 成为”.class“文件
3. 最后会执行。
4. JSP在第一次执行时,速度较慢,从第二 次开始,就会直接使用已经编译好的.class运行,所以性能能够提升。
5. 如果对JSP中的配置进行了修改,那么服务器一定要重启!
4.3 常见的问题
1. 404 问题
服务器未启动
页面名称输入错误
文件夹可能配置问题
将页面放置在了WEB-INF目录,该目录是 一个系统的配置目录,所以不能够随意访问
web应用未部署
2. 500问题
服务器中代码出错了,可以查看页面的错 误信息结合idea中输出的信息判断错误点。
5.JSP内置对象
JSP中一共包含9个内置对象,最大的特点就是能够 直接使用,而无需使用者手动实例化。实例化的过程被 web容器完成了。
- page
- pageContext JSP的页面容器
- out 页面输出
- config 服务器配置信息,可以取得初始化参数
- exception
- request 获取用户的请求信息
getParameter(String name) 获取表单提交的信息。
getParameterValues(String name)获取表单组件对应多个值时的请求数据
setCharacterEEncoding(String charset)指定每个请求的编码
RequsetDispatcher getRequestDispatcher(String path)返回一个RequsetDispatcher对象,该对象的forward()方法用于转发请求
- response 服务器向客户端的回应信息
- session 用来保存每一个用户的信息
- application 表示所有用户的共享信息
四种属性范围
page(pageContext):只在一个页面中保存属性。 跳转之后无效。
request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
session:在一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效
注意:如果设置过多的application属性范围会影响服务器性能。