JavaWeb —— Web基础
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基础相关推荐
- 20145233《网络对抗》Exp8 Web基础
20145233<网络对抗>Exp8 Web基础 实验问题思考 什么是表单? 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域 ...
- java进阶 2018_Java Web基础入门2018版
步骤1: Java Web基础入门 本步骤带领大家进入Java Web的世界,除了介绍JSP和Servlet以外,还会介绍开发工具IntelliJ IDEA的使用,以及什么是XML.最后会学习MVC模 ...
- JavaWeb开发基础:Application的知识点简述
JavaWeb开发基础:Application的知识点简述 Application的概念比较简单,相比cookie(只允许客户端访问),session(一个客户端只能访问特定的session内存),但 ...
- Javaweb零基础学习(壹)
Javaweb零基础学习(壹) 前言 Web本质是什么 下载相关软件 常用文本标签 前言 这里讲一下我自己是如何自习的Javaweb前端,由于集训的时候讲了一下基础知识,所以我这里自学是以项目为主,边 ...
- Web基础配置篇(十一): Zookeeper的安装配置及使用
Web基础配置篇(十一): Zookeeper的安装配置及使用 一.概述 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop ...
- JAVAweb入门基础
1.JAVAweb开发原理 2.web服务器 2.1.技术服务 ASP(微软 国内最早流行;在HTML中嵌入了VB的脚本,ASP+Com;在ASp开发中,基本一个页面都有几千行的业务代码,页面及其混乱 ...
- Web基础之与Tomcat的初次相遇
Web基础之与Tomcat的初次相遇 一.WEB后台原理 1.常见的web服务器 Tomcat(Apache):应用最广的JavaWeb服务器,支持Servlet,JSP规范 JBoss(Redhat ...
- JavaWeb零基础入门之Cookie和Session
学完之后学习JavaWeb零基础入门之Filter过滤器 视频链接:https://www.bilibili.com/video/BV1Y7411K7zz?p=1 参考手册:https://tool. ...
- 全栈 - 20 Web 基础 网页的血肉 CSS
这是全栈数据工程师养成攻略系列教程的第二十期:20 Web基础 网页的血肉CSS. HTML决定了网页中包含哪些内容,而CSS则决定了这些内容所呈现的样式. 什么是CSS CSS全拼是Cascadin ...
最新文章
- mysql-plus 动态修改全局sql, 进行数据隔离, 多租户, 多字段修改
- FusionCharts Free(3)
- android 修改 dpi_鼠标DPI是什么意思?鼠标CPI和DPI之间区别知识科普
- java生成验证码SWT_Java SWT Lable框中显示图片验证码
- 将VS Code用于C#脚本
- 显式强制类型转换static_cast, dynamic_cast, const_cast, reinterpret_cast
- 大神干货:腾讯广告算法大赛亚军女极客生存图鉴
- jdbc executebatch 非事务_面试:Mybatis事务请讲解一下?
- thinkphp5 事务回滚_卓象程序员:ThinkPHP5实现事务功能
- 优质书籍资源仓库推荐【欢迎推送书籍】
- 《那些年啊,那些事——一个程序员的奋斗史》四
- 如何把书上的字弄到电脑!
- 内网虚拟机静态IP设置VMWare内网通外网不通把某一网段白名单虚拟机ping不通主机虚拟机桥接改成非192.168网段服务器与电脑直连共享wifi
- 让我带你弄明白什么是RPC ,帮你整理一下你的小脑瓜!
- [LCT刷题][连通性维护] P3950 部落冲突
- 0667-6.2.0-什么是Cloudera虚拟私有集群和SDX
- Java---设计模式app小软件汇总应用
- android 语音识别
- 图解 深入浅出JavaWeb:事务必会必知
- 十、什么是临界资源及如何访问临界资源
热门文章
- 文献检索工具 | 计算机类英文文献检索数据库DBLP
- 服务器运行打开一直转圈,快速解决登录PC端一直转圈数据读取中,不能进入正常聊天界面...
- 如何更好的做产品决策
- windows11 文件夹打开慢解决方法推荐
- 【DP专辑】ACM动态规划总结
- PPT总做不好?其实只要掌握这个万能的SmartArt功能就可以了!
- 错误代码:0x80072EFE,Win11/Win10无法安装.Net Framework3.5(包括.NET2.0和.NET3.0)踩坑总结【半天血泪史】
- SpringCloud从入门到精通(超详细文档二)
- 轻击鼠标,实现完美分区
- Jmeter之Dummy Sampler