1.servlet定义
server applet,服务器小程序
2.servlet特点
a.指实i现了Servlet接口的类
b.servlet必须在支持servlet的服务器上才能运行
c.一个servlet负责处理一个或一组url请求,并返回响应数据
3.servlet运行流程
a.客户端通过url,发送请求给服务器
b.服务器调用servlet
c. servlet执行代码,返回数据给服务器
d.服务器返回数据给浏览器
e.浏览器解析数据,展示数据
4.urlPattern格式
a. /ccc
b. *.ccc
c. ccc/*
5.servlet生命周期
a.载入并初始化,init()方法,只执行一次
b.运行,service() :每当用户发请求时,服务器会创建一个线程,调用servlet的service()方法,父类有dopost,doget方法调用后会报405错误,子类需要重写doget,dopost方法;
servlet是单例调用:多个线程访问同一个对象,节约内存 。
6.单例模式:一个类只能创建一个实例
a. SingleTonEH 恶汉式:当加载类时,对象就已经存在
public class SingleTonEH{ //static表示一个类只执行一次 private static SingleTonEH instance =new SingleTonEH() //私有化构造器 private SingleTonEH(){ } //提供一个能获取该对象的方法 ,静态方法,只有一份 public static SingleTonEH getInstance(){ return instance; } } //LH lan汉式:当调用对象时再创建对象 public class SingleTonLH{ //新建一个空对象 private SingleTonLH instance =null //私有化构造器 private SingleTonEH(){ }
b. SingleTonLH 懒汉式:当调用该类的对象时,才创建对象
public class SingleTonLH{
//新建一个空对象
private SingleTonLH instance =null
//私有化构造器
private SingleTonEH(){
}
//提供一个能获取该对象的方法
,静态方法,只有一份
public static SingleTonLH getInstance(){
//当instance对象为空时才创建对象
if(instance==null){
//对象锁,避免多线程同时访问创建多个对象
synchronized(SingleTonLH.class){
//第二个判断不能省,可能出现2个线程都进入第一个判断里面
if(instance==null){
instance=new SingleTonEH()
}
}
}
return instance;
}
}