目录

1.我们如何构建发送

1.GET/data/stundets.json请求

2.POST/data/students.json请求

2.如何使用Servlet技术开发动态资源

1.定义

2.大体的开发流程:整个过程都需要遵守标准,否则Tomcat不认

1.通过继承HttpServlet抽象类,完成我们自己的类(每个都是一个独立的web资源)  HelloServlet

2.需要重写其中的方法(get、post...),输出资源内容的过程

3.把动态资源和路径绑定关系          /hello <-> HelloServlet

3.浏览器中输入url回车之后,直到看到了网页,期间发生了什么?(很重要的面试题)

4.Servlet的使用

1. HTTP请求中有哪些信息?

2.GET方法“不携带”请求体,所以需要准备POST方法

3.URL编码的大体过程:


1.Ajax的使用:提供JS可以发起HTTP请求的能力(同一个域名下才有权限)

XMLHttpRequest()对象的使用

open(methord,url) send()  onload = function(){...}

responseText:响应体

2.JSON格式:JS对象的子集(1.key必须是引号引起 2.数据类型中不能有函数)

JS中如何系欸小JSON字符串:JSON.parse(jsonString)

ajax.html包含一个<script src="js/script.js"></script>

js/scripts写了ajax代码,请求data/students.json资源

行为主体:  用户     浏览器(进程)    Tomcat(进程)

(1)用户在浏览器中输入.../ajax.html回车

(2)浏览器分析用户的输入,构建HTTP请求(GET)请求

(3)Tomcat收到请求,根据资源路径,找到对应的文件webapp/ajax.html

读取内容,准备响应并发送(200 text/html)

(4)读取响应体,根据content-type决定按照html方式对待内容,解析HTML中标签

(5)在解析过程中,看到<script src="..."></script>,构建一个新的HTTP请求(GET/js/script.js)

(6)Tomcat根据资源路径,找到对应的文件,读取内容,准备HTTP响应(200application/javascript...)

(7)浏览器读取响应体,根据contend-type,执行js代码,实例化xhr对象,send()

(8)Tomcat根据资源...bala(application/json)

(9)浏览器读取响应,执行JS代码中写的xhr.onload函数。调用JSON.parse(this.responseText)

遍历对象+修改DOM树

(10)浏览器得到最终的DOM结构,显示内容

(11)用户看到最终的页面显示

由于有三次请求响应,所以在开发者工具的网络面板中可以看到3行


1.我们如何构建发送

1.GET/data/stundets.json请求

1.在地址栏输入url然后回车   2.通过一些标签<img>、<script>、<link>

3.还有一些标签<a>、<form>

4.ajax     5.重定向(redirecet)

2.POST/data/students.json请求

1.<form method="post">

2.Ajax    3.重定向redirect

2.如何使用Servlet技术开发动态资源

1.定义

1.为什么需要动态资源?

在某些资源路径固定的情况下,我们需要对应不同的环境/条件,产生不同的内容

例如:各个网站的个人中心页面

2.Servlet: Server Let(服务器 小物件)——官方提供的标准,输入JavaEE标准(一组抽象类、接口)

3.Servlet当下环境如何?基本不用了,SpringMVC为主(也是基于Servlet而诞生)

2.大体的开发流程:整个过程都需要遵守标准,否则Tomcat不认

1.通过继承HttpServlet抽象类,完成我们自己的类(每个都是一个独立的web资源)  HelloServlet

2.需要重写其中的方法(get、post...),输出资源内容的过程

3.把动态资源和路径绑定关系          /hello <-> HelloServlet

1.通过web.xml(一般不会使用)

2.使用java注解语法完成@WebServlet @Override

以下讲解这个方法的具体步骤:

1.WebServlet把动态资源和路径绑定,如果要通过浏览器访问,就必须添加third

当前学习到web部分,每次修改代码,以防万一,我们都重启Tomcat

2.通过继承HttpServlet表示我们这个类是一个有效的Web资源(动态)了

3.重写doGet方法,这个资源支持HTTP GET方法访问。隐含着其他HTTP方法,我们是不支持的,如果非要用不是get方法访问这个资源,会405(方法不支持)

根据请求or其他条件构造响应的过程,就是动态资源的例子

4.Tomcat内部的大概过程:

(1)Tomcat收到了一个HTTP请求

(2)Tomcat根据HTTP协议的规定,解析请求,得到诸如:请求方法、资源路径、请求头们、请求体

(3)Tomcat根据资源路径(Path = Context Path +Servlet Path)

3.1现根据Context Path,决定这个资源是交给哪个Webapp处理(隐含:Tomcat支持多个webapp同时存在)

3.2当确定是哪个webapp后,在根据Servlet Path,去找到对应的资源进行处理

3.2.1如果是动态资源,根据路径得到一个类名

如果这个类还没有实例化对象,则实例化其对象,否则直接获取其对象(单例模式)

根据请求方法,调用该对象的doGet或者doPost或者其他方法

3.2.2 doGet方法执行结束之后,resp对象被填充信息(203,text/css,你好西安)

Tomcat根据这个对象,构造Http响应,发送给浏览器

3.2.3如果是静态资源,就根据对应的路径去查找对应的文件,并响应文件内容

3.2.4如果动态or静态资源都没找到,就会404


3.浏览器中输入url回车之后,直到看到了网页,期间发生了什么?(很重要的面试题)

只站在应用层角度:

1.浏览器:解析URL,(如果是域名,通过DNS服务器将域名换成ip的过程)构件HTTP请求(GET请求)

2.Tomcat收到了请求,根据路径,确定对应的Servlet哪个对象进行处理根据请求方法,调用对象的对应方法

3.执行Servlet业务代码(我们写的),得到填充好的响应对象

4.Tomcat根据响应对象,构件HTTP协议,发送给浏览器

5.浏览器读取响应,展示:

如果是html/JS,可能还会触发新的HTTP请求

6.浏览器得到显示页面的所有的资源,构件DOM树(包含JS处理过的情况)+进行CSS渲染

产生最终的页面

7.用户看到最终的页面效果


DNS的请求过程:

1.浏览器中可能有本地DNS缓存

2.如果缓存中没有,去调用OS系统系统调用,去要DNS换ip

(1)OS读取本地host文件(俗称固定host)

(2)OS会发送DNS请求,给本地DNS服务器

如果本地DNS有记录,直接返回,如果没有,再去它的上一级要记录结果

最终这个过程走到了DNS(根DNS:全球一共13台)

3.业务根据请求,填充响应的过程

(1)直接填充

(2)配合数据库中的数据进行填充(比如验证登陆)

(3)还有其他的存储/接口服务(比如Redis、ES、MongDB等)


结合网络知识:

(1)纯TCP的角度也可以讲述:要发送HTTP请求,收到HTTP响应,首先得有TCP连接

可以展开TCP三次握手、四次挥手

(2)站在发送端主机的角度:应用层->传输层->网络层->数据链路层->物理层(网卡),按照各种协议封装起来的。

站在接收端主机的角度:物理层(网卡)->数据链路层 ->网络层->传输层->应用层,按照协议解包+分用

(3)只针对网络层的路由(路由表的作用(把长期目标->短期目标)、ARP表(把局域网IP换成MAC地址) )

(4)NAT服务器怎么做IP和port替换映射

4.Servlet的使用

1. HTTP请求中有哪些信息?

1.请求方法  2.资源路径url   3.请求版本  4.请求头们 5.请求体(如果存在)

这些信息都可以通过req获取

2.GET方法“不携带”请求体,所以需要准备POST方法

准备:携带请求体的POST请求

准备:一个html,里面有form表单,通过form表单来发送HTTP POST请求

准备:一个动态资源,仅支持POST方法,打印读取到的请求体(PS:这个动态资源不能用GET方法访问)


URL和URI中支持的字符是有限的,所以一些特殊字符(比如&、空格、加号等)和中文需要经过URL编码。

3.URL编码的大体过程:

(1)将字符经过一定的字符集(通常是UTF-8)编码

比如: & ->0x26      我 ->0xE68891

(2)将每个字节都用%做前缀

比如: &-> %26      我->%E68891


HTTP请求<->HttpServletRequest对象           这里方法以getXX()为主

HttpServletResponse <-> HTTP响应            这里方法以Ser()为主

1.状态(状态码和状态描述)

2.响应头

3.响应体

web——14.web开发相关推荐

  1. 对Web设计和开发人员有用的15个Chrome插件

    导读:原文作者Brian在freelancefolder.com发表了一篇<15 Useful Google Chrome Extensions for Web Designers and De ...

  2. 转:Web Service入门开发简单例子--很详尽

    .net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...

  3. [HTML5]移动Web应用程序开发 HTML5篇 (四) 多媒体API

    介绍 本系列博客将主要介绍如今大红大紫的移动Web应用程序开发最重要的三个工具:HTML5,JavaScript, CSS3. 本篇是HTML5介绍的第三篇,主要介绍HTML5的Canvas API. ...

  4. 2016年最好的15个Web设计和开发工具

    网络无处不在.世界上几乎没有地方是没有被因特网所渗透的.无孔不入的网络为Web设计师和开发人员开辟了新的机遇渠道.每家企业都在争取在这个在线平台上展现头角,以便于在这场竞争中占据优势.这就是为什么设计 ...

  5. Web基础技术开发设计规范

    Web基础技术开发设计规范 概述 前端脚本语言十分灵活,每个人都有自己开发风格,并且javascript是单线程编程语言,程序的运行效率在前端开发是比较重要的,所以对前端开发人员应有更高的编程要求.而 ...

  6. [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料

    教育 -Java Web应用程序开发-章节资料考试资料-商丘职业技术学院[] 简述B/S结构和C/S结构,各自的优缺点? web前端基础 第1单元 网上书店系统开发准备 1.[单选题]主流的动态网页技 ...

  7. 基于soap 的 python web services 服务开发指南

    文章大纲 序言 相关概念 SOA web services SOAP WSDL UDDI 环境搭建 我们使用 python 3.6 这个较新python 版本 服务端开发 客户端开发 suds-jur ...

  8. openjweb1.8 java web应用快速开发平台产品白皮书

    因图片较多,需要图片请到资源中下载,不需要资源分.           OpenJWeb(1.8) Java Web应用快速开发平台   产品白皮书               编者:OpenJWeb ...

  9. 2012年Web设计和开发的15个趋势

    Craig Grannell访问了行业的精英们关于2012年Web设计和开发的趋势. 2012看来注定是有趣的一年.经济的下滑继续广泛地打击行业,看不到结束的尽头.政府极力审查网络,否认公民的基本权利 ...

最新文章

  1. 使用TestNG-xslt+ant来美化selenium测试报告
  2. 【Win32汇编】__declspec(naked)裸函数
  3. Jmeter下载、安装、配置 和 使用(一)
  4. JVM : VisualVM 排查内存泄漏的问题
  5. [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非
  6. 从矩阵分解到FM的演进、FM如何用于召回和排序以及实现说明
  7. mysql只显示前几行_常见数据库SELECT结果只显示前几条记录方法汇总
  8. VS Code 调试 Angular 和 TypeScript 的配置
  9. 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (54)
  10. 为什么我的数据库应用程序这么慢?
  11. unknown type name err_status_t; did you mean srtp_err_status_t/err_status_ok/err_status_replay_fail
  12. 你知道最真实的大数据故事吗?13 个大数据应用案例告诉你。
  13. 数据库的基本概念(数据库的发展、主流数据库介绍)
  14. 【金九银十】java数据结构和算法第二版
  15. SharePoint CAML 查询时间类型
  16. 基于Hive的淘宝用户行为数据分析
  17. 7-41 哥尼斯堡的“七桥问题” (25 分)
  18. centos7默认mariadb与mysql官网下载安装问题解决
  19. 华为手机打开图片很慢是怎么回事_华为手机微信打开很慢怎么办
  20. 汉字编码变化_新编码员:薪资和时间花费如何根据人口变化

热门文章

  1. JAVA开发技能要求:
  2. 深度CV基础——图像噪声和滤波
  3. 汽车行业OTD业务模式入门学习
  4. LabVIEW编程基础:while循环编程
  5. 卸载cuda11.0并安装cuda11.1和cudnn
  6. 独孤九剑-第一式 整体规划
  7. win32 获取窗口句柄的方法
  8. 关于url网上下载安装包(java)
  9. 从FC到Wii 24年来游戏机CPU发展历程回顾
  10. Git原理入门及具体使用介绍