1、说一说Servlet的生命周期?
答: Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
2、Servlet API中forward()与redirect()的区别?
答:1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.所以redirect等于客户端向服务器端发出两次request,同时也接受两次response。
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.
forward方法只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作.
redirect 是服务器通知客户端,让客户端重新发起请求.
所以,你可以说 redirect 是一种间接的请求, 但是你不能说"一个请求是属于forward还是redirect "
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
3、request.getAttribute()和 request.getParameter()有何区别?
答:1,request.getParameter()取得是通过容器的实现来取得通过类似post,get等方式传入的数据。request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
2,getAttribute是返回对象,getParameter返回字符串。
3,getAttribute()一向是和setAttribute()一起使用的,只有先用setAttribute()设置之后,才能够通过getAttribute()来获得值,它们传递的是Object类型的数据。而且必须在同一个request对象中使用才有效。,而getParameter()是接收表单的get或者post提交过来的参数。
4、jsp有哪些内置对象?作用分别是什么?
答: JSP共有以下9个内置的对象:
1,request 用户端请求,此请求会包含来自GET/POST请求的参数
2,response 网页传回用户端的回应
3,pageContext 网页的属性是在这里管理
4,session 与请求有关的会话期
5,application servlet 正在执行的内容
6,out 用来传送回应的输出
7,config servlet的构架部件
8,page JSP网页本身
9,exception 针对错误网页,未捕捉的例外
5、MVC的各个部分都有那些技术来实现?如何实现?
答:MVC是Model-View-Controller的简写。Model代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),View是应用的表示面(由JSP页面产生),Controller是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
6、Http中,get和post方法的区别?
答:
- get请求参数显示在地址栏。post不显示。
- get请求数据大小有限制,post无限制。
- Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
7、什么是cookie?Session和cookie有什么区别?
答:
- Cookie是会话技术,将用户的信息保存到浏览器的对象.
- cookie数据存放在客户的浏览器上,session数据放在服务器上 ,cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session ,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE,单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
8、jsp和servlet的区别、共同点、各自应用的范围?
答:JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
9、JDBC访问数据库的基本步骤是什么?
答:利用到的技术,简单工程,代理,反射等方式。
- 加载驱动
- 通过DriverManager对象获取连接对象Connection
- 通过连接对象获取会话
- 通过会话进行数据的增删改查,封装对象
- 关闭资源
10、说说事务的概念,在JDBC编程中处理事务的步骤?
答:事务是指一个逻辑处理的一系列操作。事务由4个特性:原子性,持久性,隔离性,一致性。
- 原子性
一个原子事务要么完整执行,要么干脆不执行。 这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务
执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。 - 一致性
一致性代表了底层数据存储的完整性。 它必须由事务系统和应用开发人员共同来保证。事务系统通过保证事务的原子性,隔离性和持久性来满足这一要求; 应用开发人员则需要保证数据库有适当的约束(主键,引用完整性等),并且工作单元中所实现的业务逻辑不会导致数据的不一致(即,数据预期所表达的现实业务情况不相一致)。例如,在一次转账过程中,从某一账户中扣除的金额必须与另一账户中存入的金额相等。 - 隔离性
隔离性意味着事务必须在不干扰其他进程或事务的前提下独立执行。 换言之,在事务或工作单元执行完毕之前,其所访问的数据不能受系统其他部分的影响。 - 持久性
持久性表示在某个事务的执行过程中,对数据所作的所有改动都必须在事务成功结束前保存至某种物理存储设备。 这样可以保证,所作的修改在任何系统瘫痪时不至于丢失。
事务处理步骤:conn.setAutoComit(false);设置提交方式,conn.commit()提交事务,出现异常,回滚 conn.rollback();
11、数据库连接池的原理。为什么要使用连接池?
答:
- 池:可以节省对象重复创建和初始化所耗费的时间。对那些被系统频繁请求和使用的对象,使用此机制可以提高系统运行性能。是一种”以空间换时间”的做法,我们在内存中保存一系列整装待命的对象,供人随时差遣。
- 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及性能调整提供依据。
- 使用连接池,可以提高系统效率,提高对数据库连接资源的管理。
12、JDBC的脏读、幻读、不可重复读是什么?哪种数据库隔离级别能防止?
答:
数据库提供4中事务隔离:
由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable
-
脏读:
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 -
幻读:
是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。 -
不可重复读:
是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(即不能读到相同的数据内容)
例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。
隔离 | 脏读 | 幻读 | 不可重复读 |
---|---|---|---|
Read uncommitted (读未提交) | √ | √ | √ |
Read committed (读提交) | × | √ | √ |
Repeatable read (重复读) | × | √ | × |
Serializable (序列化) | × | × | × |
13、AJAX有哪些有点和缺点?
答:
优点:
- 最大的一点是页面无刷新,用户的体验非常好。
- 使用异步方式与服务器通信,具有更加迅速的响应能力。
- 可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
- 、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
缺点: - ajax不支持浏览器back按钮。
- 安全问题 AJAX暴露了与服务器交互的细节。
- 对搜索引擎的支持比较弱。
- 破坏了程序的异常机制。
- 不容易调试。
14、Ajax的实现流程是怎样的?
答:
- 创建XMLHttpRequest对象,也就是创建一个异步调用对象.
- 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
- 设置响应HTTP请求状态变化的函数.
- 发送HTTP请求.
- 获取异步调用返回的数据.
- 使用JavaScript和DOM实现局部刷新.
PS: 具体例子的话请百度,或私密我。
15、简单说一下数据库的三范式?
答:
- 第一范式:数据库表的每一个字段都是不可分割的
- 第二范式:数据库表中的非主属性只依赖于主键
- 第三范式:不存在非主属性对关键字的传递函数依赖关系