[面试] 10 个servlet 相关的问题

1.见如下 web.xml配置(

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

),请问 <load-on-startup>1</load-on-startup> 的作用是什么?

标记容器是否在启动的时候就加载这个servlet。当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。正数的值越小,启动该servlet的优先级越高。

2.介绍下 servlet 的生命周期

servlet 被其容器所控制。 当一个请求映射到 a servlet 时,容器会执行如下的步骤:

  1. 如果 servlet 实例不存在, web 容器将

    1. Loads the servlet class.

    2. Creates an instance of the servlet class.

    3. Initializes the servlet instance by calling the init method. Initialization is covered in Creating and Initializing a Servlet.

  2. 调用 service method, 传递 request and response objects 参数

如果需要移除 servlet, the container 通过调用它的 destroy 方法来终结这个 servlet。如图所示:

* 注意,servlet 只能通过 servlet 容器初始化,因为 servlet 初始化需要相关配置信息被容器所加载。

3.可以获取在另一个中的 servlet context  中的信息吗?

可以。比如可以在另一个 servlet 使用相关名字获取相应信息(

Context.setAttribute (“name”,” value”)
Context.getAttribute (“name”)

4.servlet 之间如何协作?

  • RequestDispatchers include () and forward() method .
  • Using sendRedirect()method of Response object.
  • Using servlet Context methods

5. ServletConfig 与 ServletContext 的区别?

前者是 Servlet 级,后者是 Application 级。等同于 Root WebApplicationContext 与 Servlet WebApplicationContext 的关系。

6.forward、include 与 redirect 区别

include 在原页面增加内容,forward 不完全跳转(页面内容改变,但页面地址不变),redirect 完全跳转(地址和页面完全发生改变)。另一个区别(

response.sendRedirect("jump.jsp");

request.getRequestDispatcher("jump.jsp").forward(request,response);

)forward 是直接在服务器(该请求必须在本 server 上)中进行处理,将处理完后的信息发送给浏览器进行显示,所以完成后在url中显示的是跳转前的页面。在forward的时候将上一页面中传送的request和response信息一同发送给下一页面。在 servlet 3.1 后可以使用 addFlashAttribute 实现相似的功能(大概底层使用 session进行处理)。

233

猜你喜欢

转载自www.cnblogs.com/lemos/p/9610727.html