web基础
1.什么是Web开发, 什么是静态资源, 什么是动态资源, JavaWeb开发对应的技术是什么?
a. Web开发就是就是基于浏览器访问服务器的网络应用程序
b. 静态资源
b.1 无论何时何地以何种身份访问该资源, 显示结果都一样
b.2 HTML,XHTML或XML; CSS; JavaScript, ...
c. 动态资源
c.1 无论何时何地以何种身份访问该资源, 有可能结果不一样
c.2 Servlet, Jsp, (Asp, PHP...)
2. 什么是C/S 和 B/S模式, 两者的区别?
a. C/S = Client - - - | - - - Server 客户端程序和服务端数据分离
b. B/S = Browser - - - | - - - WebServer + DataBaseServer 程序和数据在服务端, Browser只发送简单请求
c. 扩展问题: 实现B/S需要哪些条件的成熟, C/S真的可以被B/S取代吗? 运算如果全部交给Server岂不是压力很大? 是否可以将运算程序仍保留在Client, 分散给用户的CPU运算,而将素材保留在Server端,而动态地调用传递给Browser?
3. 服务器是什么?
a. 服务器是一个专门处理响应一类请求, 提供服务的机器
b. 响应Web请求可以是WebServer, 响应Data请求的可以是DataBaseServer
c. 常见的Web服务器: WebLogic(BEA); WebSphere(IBM); Tomcat-WebServer(APACHE)
d. 这里主要介绍 Tomcat-WebServer
4. Tomcat服务器的目录结构是什么?
a. bin/:存放启动和停止Tomcat平台的各种脚本文件
b. conf/:Tomcat的配置文件目录里面有两个很重要的配置文件: server.xml和Catalina.xml
c. lib/ :存储需要的第三方jar
d. logs/ :存储于Tomcat服务器操作相关的日志文件
e. Webapps/ :存储Tomcat服务器上的Webapp, 而且这些Webapp都要满足特定的目录结构及具有一些特定的配置文件
f. work/ : Tomcat运行时的工作目录, Webapp启动是会自动生成
5. config文件夹中server.xml配置文件的结构是什么样的?
a. server.xml的简单结构
- Server (Listener, ..., Service)
- Service (Connector, Engine)
- Engine (..., Host)
- Host(...,Context,...)
b. server.xml下各个子元素的基本属性和作用
b.1 Server(@port+@shutdown): 根标签 @port指定一个端口,负责监听关闭tomcat的请求
b.2 Service{Connector+Engine}:
- Service指定一个服务,
- Connector指定这个服务需要指定于客户端的连接, 可以配置其port="xxxx", 默认http的是8080
- Engine指定service中请求的处理机, 接受和处理来自Connector的请求
b.3 Engine{...,Host,...}
- Host指定虚拟主机: 是浏览器访问地址栏中作为域名解析的代号 http:// hostname:port
b.4 Host(@name,@appBase){Context}: tomcat默认配置了hostname:8080端口
- @name: 指定一个虚拟主机名
- @appBase: 指定这个虚拟主机的承载Webapps的真正路径
- Context: 指定Webapp的内容的基本信息
b.5 Context(@path, @docBase): 一般都将应用放在Tomcat的Webapps目录下, 则无需在server.xml中配置Context
- @path: 指定这个Webapp的虚拟路径, 即浏览器找到host:port之后的那个虚拟索引地址 http://host:port/path
- @docBase: 指定某个Webapp的相对于虚拟主机的真正路径
6. 满足Tomcat默认目录映射配置的一个Webapp是如何在tomcat服务器上运行的?
a. 这里说的满足Tomcat默认目录映射配置是指:
a.1 满足将一个名为MyWebapp的应用放置在Tomcat的Webapps目录下 http://hostname:8080/MyWebapp/...
a.2 这个Webapp满足如下的目录结构:
- MyWebapp(dir) = WEB-INF(dir)+META-INF(dir)+... ...
- WEB-INF(dir)=classes(dir)+lib(dir)+web.xml+ ... ...
- classes(dir) : 装载所有这个应用相关的字节码文件.class
- lib(dir) : 装载所有这个应用相关的jar
- web.xml : 有关这个应用的配置文件
b. web.xml配置了在确定应用的虚拟路径后如何找到一个servlet/jsp的方法 http://hostname:8080/MyWebapp/MyServlet
eg. 例如配置一个servlet:
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.sina.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
b.1 servlet: 中配置了这个servlet的名称servlet-name和这个servlet在classes根目录下的地址(以一个package的样式书写)
b.2 servlet-mapping: 中配置了对应这个名称的servlet在url中的虚拟访问路径url-pattern
b.3 url-pattern对应 servlet-name找到 servlet-class访问这个servlet
c. 通过5, 6. a,b我们就可以通过浏览器的地址栏访问一个Tomcat服务器上应用的某个程序了
http://hostname:8080/MyWebapp/MyServlet
7. 通过5,6我们已经解释清楚了localhost:8080/MyWebapp/MyServlet, 但是还没与解释清http://hostname这一段, 虽然Tomcat可以通过解析hostname找到服务器上的一个虚拟主机, 但是网络是如何通过这个localhost找到服务器的? 还有http://是什么意思?
a. 浏览器在访问一个域名(hostname)是通过DNS一个通讯商的域名解析服务找到hostname对应的IP地址来访问服务器的
b. 但是, 查找DNS还是需要一定的时间的, 为了快捷的访问, 本地系统文件hosts中会定义一些hostname和IP的映射关系
c. 基于b,c 浏览器先通过本地系统文件hosts中查找是否有这个hostname的IP, 如果没有再通过DNS去查找IP, 即可以找到服务器的地址
d. http是一种浏览器访问遵循的规范和原则, 8中会详细解释, 这里提到一点是, http会将hostname传给服务器, 服务器就可以根据这个hostname进行虚拟主机的查找
8. HTTP协议是什么, 服务器响应浏览器请求也是遵循http协议吗?
a. HTTP协议是一种基于应用层的面向对象的协议, 在这里可以理解为浏览器和服务器信息传输的一种协议
b. HTTP协议可以处理B2S的请求, 同时服务器程序调用结果会通过HTTP进行S2B的响应处理
c. HTTP协议的一些特点:
c.1 支持客户/服务器模式
c.2 简单快速: 客户向服务器请求服务时, 只需传递请求方法和路径
c.3 HTTP允许传输任意类型的数据对象, 由Content-type加以描述
9. B2S的HTTP请求包括哪些部分, 各部分的含义是什么?
a. B2S请求包含: 请求行+请求报头+请求正文
b. 请求行=请求方式+请求目标资源+采用的协议和版本号
c. 请求报头:
c.1 Accept: */* 客户端可以支持的资源类型
c.2 Accept-Language: en-us 支持的语言
c.3 Connection: Keep-Alive 维护客户端和版本号的连接关系
c.4 Host: hostname:8080 连接的目标主机和端口号
c.5 Referer: ????????
c.6 User-Agent: Mozilla/4.0 客户端使用的内核/版本号
c.7 Accept-Encoding:gzip,deflate 客户端可以接受的压缩数据类型
c.8 If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT缓存时间
c.9 Cookie 客户端暂存服务端的信息
c.10 Date: Tue, 11 Jul 2000 .... 客户端请求服务端的时间
d. 常用的请求方式:
d.1GET:
- 无论参数多少,多会跟在URL后, 以明文的方式传递到服务端
- GET方式传递有大小限制
- 信息不安全
d.2 POST:
- 无论参数多少, 都不会跟在URL后, 而是以参数方式在请求体中传递到服务端
- POST方式传递无大小限制
- POST方式传递信息相对安全
10. S2B的HTTP响应包括哪些部分, 各部分的含义是什么?
a. S2B响应包含: 响应行+响应报头+响应正文
b. 响应行=协议/版本号+状态码+原因描述
c. 响应报头:
c.1 Location: http://www.baidu.com 服务器需要客户端访问的页面
c.2 Server: apache tomcat 服务端的服务器名称
c.3 Content-Encoding: gzip 服务端能够发送的压缩编码类型
c.4 Content-Length: 80 服务器发送的压缩数据长度
c.5 Content-language: zh-cn 服务器发送的语言类型
c.6 Content-Type: text/html;charset=GB2312 服务端发送的类型及采用的编码
c.7 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 服务端对资源最后的修改时间
c.8 Refresh: 1,url=www.sina.com 服务端要求客户端指定秒数后刷新跳转的页面
c.9 Content-Disposition: attachment;filename=aaa.zip服务端要求客户端以下载的方式打开文件
c.10 Transfer-Encoding: chuncked 服务器数据的传输方式(分块传输)
c.11 Set-Cookie: SS=QO=5Lb nQ;path=/search 服务端要求数据的缓存方式
c.12 Expires: -1 服务端禁止客户缓存页面数据
Cache-Control:no cache
Pragma: no cache
c.13 Connection: Keep-Alive 维护客户端和版本号的连接关系
c.14 Date: Tue, 11 Jul 2000 18:23:51 GMT 服务端响应客户端的时间
11. 状态码有哪些种, 个表示什么意思?
a. 100~199: 表示成功接收请求, 要求客户端继续提交下一次请求才能完成整个处理过程
b. 200~299: 表示成功接收请求并已完成整个处理过程, 常用200
c. 300~399: 为完成请求, 客户需进一步细化请求
- 302: 客户端请求服务端,但服务端没对应资源, 服务端要客户端再次请求找其它的服务端, 即客户端第二次请求,重定向
- 307: 客户端请求服务端,但服务端没对应资源, 服务端自己去查找其它服务端, 即客户端一次请求, 转发
- 304: 客户端请求服务端,此时客户端缓存中有需要的资源, 无需再从服务端下载新的内容, 此时服务端叫客户端自行查找缓存, 优化
d. 400~499: 客户端的请求有错误, 常用404
e. 500~599: 服务器端出现错误, 常用500
- 500: 客户端请求的资源, 服务端存在, 但在执行时出错
12. HTTPS是什么?
a. HTTPS是一种加密的数据协议, 可以保证数据安全
b. HTTPS是一种不对称的加密协议, 不对称是指客户端的加密公钥和服务端的解密私钥不不一致
c. 为防止钓鱼网站根据加密原理自己制作公钥和私钥调取用户信息, 遵循HTTPS协议的正规网站需要获取CA组织的数字证书
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。