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 时,容器会执行如下的步骤:
-
如果 servlet 实例不存在, web 容器将
-
Loads the servlet class.
-
Creates an instance of the servlet class.
-
Initializes the servlet instance by calling the init method. Initialization is covered in Creating and Initializing a Servlet.
-
-
调用 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