最近一场面试(Servlet的生命周期)

导读:本篇文章讲解 最近一场面试(Servlet的生命周期),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、(面试)请简述一下Servlet的生命周期?

答:Servlet的生命周期(4个):①创建对象,②初始化,③执行,④销毁。

但是不是固定的,Servlet对象是单例的。

首次访问Servlet,才会创建对象并调用初始化方法,然后执行操作;

非首次访问则直接调用服务方法,不会创建对象和初始化;

正常关闭服务器会调用销毁方法,非正常则不会。

最近一场面试(Servlet的生命周期)


 
2.2 Servlet
2.2.1 Servlet
生命周期
1.
创建
Servlet
对象,通过服务器反射机制创建
Servlet
对象,第一次请
求时才会创建。(默认)
2
,调用
Servlet
对象的
init()
方法,初始化
Servlet
的信息,
init()
方法只会在创建后被调用一次;
3
,响应请求,调用
service()
或者是
doGet()

doPost()
方法来处理请求,这些方法是运行的在
多线程状态下的。
4
, 在长时间没有被调用或者是服务器关闭时,会调用
destroy()
方法来销毁
Servlet
对象。
2.2.2 servlet
是什么
Servlet
定义:
Servlet
是基于
Java
技术的
Web
组件,由容器管理并产生动态的内容。
Servlet
引擎作为
WEB
服务器
的扩展提供支持
Servlet
的功能。
Servlet
与客户端通过
Servlet
容器实现的请求
/
响应模型进
行交互
Servlet
知道是做什么的吗?和
JSP
有什么联系?
JSP
的运行原理?
JSP
属于
Java
的吗?
Servlet
是线程安全
scala
写的大型框架吗
spark
如何确保分布式环境下异步消息处理的顺序性?
servlet
是单例
servlet

filter
的区别。
servlet
流程
 

Servlet 是线程安全的吗?如何证明?

Servlet 是线程不安全的,因为Serlvet 在整个生命周期中是单例的。因为是单例,所以共用同一个堆空间中的数据,如果使用成员变量来记录数据,在多个用户的访问下就可以出现数据混乱的效果,从而也体现其线程的不安全性。


 

二、补充:

 

1、什么是Servlet

Servlet(Server Applet),服务小程序(或服务连接器),用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下都是指后者。

 

2、如何使用Servlet

自定义类 extends HttpServlet 覆盖service 方法。(后期有时间再补充)

 

3、 Servlet 接口中常用的方法

构造方法:在服务器创建对象的时候执行,单例。

void init(ServletConfig config):初始化方法。在第一次创建对象的时候执行。

void service(ServletRequest req, ServletResponse resp):服务方法,只要请求该资源一次,就会执行一次。

void destory():销毁方法,服务器正常关闭的时候执行。

getServletConfig():用于返回ServletConfig 对象的方法。

 

4、Servlet是线程不安全的

因为Servlet在整个生命周期中都是单例的,所以会共用一个堆空间中的数据,如果使用成员变量来记录数据,在多个用户的访问下,就会出现数据混乱。

 

5、Servlet的三大作用域   request < session < servletContext

request:在一个请求的多个跳转之间共享数据时使用。

session:在一个会话的多个请求之间共享数据时使用。

servletContext:在多个会话之间共享数据时使用。

 

6、HttpServletRequest常用方法

ServletRequest 接口:表示请求对象,封装了请求的数据和获取请求数据的方法。

HttpServletRequest 接口:ServletRequest 接口的子接口,封装了所有的请求数据和获取符合Http协议的数据的方法.。它底下的常用方法:

(1)getMethod:返回请求方式(如GET)

(2)getRequestURI:返回请求行中的资源名字部分(如/test/index.html )

(3)getRequestURL:返回浏览器地址栏中的所有信息

(4)getContextPath:获取当前项目的上下文路劲<Context />元素的path属性值

(5)getRemoteAddr:返回发出请求的客户机的IP地址

(6)getRequestURL:返回客户端请求的完整URL(包括协议、服务器名、端口号、资源路径信息),不含查询参数

(7)getHeader:返回指定名称的头字段的值

(8)获取表单请求参数: 

①String getParameter(String name):返回指定名字参数的值

②String[] getParameterValues(String name):返回指定名字参数的多个参数值。(复选框)

③Enumeration<String> getParameterNames():返回所有参数名的 Enumeration 对象 

④Map<String,String[]> getParameterMap():返回所有的参数和值所组成的Map对象

 

7、HttpServletResponse常用方法

ServletResponse 接口:响应对象,封装了做响应相关的方法。

HttpServletResponse 接口:ServletResponse 接口的子接口,封装了符合Http 协议的响应方法。它常用方法:  

(1)OutputStream getOutputStream():获取字节输出流对象( 文件下载)。     

(2)PrintWriter  getWriter(): 获取字符输出流对象

(3)response.setContentType(“text/html”),设置输出的MIME类型(内容的类型)

(4)response.setCharacterEncoding(“UTF-8”),response.setContentType(“text/html;charset=utf-8”),设置输出数据的编码方式    

 

最近一场面试(Servlet的生命周期)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117784.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!