Servlet学习笔记

来源:互联网 发布:yankee 知乎 编辑:程序博客网 时间:2024/06/10 13:15

Tomcat容器等级的简单介绍:

Engine:引擎容器 Host:主机容器 Servlet容器管理多个Context上下文容器

Servlet工作的生命周期:

1.装载Servlet类并且创建实例(只实例化一次)
2.初始化阶段,调用init()方法(只初始化一次),在Servlet对象创建之后调用
3.响应客户端的请求阶段,调用service()方法,根据提交方式选择doGet()方法和doPost()方法
4.终止阶段,销毁实例前调用destroy()方法,注意:Servlet是多线程单实例的

开发Servlet的三种方法:

1.继承HttpServlet类  2.继承GenericServlet类  3.实现Servlet接口

Servlet中的细节问题:

1.一个已经注册的Servlet可以被多次映射

2.当映射一个Servlet时,可以多层映射

<url-pattern>/servlet/index.html</url-pattern>  

在Servlet使用通配符映射到URL:

其中有两种使用格式:

第一种格式:\*.扩展名,比如\*.do,\*.ss第二种格式:以/开头,同时以/* 结尾,比如/*,/news/* 

常见的匹配问题案例介绍:

1、当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应,Servlet引擎将调用/abc/*2.当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应,Servlet引擎将调用/abc3.当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应,Servlet引擎将调用/abc/*4.当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应,Servlet引擎将调用/*5.当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应,Servlet引擎将调用/*

最后总结在匹配的时候,要参考的标准:

1.看谁的匹配度高,谁就被选择  2.*.do 的优先级最低

Servlet中的注意事项:

1.Servlet类是单例,多线程的,所以要注意线程同步情况,也就是线程不安全的2.不要重写构造方法,因为所继承的HttpServlet及其父类都已经对构造方法进行了某些初始化,当不了解这些系统自带的初始化,然后盲目使用构造方法,可能导致Servlet无法创建实例3.不要重写service方法(在继承HttpServlet的情况下),因为其内部有判别客户端请求方法的逻辑和一些其他逻辑4.当想用一种逻辑去处理Get和Post请求,可以采用委托机制,在doPost方法内加入this.doGet(request,response);或者在doGet方法中加入this.doPost(request,response);

Servlet的多线程处理

Servlet多线程工作原理:

Servlet域的线程安全情况:

Servlet并发注意事项:

0 0
原创粉丝点击