JavaServlet的方法、主要功能、作用?面试必备!

简介:

  一、 HttpServlet 类包含 init() 、 destroy() 、 service() 等方法。其中 init() 和 destroy() 方法是继承的。

(1) init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet 。 无论有多少客户机访问 Servlet ,都不会重复执行 init() 。
缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个“请求”( ServletRequest )对象和一个“响应”( ServletResponse )对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET ,则缺省情况下就调用 doGet() 。 Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
= 当一个客户通过 HTML 表单发出一个 HTTP POST 请求时, doPost ()方法被调用。 与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。
= 当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时, doGet() 方法被调用。 与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。
Servlet 的响应可以是下列几种类型:
一个输出流,浏览器根据它的内容类型(如 text/HTML )进行解释。
一个 HTTP 错误响应 , 重定向到另一个 URL 、 servlet 、 JSP 。
(3) destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。
当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。
(4) GetServletConfig()方法
GetServletConfig ()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext 。 ServletContext 接口提供有关 servlet 的环境信息。
(5) GetServletInfo()方法
GetServletInfo ()方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。
当服务器调用 sevlet 的 Service ()、 doGet ()和 doPost ()这三个方法时,均需要 “请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。 javax.servlet 软件包中的相关类为 ServletResponse 和 ServletRequest ,而 javax.servlet.http 软件包中的相关类为 HttpServletRequest 和 HttpServletResponse 。 Servlet 通过这些对象与服务器通信并最终与客户机通信。 Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。 Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。

二、

Java Servlet的主要功能和作用是什么?

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet ,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet 。装入后, Servlet 继续运行直到其它客户机发出请求。 Servlet 的功能涉及范围很广。例如, Servlet 可完成如下功能:
(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。
(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。
(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如, Servlet 可
以是多参与者的游戏服务器。
(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet 的新连接,并将该连
接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。
(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。
(7) 将定制的处理提供给所有服务器的标准例行程序。例如, Servlet 可以修改如何认证用户。

 

 

 

1,什么是Servlet
2,Servlet有什么作用
3,Servlet的生命周期
4,Servlet怎么处理一个请求
5,Servlet与JSP有什么区别
6,Servlet里的cookie技术
7,Servlet里的过滤器
8,Servlet里的监听器

 


一,什么是Servlet?


Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),

 

是按照Servlet规范编写的一个Java类。



二,Servlet有什么作用?


主要是处理客户端的请求并将其结果发送到客户端。



三,Servlet的生命周期?


Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

初始化阶段:


1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。


2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。


3,Servlet容器创建一个servlet对象。


4,Servlet容器调用servlet对象的init方法进行初始化。



运行阶段:


当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

 

然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

 

信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和

 

servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

 


销毁阶段:


当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,

 

同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放

 

servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。



在这里该注意的地方:


在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户

 

端访问的次数

 

 


四,Servlet怎么处理一个请求?


当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。

 

在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象

 

传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传

 

给用户。

 


五,Servlet与JSP有什么区别?


1,jsp经编译后就是servlet,也可以说jsp等于servlet。


2,jsp更擅长页面(表现)。servlet更擅长逻辑编辑。 (最核心的区别)。


3,在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,

 

JSP位于MVC设计模式的视图层,而Servlet位于控制层。

 


六,Servlet里的cookie技术?


cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段,是由Netscape公司开发出来的。


cookie技术的好处:


    1,Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。


    2,Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。
    
创建一个cookie

Java代码   收藏代码
  1. //里面的两个参数分别是cookie的名和cookie的值  
  2.   
  3. response.addCookie(new Cookie("abc","10000000"));  

 

使用cookie

Java代码   收藏代码
  1. Cookie[] cook =request.getCookies();//用一个Cookie数组来接收  
  2.   
  3. for(int j=0;j<cook.length;j++){//通过循环来打印Cookie  
  4.   
  5.         cook[j].getName()://取cookie的名    
  6.         cook[j].getValue()://去cookie的值  
  7.   
  8. }  

 


七,Servlet里的过滤器?


过滤器的主要作用


1,任何系统或网站都要判断用户是否登录。


2,网络聊天系统或论坛,功能是过滤非法文字


3,统一解决编码


(2)怎么创建一个过滤器:

 

1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。


2,重写接口里面的三个方法:init,doFilter,destroy。


3,然后在web.xml配置过滤器。



八,Servlet里的监听器?


监听器的作用:自动执行一些操作。

三种servlet监听器:

 

对request的监听。对session的监听。对application的监听。

怎么创建一个session监听器:


1,生成一个普通的class类,如果是对session的监听,则实现HttpSessionListener。


2,然后重写里面的五个方法:

 

Java代码   收藏代码
  1. public void sessionCreated(HttpSessionEvent arg0) {} // 创建  
  2.   
  3. public void sessionDestroyed(HttpSessionEvent arg0) {} // 销毁  
  4.   
  5. public void attributeAdded(HttpSessionEvent arg0) {} // 增加  
  6.   
  7. public void attributeRemoved(HttpSessionEvent arg0) {} // 删除  
  8.   
  9. public void attributeReplaced(HttpSessionEvent arg0) {} // 替换  

 

 

http://baike.baidu.com/view/3618433.htm










本文转自 小夜的传说 51CTO博客,原文链接:http://blog.51cto.com/1936625305/1193882,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
存储 自然语言处理 算法
面试题ES问题之Solr和Elasticsearch功能实现如何解决
面试题ES问题之Solr和Elasticsearch功能实现如何解决
54 2
|
3天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
28 4
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
44 2
|
3月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
3月前
|
Java API 索引
【Java基础面试二十四】、String类有哪些方法?
这篇文章列举了Java中String类的常用方法,如`charAt()`、`substring()`、`split()`、`trim()`、`indexOf()`、`lastIndexOf()`、`startsWith()`、`endsWith()`、`toUpperCase()`、`toLowerCase()`、`replaceFirst()`和`replaceAll()`,并建议面试时展示对这些方法的熟悉度,同时深入理解部分方法的源码实现。
【Java基础面试二十四】、String类有哪些方法?
|
3月前
|
Java
【Java集合类面试三十】、BlockingQueue中有哪些方法,为什么这样设计?
BlockingQueue设计了四组不同行为方式的方法用于插入、移除和检查元素,以适应不同的业务场景,包括抛异常、返回特定值、阻塞等待和超时等待,以实现高效的线程间通信。
|
3月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
3月前
|
机器学习/深度学习 算法 Python
【机器学习】面试问答:决策树如何进行剪枝?剪枝的方法有哪些?
文章讨论了决策树的剪枝技术,包括预剪枝和后剪枝的概念、方法以及各自的优缺点。
57 2
|
3月前
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
103 2
|
3月前
|
存储 机器学习/深度学习 缓存
【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?
XGBoost与GBDT的区别、XGBoost使用泰勒二阶展开的原因、并行训练的原理、速度优势、防止过拟合的策略以及处理缺失值的方法,突出了XGBoost在提升模型性能和训练效率方面的一系列优化。
128 1