ee、se自我小结

 

  1. servlet的生命周期

 

1.加载和实例化:当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。

2.init() 初始化servlet 只会执行一次load-on-startup 默认-1 意思是第一次被访问时创建

3.service() 服务 每当客户端请求一个HttpServlet对象时,该对象的service()就会调用一次

4.destory() 销毁 在servlet被销毁前执行只会执行一次

 

2、servlet的三大域对象

request 每次请求都会创建一个request,作用域仅在当前请求中有效

session  每次会话都会创建一个session对象,作用域是当前会话中默认存在时间是30min.

Application (ServletContext)服务器创建时存在 作用域是整个服务器

 

3.request和respond的所有方法

request.getParameter(arg0) 取得参数

request.setAttribute(arg0, arg1) 在request域中设置值

request.removeAttribute(arg0) 从request域中移除值

request.getMethod() 取得请求方式  值为GET/POST

request.getContextPath() 动态取得当前项目的 /项目名 重定向要用到

request.getRequestURI() 当前servlet的访问的使用路径

request.getRemoteAddr() 取得ip地址

request.getServletPath() 取得访问servlet的路径

request.getCookies() 取得浏览器访问时携带的所有cookie对象

request.setCharacterEncoding(arg0) 设置参数的字符编码

request.getSession() 创建/取得 一个session对象

request.getParameterValues(arg0)

 

response.addCookie(arg0);为浏览器响应回一个cookie对象

response.addHeader(arg0, arg1); 添加响应头信息

response.setHeader(arg0, arg1); 设置响应头信息

response.getWriter() 返回响应流对象PrintWriter out

response.sendRedirect(arg0);重定向

response.setContentType(arg0); 设置响应流的字符编码

 

4.实现Servlet接口的三种方法

1、Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。

2、HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

3、HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

 

5. 八大监听器

 

(1)ServletContextListener:Servlet的上下文监听,它主要实现监听ServletContext的创建和删除。该接口提供了两种方法

1.contextInitialized(ServletContextEvent event);通知正在收听的对象,应用程序已经被加载和

2.contextDestroyed(ServletCotextEvent event);通知正在收听的对象,应用程序已经被载出,即关闭。

(2)ServletAttributeListener:主要实现监听ServletContext属性的增加,删除和修改。该接口提供了一下3个方法

1.attributeAdded(ServletContextAttributeEvent event);当有对象加入Application的范围时,通知正在收听的对象

2.attributeReplaced(ServletContextAttributeEvent event);当在application的范围有对象取代另一个对象的时,通知正在收听的对象

3.attributeRemoved(ServletContextAttributeEvent event);当有对象从application的范围移除时,通知正在收听的对象

(3)HttpSessionListener; HTTP会话监听,该接口实现监听HTTP会话创建、销毁。该接口提供了一下两种方法

1.sessionCreated(HttpSessionEvent event):通知正在收听的对象,session已经被加载及初始化

2. sessionDestoryed(HttpSessionEvent event):通知正在收听的对象,session已经被载出(HttpSessionEvent类的主要方法是getSession(),可以使用该方法回传一个session对象)

(4)HttpSessionActivationListener:该接口实现监听HTTP会话active和passivate。 该接口提供了一下3个方法

1.attributeAdded(HttpSessionBindingEvent event);当有对象加入session的范围时,通知正在收听的对象

2.attributeReplaced(HttpSessionBindingEvent event);当在session的范围有对象取代另一个对象时,通知正在收听的对象。

3.attributeRemoved(HttpSessionBindingEvent event);当有对象从session的范围有对象取代另一个对象时,通知正在收听的对象 其中HttpSessionBindingEvent类主要有三个方法:getName()、getSession()和getValue()

(5)HttpBindingListener:接口实现监听HTTP会话中对象的绑定信息。它是唯一不需要在web.xml中设定Listener的。该接口提供了以下2个方法

1.valueBound(HttpSessionBindingEvent event);当有对象加入session的范围时会被自动调用

2.valueUnBound(HttpSessionBindingEvent event);当有对象从session的范围内移除时会被自动调用

(6)HttpSessionAttributeListener; 该接口实现监听HTTP会话中属性的设置请求。该接口提供了以下两个方法。

1.sessionDidActivate(HttpSessionEvent event);通知正在收听的对象,它的session已经变为有效状态。

2.sessionWillPassivate(HttpSessionEvent event);通知正在收听的对象,它的session已经变为无效状态

(7)ServletRequestListener;该接口提供了以下两个方法。

1.requestInitalized(ServletRequestEvent event):通知正在收听的对象,ServletRequest已经被加载及初始化

2.requestDestroyed(ServletRequestEvent event):通知正在收听的对象,ServletRequest已经被载出,即关闭

(8)ServletRequestAttributeListener:该接口提供了一下三种方法

1.attributeAdded(ServletRequestAttributeEvent event):当有对象加入request的范围时,通知正在收听的对象

2.attributeReplaced(ServletRequestAttributeEvent event); 当在request的范围内有对象取代两一个对象时,通知正在收听的对象

3.attributeRemoved(ServletRequestAttributeEvent event); 当有对象从request的范围移除时,通知正在收听的对象

 

6.jsp和servlet的区别有以下几点:

 

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。

1、jsp经编译后就变成了Servlet。

2、jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。

3、Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletResponse对象以及HttpServlet对象得到。

4、而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

 

6、doGet和doPost方法的区别

 

1.GET提交的数据放在URL中,POST则不会。

2.GET回退浏览器无害,POST会再次提交请求

3.GET提交的数据大小有限制,POST没有

4.GET可以被保存为书签,POST不可以。这一点也能感受到。

5.GET能被缓存,POST不能

6.GET只允许ASCII字符,POST没有限制

7.GET会保存再浏览器历史记录中,POST不会。这点也能感受到。

 

7、转发和重定向的区别

forward转发是服务器行为 请求一次 地址栏不会发生改变,只能请求当前web服务器内的资源,数据不会发生丢失

redirect重定向是客户端行为,请求两次(不同的请求),地址栏发生改变,可以请求其他服务器内的资源,数据会发生丢失

 

8、jsp的四大域对象

从小到大分别是

1.PageContext 指定在当前页面传输数据,

2.Request 一次请求中(请求没有中断),可以转发

3.Session 一次会话中,默认session30min自动销毁

4.Application(ServletContext) 整个web服务器

 

9.九大内置对象

 

request:请求对象,触发服务调用的请求。

response:服务响应对象,对请求的应答。

session:session会话对象,为请求的客户创建一个session对象。

application:从servlet配置对象中获得servlet上下文。

out:输出流对象。

pageContext:页面的上下文。

page:实现处理本页当前请求的类的实例。

config:配置对象。

exception:异常对象。

 

10.cookie与session的区别

 

1.cookie是客户端会话技术,数据存在客户端,session是服务器会话技术,数据存在web服务器上

2.cookie不安全,session安全

3.cookie保存的数据不能超过4kb,同一个服务器的cookie不能超过20个 session

4.cookie只能存储String类型,session可以存任意的Java类型

5.cookie用于在不登陆的情况下对用户的身份识别,session依赖于cookie在服务器端对用户身份识别

 

session创建流程

1.客户端请求session,在服务器端会创建一个新的session对象 ,并创建一个唯一标识 sessionid

2.服务器发送响应给客户端,响应头:Set-Cookie中携带着 sessionid

3.客户端下次发送请求时,请求头cookie会携带着sessionid发送给服务器.

4.服务器自动获取cookie信息并根据cookie中携带着的sessionid找与之对应的对象.

 

11、jdbc的执行流程

1.注册驱动

2.建立数据库连接

3.获取数据库操作对象

4.定义SQL

5.获取执行SQL对象,执行SQL

6.获取并处理结果集

7.关闭结果集,数据库操作对象,数据库连接对象

 

12、ArrayList和linkedlist的区别

ArrayList 底层是可变数组 查询快,增删慢

LinkedList 底层是双向链表 增删快,查询慢

 

13、map集合的遍历方式

1.通过map.keySet()获取键集合,然后根据map.get(key)获取值 ,可以使用迭代器和增强for遍历

2.通过map.entrySet()获取集合中每一个entry对象,然后变量Set集合取出每一个entry对象的键 entry.getKey()和值entryValue()

 

14、面向对象的特征

封装:利用数据及数据类型将实现细节封装成类或者方法,对外提供公共访问的方式

继承:是实现类的共性抽取.

多态:一个对象的多种形态,编译类型与运行时类型

 

15、接口和抽象类的区别

1.接口中的方法修饰符只能是public,抽象类中可以使用public,protected,default修饰

2.接口允许多重继承,抽象类不允许

3.接口不能有私有方法和私有变量,抽象类可以有私有方法和私有变量

4.接口中所有的方法都是抽象的,抽象类中可以包含普通方法

5.接口中不能定义构造器,抽象类中可以定义构造器用于子类完成抽象类的初始化

 

16、异常的分类

异常分为两大类 Error Exception

Error是程序无法处理的错误,JVM出现的问题

Exception分为运行时异常和编译期异常

 

17、重写和重载的区别

重写出现的前提是继承 子类存在和父类同名的方法,参数列表和返回值相同

重载一个类中出现多个同名方法,但是参数列表和返回值不同

 

18、创建多线程的实现方式,以及如何实现

1.继承Thread类,重写run()方法,调用start()方法

2.实现Runnable接口,重写run()方法,调用start()方法

3.线程池创建 (ExecutorService)

4.实现Callable接口,然后重写call()方法  //进阶知识点

 

19、线程的生命周期五种状态

1.新建 new Thread,new关键字

2.就绪runnable,调用start()、yield()

3.运行running调用run()方法

4.死亡 dead,run()、call()、stop()方法结束后

5.阻塞 block,sleep()、notify()、suspend()

 

20、wait和sleep的区别

wait()是Object类的方法,sleep()是Thread类的方法

sleep()没有释放锁,而wait()释放了锁,使得其他线程可以使用同步控制块或者方法

wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep()可以在任何地方使用

 

21、反射的三种实现方式

1.Object类的getClass();

2.对象名.class

3.Class.forName("");

 

22、事务的特性以及隔离级别事务有四大特性

1.原子性:每个事务都是一个整体不可拆分

2.一致性:事务在执行前与执行后数据的状态一致

3.隔离性:事务之间互不影响

4.持久性:事务执行成功,对数据库的数据的修改就是永久性的.

 

隔离级别:

read uncommitted:读未提交

产生的问题:脏读、不可重复读、幻读

read committed:读已提交 (Oracle)

产生的问题:不可重复读、幻读

repeatable read:可重复读 (MySQL默认)

产生的问题:幻读

serializable:串行化

可以解决所有的问题

 

脏读:  一个事务读取到了另一个事务中尚未提交的数据

虚读(不可重复读):一个事务中两次读取的数据内容不一致, 这是事务 update 时引发的问题

幻读: 一个事务中两次读取的数据的数量不一致,这是 insert或 delete 时引发的问题

 

23、三大范式

1NF : 每一列都是不可分割的原子数据项,表中的每一列都不可拆分.

2NF: 简单记 在1NF的基础上,不产生局部依赖, 就是表中的每一个字段都完全依赖于主键.

3NF: 在2NF的基础上,不产生传递依赖,表中所有的列不依赖与其他非主键的列.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值