Servlet:是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于
支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。最早支持
Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet
简而言之:是一种“请求–响应”技术
导读模块:所谓的生命周期是指一个东西的起效的整个过程
1.而servlet的生命周期即阐述Servlet从产生到毁灭的整个过程
在Servlet产生到消亡的过程中,有三个生命周期函数,初始化方法init(),处理客户请求的方法service(),终止方法destroy()。
1.1init( ):
在一个Servlet的生命周期中,init方法只会被执行一次,之后无论用户执行多少次请求,都不会在调用该方法。
关于init方法的执行时机,有两种方式可选,一般的是在服务器启动后第一个用户请求该Servlet时调用,你也可以设置该Servlet在服务器启动后自动执行。
使用场景:init( )负责预加载一些数据,这些数据将用于该Servlet的整个生命周期中
<context-param>
<param-name>driverparam-name>
<param-value>com.mysql.jdbc.Driverparam-value>
context-param>
<context-param>
<param-name>urlparam-name>
<param-value>jdbc:mysql://localhost:3306/test1113?useUnicode=true&characterEncoding=utf-8param-value>
context-param>
<context-param>
<param-name>usernameparam-name>
<param-value>rootparam-value>
context-param>
<context-param>
<param-name>passwordparam-name>
<param-value>rootparam-value>
context-param>
@Override
public void init() throws ServletException {
System.out.println("HelloServlet初始化的时候可以预加载一些数据。。。。");
driver = getServletContext().getInitParameter("driver");
url = getServletContext().getInitParameter("url");
username = getServletContext().getInitParameter("username");
password = getServletContext().getInitParameter("password");
System.out.println(driver+"\n"+url+"\n"+username+"\n"+password);
}
//重写init()方法,则可以在加载的时侯
1.2service( ):
service方法
当一个客户请求该Servlet时,实际的处理工作全部由service方法来完成,service方法用来处理客户端的请求,并生成格式化数据返回给客户端
1.3destroy( ):
该方法在整个生命周期中,也是只会被调用一次,在Servlet对象被销毁时调用,在servlet中我们可以做一些资源的释放等操作,执行destory方法之后的servlet对象,会等待jvm虚拟机的垃圾回收机制择时回收
使用场景:destory( )方法负责将一些需要释放的资源写在里面
备注:当修改servlet中的内容的时候 ,就会触发destory( )方法
1.JSP执行之后的本质就是一个servlet
为什么既然有了JSP还要有Servlet呢?
是因为使用场景不同,JSP更多的偏重于页面的展示,而Servlet更多的是偏重于后台的处理程序
ps:通过查看源代码我们发现HttpJspBase的父类是HttpServlet
2.JSP的执行效率/速度比Servlet慢