1、网络通讯部分
1.1、 TCP 与 UDP 区别?
1.2、什么是 HTTP 协议?
1.3、TCP 的三次握手,为什么?
1.4、HTTP 中重定向和请求转发的区别?
1.5、 Get 和 Post 的区别?
2、cookie 和 session 的区别?
3、Jsp 和 Servlet
3.1、Jsp 和 Servlet 的区别?
3.2、Servlet 的生命周期
3.3、JSP 九大内置对象
4、Ajax 的介绍
1、网络通讯部分
1.1、 TCP 与 UDP 区别?
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于 IP 的传输层协议。UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是 OSI 参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP 和 UDP 都是来自于传输层的协议。传输层位于应用层和网络层之间,负责位于不同主机中进程之间的通信。
TCP 与 UDP 区别:
(1)TCP 基于连接 UDP 无连接(2)TCP 要求系统资源较多,UDP 较少(3)TCP 保证数据正确性,UDP 可能丢包(4)TCP 保证数据顺序,UDP 不保证
1.2、什么是 HTTP 协议?
客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。是一个基于请求与响应模式的、无状态的、应用层的协议,基于 TCP 的连接方式
1.3、TCP 的三次握手,为什么?
为了准确无误地把数据送达目标处,TCP 协议采用了三次握手策略。
为什么要三次握手?三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是 双方确认自己与对方的发送与接收是正常的。SYN:同步序列编号(Synchronize Sequence Numbers)。是 TCP/IP 建立连接时使用的握手信号。第一次握手:客户端给服务器发送一个 SYN。客户端发送网络包,服务端收到了。服务器得出结论:客户端的发送能力,服务端的接收能力正常。第二次握手:服务端收到 SYN 报文之后,会应答一个 SYN+ACK 报文。服务端发包,客户端收到了。客户端得出结论:服务端的接收和发送能力,客户端的接收和发送能力正常。但是此时服务端不能确认客户端的接收能力是否正常。第三次握手:客户端收到 SYN+ACK 报文之后,回应一个 ACK 报文。客户端发包,服务端收到了。服务器得出结论:客户端的接收和发送能力,自己的接收发送能力都正常。通过三次握手,双方都确认对方的接收以及发送能力正常
1.4、HTTP 中重定向和请求转发的区别?
转发:用 request 的 getRequestDispatcher()方法得到 ReuqestDispatcher 对象, 调用 forward()方法 request.getRequestDispatcher("success.jsp").forward(request,response);重定向:调用 response 的 sendRedirect()方法 response.sendRedirect("success.jsp");
区别:
- 重定向 2 次请求,请求转发 1 次请求
- 重定向地址栏会变,请求转发地址栏不变
- 重定向是浏览器跳转,请求转发是服务器跳转
- 重定向可以跳转到任意网址,请求转发只能跳转当前项目
1.5、 Get 和 Post 的区别?
1. Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说都是不可见的。2. Get 传送的数据量较小,一般传输数据大小不超过 2k-4k(根据浏览器不同,限制不一样,但相差不大这主要是因为受 URL 长度限制;Post 传送的数据量较大,一般被默认为不受限制。3. Get 限制 Form 表单的数据集的值必须为 ASCII 字符;而 Post 支持整个 ISO10646字符集。4. Get 执行效率却比 Post 方法好。Get 是 form 提交的默认方法。
2、cookie 和 session 的区别?
(1)存储位置不同cookie 的数据信息存放在客户端浏览器上。session 的数据信息存放在服务器上。(2)存储容量不同单个 cookie 保存的数据<=4KB,一个站点最多保存 20 个 Cookie。对于 session 来说并没有上限,但出于对服务器端的性能考虑,session 内不要存放过多的东西,并且设置 session 删除机制。(3)存储方式不同cookie 中只能保管 ASCII 字符串,并需要通过编码方式存储为 Unicode 字符或者二进制数据。session 中能够存储任何类型的数据,包括且不限于 string,integer,list,map 等。( 4)隐私策略不同cookie对客户端是可见的,别有用心的人可以分析存放在本地的cookie并进行cookie欺骗,所以它是不安全的。session 存储在服务器上,不存在敏感信息泄漏的风险。(5)有效期上不同开发可以通过设置 cookie 的属性,达到使 cookie 长期有效的效果。session 依赖于名为 JSESSIONID 的 cookie,而 cookie JSESSIONID 的过期时间默认为-1,只需关闭窗口该 session 就会失效,因而 session 不能达到长期有效的效果。(6)服务器压力不同cookie 保管在客户端,不占用服务器资源。对于并发用户十分多的网站,cookie 是很好的选择。session 是保管在服务器端的,每个用户都会产生一个 session。假如并发访问的用户十分多,会产生十分多的 session,耗费大量的内存。
3、Jsp 和 Servlet
3.1、Jsp 和 Servlet 的区别?
相同点:jsp 经编译后就变成了 servlet,jsp 本质就是 servlet,jvm 只能识别 java 的类,不能识别 jsp 代码,web 容器将 jsp 的代码编译成 jvm 能够识别的 java 类。其实就是当你通过http 请求一个 JSP 页面是,首先 Tomcat 会调用 service()方法将JSP编译成为 Servlet,然后执行 Servlet。
不同点:JSP 侧重视图,Sevlet 主要用于控制逻辑。Servlet 中没有内置对象 。JSP 中的内置对象都是必须通过 HttpServletRequest 对象,HttpServletResponse 对象以及 HttpServlet 对象得到。
3.2、Servlet 的生命周期
// 1. servlet 对象创建时,调用此方法
public void init(ServletConfig servletConfig);
// 2. 用户访问 servlet 时,调用此方法
public void service(ServletRequest servletRequest, ServletResponse servletResponse);
// 3. servlet 对象销毁时,调用此方法
public void destroy();
3.3、JSP 九大内置对象
out 对象:用于向客户端、浏览器输出数据。request 对象:封装了来自客户端、浏览器的各种信息。response 对象:封装了服务器的响应信息。exception 对象:封装了 jsp 程序执行过程中发生的异常和错误信息。config 对象:封装了应用程序的配置信息。page 对象:指向了当前 jsp 程序本身。session 对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数application 对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。pageContext 对象:提供了对 jsp 页面所有对象以及命名空间的访问。
4、Ajax 的介绍
Ajax 即"Asynchronous JavaScript And XML"(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
$.ajax({
选项
})
常见的选项有:
type:请求方式,常见的值有"get","post"等,默认值:get
url:请求的路径,"/ajax/hello"
data:请求的参数,参数的常见写法有 键值对或者 json
方式 1: name=tom&pwd=123
方式 2: {"name":"tom","pwd":"123"}
success:请求成功后的回调函数 function(返回值的参数名){}
contentType:用来设置请求参数的 mime 类型,默认值:表单的 enctype 默认值
name=tom&pwd=123
error:ajax 请求时内部发生错误时执行的回调函数 function(){}
dataType:指定返回值的类型 常见值:text json
async:是否异步 默认值 true
Ajax 应用程序的优势在于:1)通过异步模式,提升了用户体验2)优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用3)Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。