web——14.web开发
目录
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开发相关推荐
- 对Web设计和开发人员有用的15个Chrome插件
导读:原文作者Brian在freelancefolder.com发表了一篇<15 Useful Google Chrome Extensions for Web Designers and De ...
- 转:Web Service入门开发简单例子--很详尽
.net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...
- [HTML5]移动Web应用程序开发 HTML5篇 (四) 多媒体API
介绍 本系列博客将主要介绍如今大红大紫的移动Web应用程序开发最重要的三个工具:HTML5,JavaScript, CSS3. 本篇是HTML5介绍的第三篇,主要介绍HTML5的Canvas API. ...
- 2016年最好的15个Web设计和开发工具
网络无处不在.世界上几乎没有地方是没有被因特网所渗透的.无孔不入的网络为Web设计师和开发人员开辟了新的机遇渠道.每家企业都在争取在这个在线平台上展现头角,以便于在这场竞争中占据优势.这就是为什么设计 ...
- Web基础技术开发设计规范
Web基础技术开发设计规范 概述 前端脚本语言十分灵活,每个人都有自己开发风格,并且javascript是单线程编程语言,程序的运行效率在前端开发是比较重要的,所以对前端开发人员应有更高的编程要求.而 ...
- [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料
教育 -Java Web应用程序开发-章节资料考试资料-商丘职业技术学院[] 简述B/S结构和C/S结构,各自的优缺点? web前端基础 第1单元 网上书店系统开发准备 1.[单选题]主流的动态网页技 ...
- 基于soap 的 python web services 服务开发指南
文章大纲 序言 相关概念 SOA web services SOAP WSDL UDDI 环境搭建 我们使用 python 3.6 这个较新python 版本 服务端开发 客户端开发 suds-jur ...
- openjweb1.8 java web应用快速开发平台产品白皮书
因图片较多,需要图片请到资源中下载,不需要资源分. OpenJWeb(1.8) Java Web应用快速开发平台 产品白皮书 编者:OpenJWeb ...
- 2012年Web设计和开发的15个趋势
Craig Grannell访问了行业的精英们关于2012年Web设计和开发的趋势. 2012看来注定是有趣的一年.经济的下滑继续广泛地打击行业,看不到结束的尽头.政府极力审查网络,否认公民的基本权利 ...
最新文章
- 使用TestNG-xslt+ant来美化selenium测试报告
- 【Win32汇编】__declspec(naked)裸函数
- Jmeter下载、安装、配置 和 使用(一)
- JVM : VisualVM 排查内存泄漏的问题
- [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非
- 从矩阵分解到FM的演进、FM如何用于召回和排序以及实现说明
- mysql只显示前几行_常见数据库SELECT结果只显示前几条记录方法汇总
- VS Code 调试 Angular 和 TypeScript 的配置
- 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (54)
- 为什么我的数据库应用程序这么慢?
- unknown type name err_status_t; did you mean srtp_err_status_t/err_status_ok/err_status_replay_fail
- 你知道最真实的大数据故事吗?13 个大数据应用案例告诉你。
- 数据库的基本概念(数据库的发展、主流数据库介绍)
- 【金九银十】java数据结构和算法第二版
- SharePoint CAML 查询时间类型
- 基于Hive的淘宝用户行为数据分析
- 7-41 哥尼斯堡的“七桥问题” (25 分)
- centos7默认mariadb与mysql官网下载安装问题解决
- 华为手机打开图片很慢是怎么回事_华为手机微信打开很慢怎么办
- 汉字编码变化_新编码员:薪资和时间花费如何根据人口变化