web综合总结
CSS样式选择器包括什么
- id选择器
- class选择器
- 子类选择器
- 后代选择器
- 元素选择器
- 属性选择器
- 伪类选择器
JSP中的四大作用域
- page域
- request域
- session域
- application域
get,post提交乱码的处理方式
- get提交的乱码问题
Tomcat8及以后不需要处理GET请求,默认是UTF-8编码!!!
而之前,则需要:
* 进行转码
* 或者设置tomcat中conf/server.xml中的URL编码为UTF-8
Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>中添加
Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
- post提交的乱码问题
- request.setCharacterEncoding(“utf-8”)
- 直接设置文字的utf编码为utf-8
tomcat服务器
一个tomcat服务器的启动大约占用内存量为半个g
Get和post区别
- get请求用来从服务器上获得资源,而post是用来向服务器提交数据;
- get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用"?“连接,而各个变量之间使用”&"连接;post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向的URL;
- get传输的数据要受到URL长度限制(1024字节);而post可以传输大量的数据, POST数据是没有限制的,上传文件通常要使用post方式;
- 使用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post;
- get使用MIME类型application/x-www-form-urlencoded的URL编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是"%20".
- Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost().
什么是http协议
在客户端和服务端之间,或者说是浏览器和服务器之间的,基于TCP/IP的一种应用层通信协议.
http协议基于请求响应模型,每一次请求都对应一次响应,首先客户端发送一个请求(request)给服务端,服务端在接收到这个请求后生成一个响应(response)返回给客户端.
http是一种无状态的协议,他对事务处理没有记忆能力,而缺少状态也就意味着如果需要后续处理之前发送的信息,就需要重新传送.
服务端无法识别能够触发客户端请求的方法.
cookie和session区别
- cookie:
- cookie是客户端(浏览器)的技术
- cookie的生命周期:通过setMaxAge()方法来设置
- cookie安全性较低,存储在cookie中的数据可能会被他人分析从而进行cookie欺骗
- cookie的数据存放在客户端上,不会占用服务端的性能,大量的数据适合存储在cookie中
- cookie在请求中将数据保存在cookie中传输给服务器,最终同样在cookie中返回客户端
- session:
- session是服务端的技术
- session的生命周期:
- 当程序第一次调用request.getSession()方法时创建session对象,session对象在默认30分钟没有被调用后自动销毁;
- session对象可以通过调用invalidate()方法自杀来销毁;
- session对象在服务器未正常关闭时会随着web应用的销毁而销毁,如果服务器正常关闭则session对象会钝化,在下一次服务器启动时session会活化.
- session安全性较高
- session的数据存放在服务器上,过多的数据会影响服务端的性能,降低处理数据的能力
- session将请求中的数据存在服务端的session对象中,最终将session的id作为cookie返回给客户端,再次请求时会将session的id传给服务端寻找请求对应的session
cookie和session有没有联系
肯定有,session是通过cookie来进行工作的
session的运行机制
- 当我们第一次通过浏览器访问对应的服务器的时候,服务器端会创建一个Session_id(唯一),并将整个id通过响应的方式,保存在浏览器的cookie中
- 当我们再次通过浏览器访问对应的服务器的时候,我们会根据对应cookie,在远程服务器进行一个校对,从而保证会话的一致性
提出问题:那么当cookie被禁用的时候,我们怎么对其进行session的使用呢?
当我们禁用cookie的时候,我们仍然可以使用url来携带对应的session_id来与远程服务器进行校对,从而保证session的一个机制,但是这样的访问时不安全,且不被我们所提倡的.
(由此可见,我们可以看到cookie和session的联系:session要基于cookie来实现其机制)
jsp
- jsp:jsp只有在第一次被访问(或者jsp被修改后),才会被翻译成一个servlet
- jsp和servlet的相同点和不同点:
- 相同点:jsp经编译后变成了servlet(jsp的本质就是servlet)
- 不同点:
- jsp更擅长表现于页面显示,servelt更擅长于逻辑控制
- servlet中没有内置对象,而jsp中的内置对象都是必须通过httpservletrequest,httpservletresponse,以及httpservlet对象得到
- JSP侧重于视图,servlet主要用于控制逻辑
servlet的三大作用域
- request
- request是表示一个请求,只要发出一个请求就会创建一个request.
- 它的作用域:仅在当前请求中有效.
- 用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递.
- 方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().
- session
- 服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享.
- 会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束.一次会话期间只会创建一个session对象.
- 用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对).
- 方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();
- application
- 作用范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留.Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据.
- ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;
- ServletContext对象一般用于在多个客户端间共享数据时使用;
request和response是由谁创建的
servlet由服务器进行实例化
且在servlet的生命周期中的service方法前进行创建request和response
故request和response是由服务器端进行创建的
Ajax技术整理
网络编程:可以从js随意发送请求并获得服务器得到的响应
是最早谷歌在05年提出的一个方案
总结:AJAX就是浏览器提供的一套API
可以发出请求的方式:
- 在地址栏输入地址
- 特定元素的href或者是src属性
- 表单提交
但是这些方案都是我们无法通过或者很难通过代码的方式进行编程(即对服务端发出请求并且接受服务端发送的响应)
- 异步刷新,局部加载
- 可以用于创建动态页面的技术
ajax实现原理:
- 当用户发起请求时,将请求发给ajax引擎
- 引擎告诉用户请等待
- 由ajax引擎负责请求服务器,获取服务器的资源
- ajax引擎获取服务器数据之后,将数据交给用户
服务器状态码
- 200请求已成功
- 301永久重定向 比较常用的场景是使用域名跳转
- 302临时跳转 比如未登陆的用户访问用户中心重定向到登录页面 已缓存
- 400客户端向服务器传递参数异常或语义有误
- 404请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体
- 405当服务端设置只能进行post提交method=RequestMethod.POST和(网页栏中输入的数据GET提交)客户端之间的请求方式不匹配的时候(即服务端与客户端之间数据的提交方式不匹配的时候)
- 406服务器返回数据参数异常
- 500后台服务器异常
- 502作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应.
- 504作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应.
什么是盒子模型
F12时右下角的css盒子
TCP和UDP的区别
- TCP是面向连接的,而UDP不需要建立连接,直接将应用程序传出去,故并不提供可靠性.故后者传输速度快
- TCP是面向字节流的,UDP是面向数据报的
- TCP保证数据的正确性,UDP可能会导致丢包
- TCP保证数据顺序,而UDP不能保证
cookie如何实现共享
设置cookie的domain属性
UDP协议
Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议.UDP为应用程序提供了一种无需建立连接就可以发送封装IP数据报的方法.
Internet的传输层有两个主要协议,互为补充.
无连接的是UDP,
面向连接的是TCP,该协议几乎做了所有的事情
为什么要先呈现页面,后呈现数据,而不是页面和数据一起呈现
- 数据加载通常是一个相对比较耗时操作,为了改善用户体验,可以先为用户呈现一个页面,数据加载时,显示数据正在加载中,数据加载完成以后再呈现数据.
- 满足现阶段不同类型客户端需求
- (将数据与页面的耦合程度极大的降低)
你知道网络协议到底有哪些吗?(几层)
通过OSI网络模型 7层
- 应用层HTTP,FTP
- 表示层
- 会话层
- 传输层TCP,UDP
前者需要经过三次握手,后者不需要 - 网络层
- 数据链路层
- 物理层
伪静态
原本可以使用.jsp来完成动态页面技术,那么为什么还是以html结尾呢?
答:为了增强搜索引擎对页面的曝光率,但如果使用html文件,那么就丧失了对动态页面友好的支持
(搜索引擎一般只收录静态页面)