WEB基础

本文总结Web开发基础部分HTTP,Tomcat服务器目录结构及配置的相关知识, 完成理解http://hostname/MyWebapp/MyServlet是如何完成服务器的访问

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

13. MyEclipse是如何将一个工程映射到tomcat服务器上的?

在JSP之后总结

参考资料:

[1] 传智播客徐文海Web讲义

[2] 传智播客赵君JavaWeb视频

JavaWeb —— Web基础相关推荐

  1. 20145233《网络对抗》Exp8 Web基础

    20145233<网络对抗>Exp8 Web基础 实验问题思考 什么是表单? 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域 ...

  2. java进阶 2018_Java Web基础入门2018版

    步骤1: Java Web基础入门 本步骤带领大家进入Java Web的世界,除了介绍JSP和Servlet以外,还会介绍开发工具IntelliJ IDEA的使用,以及什么是XML.最后会学习MVC模 ...

  3. JavaWeb开发基础:Application的知识点简述

    JavaWeb开发基础:Application的知识点简述 Application的概念比较简单,相比cookie(只允许客户端访问),session(一个客户端只能访问特定的session内存),但 ...

  4. Javaweb零基础学习(壹)

    Javaweb零基础学习(壹) 前言 Web本质是什么 下载相关软件 常用文本标签 前言 这里讲一下我自己是如何自习的Javaweb前端,由于集训的时候讲了一下基础知识,所以我这里自学是以项目为主,边 ...

  5. Web基础配置篇(十一): Zookeeper的安装配置及使用

    Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...

  6. JAVAweb入门基础

    1.JAVAweb开发原理 2.web服务器 2.1.技术服务 ASP(微软 国内最早流行;在HTML中嵌入了VB的脚本,ASP+Com;在ASp开发中,基本一个页面都有几千行的业务代码,页面及其混乱 ...

  7. Web基础之与Tomcat的初次相遇

    Web基础之与Tomcat的初次相遇 一.WEB后台原理 1.常见的web服务器 Tomcat(Apache):应用最广的JavaWeb服务器,支持Servlet,JSP规范 JBoss(Redhat ...

  8. JavaWeb零基础入门之Cookie和Session

    学完之后学习JavaWeb零基础入门之Filter过滤器 视频链接:https://www.bilibili.com/video/BV1Y7411K7zz?p=1 参考手册:https://tool. ...

  9. 全栈 - 20 Web 基础 网页的血肉 CSS

    这是全栈数据工程师养成攻略系列教程的第二十期:20 Web基础 网页的血肉CSS. HTML决定了网页中包含哪些内容,而CSS则决定了这些内容所呈现的样式. 什么是CSS CSS全拼是Cascadin ...

最新文章

  1. mysql-plus 动态修改全局sql, 进行数据隔离, 多租户, 多字段修改
  2. FusionCharts Free(3)
  3. android 修改 dpi_鼠标DPI是什么意思?鼠标CPI和DPI之间区别知识科普
  4. java生成验证码SWT_Java SWT Lable框中显示图片验证码
  5. 将VS Code用于C#脚本
  6. 显式强制类型转换static_cast, dynamic_cast, const_cast, reinterpret_cast
  7. 大神干货:腾讯广告算法大赛亚军女极客生存图鉴
  8. jdbc executebatch 非事务_面试:Mybatis事务请讲解一下?
  9. thinkphp5 事务回滚_卓象程序员:ThinkPHP5实现事务功能
  10. 优质书籍资源仓库推荐【欢迎推送书籍】
  11. 《那些年啊,那些事——一个程序员的奋斗史》四
  12. 如何把书上的字弄到电脑!
  13. 内网虚拟机静态IP设置VMWare内网通外网不通把某一网段白名单虚拟机ping不通主机虚拟机桥接改成非192.168网段服务器与电脑直连共享wifi
  14. 让我带你弄明白什么是RPC ,帮你整理一下你的小脑瓜!
  15. [LCT刷题][连通性维护] P3950 部落冲突
  16. 0667-6.2.0-什么是Cloudera虚拟私有集群和SDX
  17. Java---设计模式app小软件汇总应用
  18. android 语音识别
  19. 图解 深入浅出JavaWeb:事务必会必知
  20. 十、什么是临界资源及如何访问临界资源

热门文章

  1. 文献检索工具 | 计算机类英文文献检索数据库DBLP
  2. 服务器运行打开一直转圈,快速解决登录PC端一直转圈数据读取中,不能进入正常聊天界面...
  3. 如何更好的做产品决策
  4. windows11 文件夹打开慢解决方法推荐
  5. 【DP专辑】ACM动态规划总结
  6. PPT总做不好?其实只要掌握这个万能的SmartArt功能就可以了!
  7. 错误代码:0x80072EFE,Win11/Win10无法安装.Net Framework3.5(包括.NET2.0和.NET3.0)踩坑总结【半天血泪史】
  8. SpringCloud从入门到精通(超详细文档二)
  9. 轻击鼠标,实现完美分区
  10. Jmeter之Dummy Sampler