欢迎光临散文网 会员登陆 & 注册

关于Servlet的部分重点内容(接口及实现类、生命周期、配置方法、虚拟路径及多重映射

2023-05-31 00:55 作者:-Arlance-  | 我要投稿

1、Servlet 接口及其实现类GenericServlet和HttpServlet,以及他们之间的关系是什么?

GenericServlet是一个抽象类,为Servlet接口提供了部分实现,并没有实现http的请求处理;HttpServlet是GenericServlet的子类,它继承了GenericServlet的所有方法,并且为http请求中的post,get等方式提供了具体的操作方法


2、Servlet生命周期的三个阶段是什么?

初始化阶段、运行阶段、销毁阶段

初始化阶段:

①客户端向Servlet容器发出请求访问Servlet

②Servlet容器解析请求

③检查内存中有无Servlet对象,没有就创建Servlet实例对象

④调用init()方法完成Servlet的初始化

运行阶段:

①调用service ()方法

Servlet容器会为客户端请求创建代表http请求的ServletRequest对象和代表http响应的ServletResponse对象,然后将它们作为参数传递给Servlet的service ()方法。service()方法从从ServletRequest对象中获得客户端请求信息并处理该请求,通过ServletResponse对象生成响应结果。

②输出响应信息

③返回响应

在Servlet的生命周期内,对于Servlet的每一次访问请求,Servlet容器都会调用一次Servlet的service()方法,并且创建新的ServletRequest和ServletResponse对象。

销毁阶段:

当服务器关闭或web应用被移除出容器时,Servlet会随着web应用的销毁而销毁,在销毁之前会调用Servlet的destroy()方法(只调用一次),释放Servlet对象占用的资源


3、如何对Servlet类进行配置?有哪些方法?

Servlet的配置主要有使用Web应用的配置文件web.xml和使用@WebServlet注解

(1)使用Web应用的配置文件web.xml

①在web.xml文件中,通过<servlet>标签进行注册

②把Servlet映射到URL地址,使用<servlet-mapping>标签进行映射,使用<servlet-name>子标签指定要映射的Servlet名称,名称要和之前在<servlet>标签下注册的相同;使用<url-pattern>子标签映射URL地址,地址前必须加"/",否则访问不到。

(2) @WebServlet注解配置Servlet

Servlet 3.0之后提供了@Servlet注解,简化了Servlet的配置

@WebServlet注解用于代替web.xml文件中的<servlet><servlet-mapping>等标签,该注解将会在项目部署时被容器处理,容器会根据具体的属性配置将相应的类部署为Servlet。

①定义@WebServlet注解时,value属性或者urlPattern属性通常是必须的,但二者不能共存,如果同时定义,通常是忽略value的值

②@WebServlet注解可以标注在任意一个继承了HttpServlet类的类之上,属于类级别的注解。


4、什么是Servlet的虚拟路径?如何实现Servlet的多重映射?如何在Servlet映射路径中使用通配符?

客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。很多时候,该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)并不一致,因此它被称为虚拟路径。


5、ServletConfig 接口中的常用方法及其作用有哪些?

String getInitParameter(String name)

根据初始化参数名返回对应的初始化参数值

Enumeration getInitParameterNames()

返回一个Enumeration对象,其中包含了所有的初始化参数名

ServletContext getServletContext()

返回一个代表当前Web应用的ServletContext对象

String getServletName()

返回Servlet的名字


6、ServletContext对象有什么特性?

每一个Web应用都有一个唯一的ServletContext对象。ServletContext对象不仅封装了当前Web应用的所有信息,而且是先看多个Servlet之间的数据共享


7、对于每一个访问请求,Servlet 是否会创建一个新的HttpServletRequest对象和HttpServletResponse对象?

是的。


8、HttpServletRequest对象和HttpServletResponse对象分别可以用来做什么?

HttpServletRequest专门用于封装http请求消息,可用于获取请求消息的请求信息、请求头,跳转Servlet,获取请求参数,通过Request对象传递数据。

HttpServletResponse专门用于封装http响应消息,可用于向客户端发送状态码、响应消息头、响应消息体,实现请求重定向。


关于Servlet的部分重点内容(接口及实现类、生命周期、配置方法、虚拟路径及多重映射的评论 (共 条)

分享到微博请遵守国家法律