面试题-servlet


1. Servlet的生命周期

  • 答案
    • 根据Servlet的配置参数1来决定实例化时机,没有配置该参数项或者为负数,则第一次访问的时候才会被实例化并调用init()函数,如果为0或者正整数,则服务器启动的时候就会被加载,加载顺序由小到大。Servlet通过调用init()方法进行初始化。
    • 客户端请求到达后,Servlet调用service()方法来处理客户端的请求。
    • 服务器关闭,或者Servlet长时间没有使用,Servlet通过调用destroy()方法终止(结束)
    • 最后,Servlet是由JVM的垃圾回收器进行垃圾回收的。

2. Servlet和Jsp的区别?

  • 答案

    前后端分离

    Servlet是服务器端的程序,动态生成html页面发送到客户端,但是这样程序里会有很多out.println(),java与html语言混在一起很乱,造成编写逻辑控制的后台工程师和设计前端网页的前端工程师彼此很难独立开展工作,所以后来sun公司推出了JSP,其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,然后再被编译成.class文件运行。有了jsp,在MVC项目中servlet不再负责动态生成页面,转而去负责控制程序逻辑的作用,控制jsp与javabean之间的流转。其实对jsp也有封装的模板工具velocity和freemarker。


3. 页面间对象传递的方法

  • 答案

    request,session,application,cookie等


4. 四种会话跟踪技术

  • 答案

    会话作用域ServletsJSP 页面描述

    1. page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面。
    2. request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)。
    3. session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求。
    4. application是代表与整个Web应用程序相关的对象和属性。这实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

5. 如何配置Servlet的初始化参数?

  • 答案

    在web.xml中该Servlet的定义标记中,比如:


  TimeServlet
  com.allanlxf.servlet.basic.TimeServlet
  
      user
      username
  
  
      blog
      http://。。。
  

配置了两个初始化参数user和blog它们的值分别为username和http://。。。这样以后要修改用户名和博客的地址不需要修改Servlet代码,只需修改配置文件即可。


6. 如何读取Servlet的初始化参数?

  • 答案

    ServletConfig中定义了如下的方法用来读取初始化参数的信息:

    public String getInitParameter(String name)

    参数:初始化参数的名称。

    返回:初始化参数的值,如果没有配置,返回null。


7. init(ServletConfig)方法与异常

  • 答案

    该方法在执行过程中可以抛出ServletException来通知Web服务器Servlet实例初始化失败。一旦ServletException抛出,Web服务器不会将客户端请求交给该Servlet实例来处理,而是报告初始化失败异常信息给客户端,该Servlet实例将被从内存中销毁。如果在来新的请求,Web服务器会创建新的Servlet实例,并执行新实例的初始化操作。