Servlet是什么
官方解说: Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 通俗的讲,servlet是运行在web服务器如tomcat,jetty这样应用服务器上的一段程序,他可以响应http协议的请求,并且实现用户自己的逻辑,最终将结果返回到用户的客户端(浏览器) 如何实现一个Servlet
我们先来看看如何实现一个Servlet,通常实现一个servlet需要如下几步
1.File -> new -> Project 2.左侧栏选择Java,右侧Project SDK 选择自己的jdk,没有的话需要自己new添加以下, 框中需要勾选 Web Application ,表示我们创建的是一个Servlet项目 3.next 填写 Project name , Project location , 然后 finish 至此项目已经创建完毕,默认创建完毕的目录有 src,用来存放我们的java代码,web用来存放关于web的一些资源,web下面有WEB-INF和默认生成的index.jsp,WEB-INF目录下面有一个web.xml
编写一个Servlet
终于来到我们的正题了,编写一个servlet程序,按照Servlet规范,我们需要引入servlet-api这个jar包,然后继承HttpServlet这个类,并且重写对应的doGet和doPost方法。 加载和实例化阶段 默认情况下,当Servlet第一次被访问的时候,由容器创建Servlet对象。 当然,我们也不可以不默认。只需要使用@WebService(urlPattems = "/demo",loadOnStartup = 1) 当loadOnStartup = 负整数时,这是默认情况,第一次被访问的时候创建Servlet对象。 当loadOnstartup = 0或者正整数时,服务器启动的时候,就会创建Servlet对象,数字越小优先级就越高。 当项目比较大的时候,第一次访问时再创建Servlet,用户就会等待一段时间,这样用户的体验感就会下降,这时候我们选择在服务器启动的时候创建Servlet,用户就会有一个更好的体验感!
初始化阶段
在Servlet实例化之后,容器调用Servlet的**Init()**方法初始化这个对象,完成一些如加载配置文件,创建连接等初始化的工作。该方法只能调用一次。 请求处理 每次请求Servlet的时,Servlet容器都会调用service()的方法对请求进行处理。也就是每进入Servlet的网页,都会调用Servlet的service()方法。 服务终止 当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destory()方法完成资源的释放。在destory()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。 刚才提到Servlet有五大方法,init、service、destory、getServletInfo、getServletConfig。
常见问答题
Servlet由谁创建?Servlet方法由谁调用?
Servlet由Web服务器创建,Servlet方法由Web服务器调用。
服务器怎么知道Servlet中一定有Service方法?
因为我们自定义的Servlet,必须实现Servlet接口并且复写其方法,而Servlet接口中有Service方法。