什么是Servlet:用java编写的服务器程序
Servlet介绍:1.Servlet其实就是java程序(java类)
2.该java程序(java类)要遵循Servlet开发规范
3.Servlet运行在服务器端
4.功能强大
Tomcat的三个功能:1.web服务器 2.jsp容器 3.Servlet容器
Servlet在web应用中的位置如图所示,位于classes文件夹中:
Servlet的三种开发方式:
a.实现Servlet接口
b.继承GenericServlet
c.继承HttpServlet
首先介绍第一种实现Servlet接口开发,这种是最早的开发方式,现在已经不再使用,但是能帮助我们很好地理解Servlet的生命周期
Servlet开发要实现Servlet接口的五个方法:
补充:Servlet是线程不安全的,类似于单例模式,多台机器共用一个Servlet。
面试题:请简述Servlet的生命周期(工作流程)
答:1.当Servlet第一次被启动时,会触发init()函数,该函数会把Servlet实例装载到内存(注意:init()函数只会被调用一次)
2.然后去调用Servlet的service()函数。
3.当第二次访问该Servlet,就直接调用service函数,因为Servlet的init()函数只会被调用一次。
4.当web应用reload或者关闭tomcat或者关机都会去调用destroy()函数,该函数就会销毁Servlet,生命周期到此结束。
销毁Servlet的三种情况:
a.reload web应用
b.重新启动电脑或者关闭tomcat
c.重启电脑
第二种开发方式:继承GenericServlet开发,只需重写一个服务方法service();
第三种开发方式:继承HttpServlet开发,当前主流
介绍:HttpServlet指能够处理Http请求的Servlet,在原有Servlet接口上添加了一些Http协议处理方法,比Servlet接口的功能更加强大,因此编写Servlet时通常应继承这个类,避免去直接实现Servlet接口
HttpServlet在实现Servlet接口时覆写了Service方法,该方法体内的代码会自动判断用户的请求方式,get请求调用doGet()方法,post请求调用doPost()方法,编写Servlet时通常只需覆写doGet()或者doPost()方法,而不需要去覆写service()方法。
细节:doGet()和doPost()最终都调用了Servlet接口的Service方法,这两个方法是Service的一种封装。
get提交和post提交的区别:
1.从安全性上看:post高,因为get提交的数据会在浏览器的地址栏上显示。
2.从提交的内容大小看:get<post,get提交的数据不能大于2k,而post提交的数据理论上不受限制,实际编程建议不要大于64k。
3.从请求相应速度看:get>post,get要求服务器立即处理请求,而post请求可能形成一个队列请求。