二、Java Web
1. jdbc 技术
1.1 说一下原生 JDBC 操作数据库流程?
第一步:Class.forName()加载数据库连接驱动;
第二步:DriverManager.getConnerction() 获取数据连接对象;
第三步: 根据SQL 获取sql回话对象,有两种,Statement.PreparedStatement;
第四步: 执行SQL处理结果集,执行SQL前如果有参数值就设置参数值setXXX();
第五步: 关闭结果集,关闭回话,关闭连接。
1.2 说说事务的概念,在JDBC编程中处理事务步骤
1.事务是作为单个逻辑单元执行的一系列操作
2.一个逻辑工作单元必须有四个属性,称作原子性,一致性,隔离性和持久性(ACID)属性,只有这样才能一个事务处理步骤:
3.conn.setAutoComit(false) 设置提交方式为手动提交
4.conn.commit()提交事务
5.出现异常,回滚 conn.rollback();
1.3 JDBC的脏读是什么?哪种数据库隔离级别能够防止脏读?
当我们使用事务时,有可能会出现这样的情况,有一行数据刚更新,与此同 时另一个查询读到了这个刚更新的值。这样就导致了脏读,因为更新的数据还没 有进行持久化,更新这行数据的业务可能会进行回滚,这样这个数据就是无效的。 数据库的 TRANSACTIONREADCOMMITTED ,TRANSACTIONREPEATABL EREAD 和 TRANSACTION_SERIALIZABLE 隔离级别可以防止脏读。
2 网络通讯部分
2.1 TCP 与 UDP 的区别?
UDP:
a.是面向无连接,将数据及源的封装成数据包中,不需要建立连接
b.每个数据包的大小限制在64k内
c.因无连接,是不可靠协议
d.不需要建立连接,速度快
TCP:
a.建立连接,形成传输数据的通道
b.在连接中进行大数据量传输,以字节流方式
c.通过三次握手完成连接,是可靠协议
d 必须建立连接效率会稍低.聊天.网络视频会议就是UDP
2.2 说一下什么是Http协议?
客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协 议”。是一个基于请求与响应模式的.无状态的.应用层的协议,基于TCP的连接 方式
2.3 get与post请求区别?
区别1:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别2:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL 后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/LogI n.action?name=admin&password=admin,这个过程用户是可见的; post传输数据通过Http的post机制,将字段与对应值封存在请求实体中 发送给服务器,这个过程对用户是不可见的;
区别3:
Get传输的数据量小,因为受URL长度限制,但效率较高; Post可以传输大量数据,所以上传文件时只能用Post方式;
区别4:
Get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等; Post较get安全性较高; 区别5: get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。 post支持标准字符集,可以正确传递中文字符
-
3 http中重定向和请求转发的区别?
本质区别:转发是服务器行为,重定向是客户端行为。
重定向特点:两次请求,浏览器地址发生变化,可以访问自己 web 之外的 资源,传输的数据会丢失。
请求转发特点:一次请求,浏览器地址不变,访问的是自己本身的 web 资 源,传输的数据不会丢失
-
4 Cookie 和 Session
Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文 件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发 送请求时,同时会发送所有为该服务器存储的 cookie。
Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户 会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储 在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
Cookie 和 session 的不同点:
1.无论客户端做怎样的设置,session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。 2.在存储的数据量方面:session 能够存储任意的 java 对象,cookie 只 能存储 String 类型的对象。 -
5 Servlet的执行流程
Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生 命周期开始,然后过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》方法初始化servlet,再根据不同请求调用doGet或doPost方 法,最后再通过destroy()方法进行销毁。 -
6 Jsp和Servlet的区别
你可以将JSP当做一个可扩充的HTML来对待。 虽然在本质上JSP文件会被服务器自动翻译为相应的Servlet来执行。 可以说Servlet是面向Java程序员而JSP是面向HTML程序员的,除此之 外两者功能完全等价
2.7 JSP九大内置对象
pageContext :只对当前 jsp 页面有效,里面封装了基本的 request 和 session的对象
Request :对当前请求进行封装
Session :浏览器会话对象,浏览器范围内有效
Application :应用程序对象,对整个web工程都有效
Out :页面打印对象,在jsp页面打印字符串 Response :返回服务器端信息给用户
Config :单个servlet的配置对象,相当于servletConfig对象
Page :当前页面对象,也就是this
Exception :错误页面的exception对象,如果指定的是错误页面,这个就 是异常对象
2.8 JSP的三大指令
Forward:执行页面跳转,将请求的处理转发到另一个页面
Param :用于传递参数
Include :用于动态引入一个jsp页面
Plugin :用于下载javaBean或applet到客户端执行
useBean :使用javaBean
setProperty :修改javaBean实例的属性值
getProperty :获取javaBean实例的属性值
2.9 谈谈你对 Ajax 的认识?
Ajax 是一种创建交互式网页应用的的网页开发技术;“Asynchronous JavaScript and XML”的缩写。
2.10 Ajax创建的过程?
1.创建 XMLHttpRequest 对象,也就是创建一个异步调用对象
2.创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信 息 3.设置响应 HTTP 请求状态变化的函数
4.发送 HTTP 请求
5.获取异步调用返回的数据
6.使用 JavaScript 和 DOM 实现局部刷新
2.11 阐述一下异步加载 JS
1.异步加载的方案: 动态插入 script 标签
2.通过 ajax 去获取 js 代码,然后通过 eval 执行
3.script 标签上添加 defer 或者 async 属性
4.创建并插入 iframe,让它异步执行 js
2.12 ajax 请求时,如何解释 json 数据
使用 eval() 或者 JSON.parse() 鉴于安全性考虑,推荐使用 JSON.parse() 更靠谱,对数据的安全性更好.
2.13 Ajax 提交请求 默认是 异步还是同步,怎么改成同步
控制 ajax 请求参数 async 属性的值可以切换成同步请求或异步请求。 同步请求:(false)同步请求即是当前发出请求后,浏览器什么都不能做,必 须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,前一个 人办理完自己的事务,下一个人才能接着办。也就是说,JS 代码加载到当前 AJAX 的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个 AJAX 执行完毕后才会继续运行其他代码页面解除假死状态。 异步请求:(true) 异步请求就当发出请求的同时,浏览器可以继续做任何 事,Ajax 发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上, 各走各的,互不影响。
例子:
$.ajax({
url:"url",
type:"post",
async:false,
success:function(){代码}});
2.14 如何解决 ajax 跨域问题
跨域问题来源于 JavaScript 的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说 JavaScript 只能访问和操作自己域 下的资源,不能访问和操作其他域下的资源。跨域问题是针对 JS 和 ajax 的, html 本身没有跨域问题
跨域问题解决方案
1.响应头添加 Header 允许访问 跨域资源共享(CORS)Cross-Origin Resource Sharing 这个跨域访问的解决方案的安全基础是基于"JavaScript 无法控制该 HTTP 头"它需要通过目标域返回的 HTTP 头来授权是否允许跨域访问 具体如下: response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来 源访问 response.addHeader(‘Access-Control-Allow-Method:POST,GET’);// 允许访问的方式
2、jsonp (只支持 get 请求不支持 post 请求) 用法:
①dataType 改为 jsonp
②jsonp : "jsonpCallback"(发送到后端实际例子: a.a.com/a/FromServl… Queryxxx)
③后端获取 get 请求中的 jsonpCallback ④构造回调结构
3、httpClient 内部转发 实现原理例子:若想在 B 站点中通过 Ajax 访问 A 站点获取结果,固然 有 ajax 跨域问题,但在 B 站点中访问 B 站点获取结果,不存在跨域问题, 这种方式实际上是在 B 站点中 ajax 请求访问 B 站点的 HttpClient,再通过 HttpClient 转发请求获取 A 站点的数据结果。但这种方式产生了两次请求, 效率低,但内部请求,抓包工具无法分析,安全 4、使用接口网关——nginx、springcloud zuul (互联网公司常规解决方案)
2.15 Ajax 的优势
通过异步模式,提升了用户体验。 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占 用。 Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减 少了大用户量下的服务器负载。
2.16 请介绍下 Jsonp 原理
jsonp 的最基本的原理是:动态添加一个