24@Servlet_day04
1、dao
1)什么是dao?
data access object(数据访问对象)
封装了数据访问逻辑的模块。
2)如何写一个dao?
step1 实体类
就是一个普通的java类,该java类与要操作的表对应。
比如,Employee类。
step2 dao接口
step3 dao实现类
step4 工厂
a,什么是工厂?
是一种“设计模式", 主要思想是,封装了一个对象的制造过程,为调用者提供符合特定接口要求的对象。
b,如何写一个工厂?
2、如何插入中文数据到数据库
step1 在.html文件当中,使用<meta http-equiv="content-type" content="text/html;charset=utf-8"> 并且设置表单的提交方式为post。
step2 调用request.setCharacterEncoding("utf-8");
step3 使用useUnicode=true&characterEncoding=utf8;
告诉jdbc驱动程序数据库中的数据的编码是utf8;
3、servlet的生命周期及相关的接口与类
1)servlet的生命周期
a,生命周期的含义:
servlet容器如何去创建servlet对象、分配其资源、调用service方法处理请求、以及销毁servlet对象的整个过程。
b,生命周期的四个阶段:
阶段一:实例化
在默认情况下,当请求到达容器时,容器会先查看要调用的servlet对象是否存在;如果不存在,则创建;否则,不会再创建了。
可以通过修改web.xml配置文件<load-on-startup>num</load-on-startup>。
容器启动时,会检查配置文件,如果某个servlet有load-on-startup参数,则会先创建好该servlet对象。num>=0,值越小,优先级越高。
阶段二:初始化
为刚刚创建的servlet对象分配资源。
容器会调用servlet对象的init方法。
如果要实现自己的初始化逻辑,可以选择override init()方法。
阶段三: 就绪
当容器收到请求后,会调用servlet对象的service方法来处理。
阶段四:销毁
容器会在销毁servlet对象之前,调用其destroy方法。
2)核心类与接口
a, Servlet接口:
init(ServletConfig config): 用于初始化,容器会事先创建好ServletConfig对象。
这个方法只会执行一次。
destroy():容器在销毁servlet对象之前,会调用该方法。
这个方法也只会执行一次。
service(ServletRequest request,ServletResponse response):容器收到请求后,会调用该方法来处理请求。
b,ServletConfig接口:
//获得servlet的初始化参数值
String getInitParameter(String paraName);
c,ServletRequest接口:是HttpServletRequest的父接口
d,ServletResponse接口:是HttpServletResponse的父接口
e,GenericServlet抽象类:
实现了Servlet接口中的init和destroy方法。
f,HttpServlet抽象类:
继承了GenericeServlet,实现了service方法。
该service方法会依据请求方式调用对应的doGet/doPost方法,而doGet/doPost方法会抛出异常,需要去override这两个方法才可以正常执行。