Servlet面试题(一)

简介: Servlet面试题(一)

1. 为什么要使用servlet?

答案:servlet可以很好地替代公共网关接口(Common Gateway Interface,CGI)脚本。通常CGI脚本是用Perl或者C语言编写的,它们总是和特定的服务器平台紧密相关。而servlet是用Java编写的,所以它们一开始就是平台无关的。这样,Java编写一次就可以在任何平台运行(writeonce,run anywhere)的承诺就同样可以在服务器上实现了。servlet还有一些CGI脚本所不具备的独特优点:

(1)servlet是持久的。servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)。与之相反,CGI脚本是短暂的、瞬态的。每一次对CGI脚本的请求,都会使Web服务器加载并执行该脚本。一旦这个CGI脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。CGI脚本的每一次使用,都会造成程序初始化过程(例如连接数据库)的重复执行。

(2)servlet是与平台无关的。如前所述,servlet是用Java编写的,它自然也继承了Java的平台无关性。

(3)servlet是可扩展的。由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet自然也具备了这些特征。

(4)servlet是安全的。从外界调用一个servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。

(5)setvlet可以在多种多样的客户机上使用。由于servlet是用Java编写的,所以你可以很方便地在HTML中使用它们,就像你使用applet一样。

 

2.Servlet的生命周期?

答案:Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。

生命周期的具体说明如下:

Servlet容器完成加载Servlet类和实例化一个Servlet对象

init()方法完成初始化工作,该方法由Servlet容器调用完成

service()方法处理客户端请求,并返回响应结果

destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源


3.说出Servlet和CGI的区别?

答案:CGI的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

 

4.HttpServlet类中的主要方法都有哪些?各自的作用是什么?

答案:HttpServlet的主要方法有 doGet, doPost, doPut, doDelete, doTrace等等

主要了解以下方法的具体作用如下:

(1)Void doGet(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTP GET请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。


(2)Void doPost(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTP POST请求。输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。


(3)Void doPut(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTP PUT请求。本方法中请求URI指出被载入的文件位置。


(4)Void doDelete(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTPDELETE请求。请求URI指出资源被删除。


(5)Void doOptions(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTPOPTIONS请求。返回一个Allow响应头标表明此servlet支持的HTTP方法。一个servlet不需要覆盖此方法,因为 HttpServlet方法已经实现规范所需的功能。


(6)Void doTrace(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     由servlet引擎调用用处理一个HTTP TRACE请求。使得请求头标被反馈成响应关标。一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现HTTP规范所需的功能。


(7)Void service(HttpServletRequest request,HttpServletResponseresponse)throws ServletException,IOException     Service(Requestrequest,Response response)调用的一个立即方法,带有指定HTTP请求和响应。此方法实际上将请求导向doGet()、doPost()等等。不应该覆盖此方法。


(8)Void service(Request request,Response response)throwsServletException,IOException     将请求和响应对象置入其指定的HTTP子类,并调用指定HTTP的service()方法。

 

5.介绍一下javax.servlet.Servlet接口及其主要方法?

答案:Servlet接口的主要作用是提供Servlet生命周期的init()、service()和destroy()方法。

servlet接口中的主要方法有:

(1)void init(ServletConfit config)throwsServletException     在servlet被载入后和实施服务前由servlet引擎进行一次性调用。如果init()产生溢出UnavailableException,则 servle退出服务。


(2)ServletConfiggetServletConfig()     返回传递到servlet的init()方法的ServletConfig对象


(3)void service(ServletRequest request,ServletResponse response)throws ServletException,IOException    处理request对象中描述的请求,使用response对象返回请求结果


(4)StringgetServletInfo()         返回描述servlet的一个字符串


(5)voiddestory()         当servlet将要卸载时由servlet引擎调用,销毁Servlet实例。

 

6.描述JSP和Servlet的区别、共同点、各自应用的范围?

答案:JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet来生成动态网页;JSP由HTML代码和JSP标签构成,可以方便地编写动态网页因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。


7. Java Servlet的主要功能和作用是什么?

答案:Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet ,并让 Servlet 建立起服务器返回给客户机的响应。当启动 Web 服务器或客户机第一次请求服务时,可以自动装入Servlet 。装入后, Servlet 继续运行直到其它客户机发出请求。 Servlet 的功能涉及范围很广。例如, Servlet 可完成如下功能:

(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。

(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。

(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如, Servlet 可

以是多参与者的游戏服务器。

(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet 的新连接,并将该连

接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。

(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。

(7) 将定制的处理提供给所有服务器的标准例行程序。例如, Servlet 可以修改如何认证用户。


目录
相关文章
|
9月前
|
安全 前端开发 Java
Java面试题日积月累(jsp/Servlet面试题20道)
Java面试题日积月累(jsp/Servlet面试题20道)
65 0
|
8月前
|
前端开发 Java 容器
每日一道面试题之jsp 和 servlet 有什么区别?
每日一道面试题之jsp 和 servlet 有什么区别?
|
容器
面试题:如何让Servlet变成多例?
面试题:如何让Servlet变成多例?
|
Java 程序员 容器
Java 最常见的面试题:jsp 和 servlet 有什么区别?
Java 最常见的面试题:jsp 和 servlet 有什么区别?
|
前端开发 安全 IDE
拿下BAT的offer,这篇汇总的Servlet常见面试题正适合你
这篇文章主要是对servlet的运行过程进行一个分析。涉及了一些基本的用法和常见的面试题。
157 0
拿下BAT的offer,这篇汇总的Servlet常见面试题正适合你
|
Java API 容器
面试题系列之Servlet API中forward()与redirect()的区别
forward()与redirect()是servlet的两种主要的跳转方式。forward又叫转发,redirect叫做重定向。
159 0
面试题系列之Servlet API中forward()与redirect()的区别
|
存储 XML 安全
Tomcat+Servlet面试题都在这里(修订版)(二)
下面是我整理下来的Servlet知识点:
92 0
Tomcat+Servlet面试题都在这里(修订版)(二)
|
XML Java 应用服务中间件
Tomcat+Servlet面试题都在这里(修订版)(一)
下面是我整理下来的Servlet知识点:
124 0
Tomcat+Servlet面试题都在这里(修订版)(一)
|
存储 XML 安全
Tomcat+Servlet面试题都在这里(下)
Tomcat+Servlet面试题都在这里
122 0
Tomcat+Servlet面试题都在这里(下)
|
XML Java 应用服务中间件
Tomcat+Servlet面试题都在这里(中)
Tomcat+Servlet面试题都在这里
54 0
Tomcat+Servlet面试题都在这里(中)