一、(面试)请简述一下Servlet的生命周期?
答:Servlet的生命周期(4个):①创建对象,②初始化,③执行,④销毁。
但是不是固定的,Servlet对象是单例的。
首次访问Servlet,才会创建对象并调用初始化方法,然后执行操作;
非首次访问则直接调用服务方法,不会创建对象和初始化;
正常关闭服务器会调用销毁方法,非正常则不会。
生命周期
创建
Servlet
对象,通过服务器反射机制创建
Servlet
对象,第一次请
,调用
Servlet
对象的
init()
方法,初始化
Servlet
的信息,
init()
方法只会在创建后被调用一次;
,响应请求,调用
service()
或者是
doGet()
,
doPost()
方法来处理请求,这些方法是运行的在
, 在长时间没有被调用或者是服务器关闭时,会调用
destroy()
方法来销毁
Servlet
对象。
是什么
定义:
Servlet
是基于
Java
技术的
Web
组件,由容器管理并产生动态的内容。
引擎作为
WEB
服务器
Servlet
的功能。
Servlet
与客户端通过
Servlet
容器实现的请求
/
响应模型进
知道是做什么的吗?和
JSP
有什么联系?
JSP
的运行原理?
JSP
属于
Java
中
是线程安全
写的大型框架吗
spark
是单例
和
filter
的区别。
流程
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”),设置输出数据的编码方式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117784.html