基础概念:
1.网关:
网关是什么意思?3分钟了解网关的作用
是一种网间连接器,协议转换器,**它是信息从一个网络发往另一个网络需经过的一道“关口”。**仅用于两个高层协议不同的网络互联。
如果网络A中的主机发现数据包的目的地址不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某台主机。假设网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0,那么网络A向网络B发送数据包的过程如下图所示。
(上图中的255.255.255.0是掩码地址)
网关的IP地址是用来实现不同网络之间的通信的。网关是一种网络设备,它可以将数据包从一个网络转发到另一个网络中的设备。网关的IP地址就是它的网络接口的地址,它用于标识网关在网络中的位置。网关的IP地址可以是任意的,只要符合IP地址的分配规则就行。但是为了方便管理和区分,一般会将一个网段的第一个或最后一个IP地址作为网关的IP地址。
2.域名和域名查询:
一张图看懂DNS域名解析全过程 - crazyYong - 博客园
HTTP 304状态码的详细讲解:
自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容(因为浏览器缓存了上次请求的内容,外加网页没有修改)。
get和post的区别:
- GET请求是用来从服务器获取数据的,而POST请求是用来向服务器发送数据的。GET请求的参数会附加在URL后面,而POST请求的参数会放在请求体中。
- GET请求的参数有长度限制,一般不能超过2048个字符,而POST请求的参数没有长度限制。GET请求的参数只能是ASCII字符,而POST请求的参数可以是任意类型的数据。
- GET请求可以被缓存、收藏为书签、保存在浏览器历史记录中,而POST请求不会。GET请求在回退和刷新时不会有影响,而POST请求可能会导致数据被重复提交。
- GET请求相对于POST请求更不安全,因为参数会暴露在URL中,可能会泄露敏感信息。POST请求相对于GET请求更安全,因为参数不会显示在URL中。
- GET请求和POST请求的语义不同,GET请求一般用于获取资源,而POST请求一般用于创建或修改资源。
- GET请求参数只支持ASCLL字符集(这也说明get只支持字符串参数,而post可以支持各种类型的参数,这同时也说明get请求中不能传递中文,如果要传递中文,需要对url进行额外的编码操作),其中URL中用?分割请求地址和参数列表,参数是键值对形式,每对键值对用&分割开。
-
GET方法传递中文参数乱码解决办法-腾讯云开发者社区-腾讯云
servlet和servlet容器:
理解Servlet和Servlet容器、Web服务器等概念-CSDN博客
他们之间的关系:
1.servlet是运行在servlet容器中的小程序,由Servlet容器所管理,用于生成动态的内容。Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包括生成和管理Servlet。有了servlet之后,用户通过单击某个链接或者直接在浏览器的地址栏中输入URL来访问Servlet,Web服务器接收到该请求后,并不是将 请求直接交给Servlet,而是交给Servlet容器。Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理, 并产生一个响应。这个响应由Servlet容器返回给Web服务器,Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。
servlet容器的作用:
1.通信支持:利用容器提供的方法,你能轻松的让servlet与web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等 等。
2.常见的servlet容器:tomcat
Tomcat服务器接受客户请求并做出响应的过程如下:
1)客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。
2)Web服务器接收到请求后,传递给Servlet容器。
3)Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
4)Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。
5)Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。
servlet生命周期:
Servlet 的生命周期,什么是cookie,Session的详细解析,servletContext对象的详细解析 - 掘金
1.init()
init方法设计为只调用一次。如果servlet的实例不存在,则Web容器:
加载servlet类
创建servlet类的实例
通过调用init方法初始化它
init方法必须成功完成之后,servlet才能接收任何请求。如果init方法抛出ServletException或在Web服务器定义的时间段内未返回,servlet容器将无法将servlet放入服务。
1 | public void init() throws ServletException { |
2.service()
此方法仅在servlet的init()方法成功完成后调用。
Container调用service()方法来处理来自客户端的请求,解释HTTP请求类型(GET、POST、PUT、DELETE等)并酌情调用doGet、doPost、doput、doDelete等方法。
1 | public void service(ServletRequest request, ServletResponse response) |
- destroy()
由Servlet容器调用以使Servlet退出服务。
此方法仅在servlet的服务方法中的所有线程都退出或超时后调用。容器调用此方法后,不会在Servlet上再次调用服务方法。
1 | public void destroy() { |
servlet实践:
spring-Servlet/Tomcat/Spring - 秦羽的思考 - 博客园(重要较难)
serveltContext:
你可以把它想象成一个公用的空间,可以被所有的客户访问,也就是说A客户端可以访问D,B客户端可以访问D,C客户端也可以访问D。
WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用。并且它被所有客户端共享。
ServletContext对象可以通过ServletConfig.getServletContext()方法获得对ServletContext对象的引用,也可以通过this.getServletContext()方法获得其对象的引用。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。公共聊天室就会用到它。
当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁
l练习:
sessionStorage 、localStorage 和 cookie 之间的区别
sessionStorage 、localStorage 和 cookie 之间的区别 - 掘金
html知识点:
JS知识点:
这是一个闭包问题,原因是:js脚本是从上往下执行的,每次循环都会为每个elements[i]元素绑定一个click事件处理函数该函数监听click事件。当元素被点击时,该事件处理函数会被调用,并且该函数会显示一个弹窗,内容是当前的i值。 所有的事件处理函数共享同一个i变量,因此它们都会显示循环结束后的i值。
闭包问题:理解Js的闭包问题 - 掘金
JavaScript学习总结(三)——闭包、IIFE、原型、函数与对象-腾讯云开发者社区-腾讯云
上面的题目应该这样理解:js只有单线程,可以分为主线程和任务队列,主线程执行完后才从队列中拿出没有执行完的任务,这里的setTimeout就是把里面的任务放进任务队列中,而其他任务在主线程中。
深入理解 Javascript 运行机制及原型
1 | 事件执行 |