servlet类及其实现类都可以成为servlet,这是一种规范服务器能够认知代码的接口规范。
使用servlet一般有一下几个步骤:
1.创建普通的java类并实现HTTPServlet接口
2.覆写service方法
3.在service中书写逻辑代码
4.配置web.xml文件,利用虚拟路径来访问servlet,使得servlet的安全性能增加。
一般我们在网上通过本地的Tomcat服务器去访问自己写的项目时,项目名称如下:
服务器地址:端口号/虚拟项目名/servlet的别名
虚拟项目名:即Tomcat中的webapps文件夹下的项目名称,而servlet的别名,就是你在web.xml文件夹中,servlet的别名
为什么我们要通过配置web.xml文件来访问我们的servlet?
因为,安全。我们访问servlet,是通过servlet的别名,进而利用名称中间的名称去链接到真正的servlet项目,这样,访问者不知道你写的类的真正名称是什么,通过虚拟路径来掩盖真实的类名,也就能很好地提高了servlet项目的安全性能。
servlet的多重映射:
方法一:配置多个元素
利用多个<servlet-mapping> <servlet-name>myservlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping>
,对于多个servlet-mapping,修改别名
的内容,然后映射可以通过多个别名来映射到同一个servlet中。
方法二:在一个元素下,配置多个子元素。
在一个servlet-mapping 里面,写多个,也是可以实现多重映射。
缺省servlet:它的映射路径,即虚拟名称只是一个“/”,如果对于一个请求,服务器无法找到对应的servlet就会把这个请求交给缺省servlet处理。简而言之,缺省servlet是用来处理其他servlet都不处理的访问请求。
一个servlet的生命周期:分为三个阶段,初始化阶段,运行阶段和销毁阶段。
1.初始化阶段:当客户端向服务器发出请求时,Servlet容器会先检查是否已经存在该Servlet对象了,有的话,直接调用,没有的话,利用init()方法进行创建。
注意:初始化阶段中的init()方法只被调用一次。
2.运行阶段:在整个servlet的生命周期里面,只要每一次访问请求来了,servlet服务器都会调用一次service方法,并且创建新的ServletRequest和ServletResponse对象。
注意:一旦Servlet进入了内存之后就不能被销毁,因为不知道下一次请求是什么时候。
3.销毁阶段:当服务器关闭或者是Web应用被移出服务器时。Servlet会随着Web应用的销毁而销毁。在销毁之前,会调用一次destroy()方法,让Servlet对象释放它所占用的内存。这个destroy()方法也只会调用一次。
在web.xml中为Servlet配置数字,在这对标签里面,可以配置load-on-startup.表示这个Servlet在服务器启动时就会随着启动,中间的数字只是表示加载的顺序。
Servlet的生命周期:
1.从第一次调用到服务器关闭。
2.如果Servlet在web.xml中配置了load-on-startup,生命周期为服务器启动到服务器关闭。
关于Servlet里面service(),doGet()和doPost()方法的区别
1.service()可以处理get/post请求,如果servlet中有service方法,会优先调用service方法
2.doGet()方法,只能处理get方式的请求
3.doPost()方法,只能处理post方式的请求