1. 简述什么是servlet以及servlet容器
答:servlet是java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务端程序,具有独立于平台和协议的特性,主要功能在于交互地浏览和生成数据,生成动动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet接口类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的英勇服务器中。
从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。它声明了servlet生命周期中必不可少的三个方法-init()、service()和destroy()。每个servlet(无论是在SDK中定义的,或是自定义的)都必须实现这三个方法,而且由服务器在特定的时刻调用。
Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器。Servlet容器主要负责管理Servlet、JSP的生命周期以及它们的共享数据。目前最流行的Servlet容器软件包括: Tomcat、Jetty、Jboss等。
2. 简述转发和重定向的区别
1)重定向访问服务器两次,转发只访问服务器一次。
2)重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL。以后的工作都是服务器来做的。
3)重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会再执行了。
4)在request级别使用信息共享,使用重定向必然出错
5)重定向可以访问自己web应用以外的资源
3. 简述servlet的生命周期
答:Servlet生命周期分为四个阶段:
1)实例化;
2)初始化;
3)处理请求服务;
4)对象销毁。
Servlet在第一次被访问就会实例化一个servlet对象,然后立即调用init方法初始化对象,创建后的servlet对象会一直驻留在服务器内部,为后续的请求提供服务,只要有请求访问servlet,服务就会调用service方法处理请求,直到服务器关闭或者web项目被移除,随着web应用的销毁,servlet也就被销毁,在销毁之前会调用destroy方法进行善后处理。