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组织的数字证书

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。