您的位置:首页 > 编程语言 > Java开发

Java中Servlet生命周期解析第二弹「Web工程师必读」

2017-11-09 22:57 253 查看

前言

上一篇文章中我们对HttpServlet请求和响应部分做了一些讲解,这篇文章中我们将要讲解Http Servlet的数据传递和他的生命周期。前一篇文章中的反应比较平淡,可能是大家觉得都了解,不需要详细深入,也可能是由于周末的缘故大家对技术类文章比较抵触【给自己找个台阶下】,但是就我看来不管是Java工程师还是PHP等其他技术的工程师,都需要对Http请求和响应过程有一定了解。这些都是初级工程师面试过程中必问的问题。废话少说,直接来正题。

数据传递

Http Servlet是使用专门的HTML表格来发送和接受数据的。如果要自己创建一个响应请求类,需要扩展的就是HttpServlet类。这个类是Http体系中专门用来处理HTML 表格数据的,他继承于GenericServlet类。通常HTML表单中需要有输入字段,比如文本输入、复选框、单选框和选择列表等,还有用于数据提交的按钮,以及表单提交的地址信息等。 每一个表单的提交都会指定服务器的某个Servlet进行处理,处理完成后会有HttpServletResponse进行响应。

HttpServlet的生命周期

HttpServlet类包含init()、service()、destroy()等方法,期中init()方法和destroy()方法是继承于父类的。

1.init()

在Servlet生命周期中,仅执行一次init()方法,这个方法是在服务器启动装载Servlet的过程中执行的。无论有多少HTTP请求访问Servlet类,都不会重复执行init()方法。通常情况下init()方法是可以缺省的,但是在有需要的时候也可以定制自己的init()方法。例如服务器启动的过程中需要装入或加载一些资源,就可以在init()方法中实现。又例如数据库的初始化连接,也可以在init()中实现。

当在定制自己的init()方法时候,请先调用super.init()方法。因为默认情况下,Servlet是在init()方法中设置了自己的初始化参数的,为了保证服务器的正常启动,因此需要首先调用父类的init()方法。

2.service()

service()方法是Servlet的核心部分。每一个http请求都会调用该HttpServlet的service()方法。service()方法的作用就是处理前面讲的HTML表单数据。HTML表单中指定了POST请求和GET请求,service()方法通过判断这些然后去调用响应的doGet()方法和doPost()方法。

Servlet中的响应有以下几种类型:

①:一个输出流,浏览器根据输出流的类型进行解析。如常见的text和HTML等。

②:一个HTTP错误响应,如果服务器出现错误,可以指定跳转到另外一个URL、JSP页面或者Servlet中。如果要进行个性化的定制,是需要对响应的错误进行拦截的。

3.destroy()

destroy()方法跟init()方法一样,其在Servlet的生命周期中只执行一次。不同的是,destroy()方法是在服务器停止且卸载Servlet的过程中进行的。与init()方法一样,destroy()方法是可以缺省的。当然与inint()方法一样,它也可以进行定制。例如在可以在destroy()中做服务器运行状态下的数据的统计。也可以关闭在init()方法中初始化的数据库连接等。

以下两个方法是不常用的,这里做简单介绍。

1.GetServletConfig()

该方法的作用是返回init()方法中初始化的Servlet参数信息和ServletContext上下文信息,这些信息被包装到了ServletConfig对象中。ServletContext接口的作用是提供有关Servlet的环境信息。

2.GetServletInfo()

该方法是的作用比较简单,它返回的是Servle的基本信息,如作者、版本、版权等,是一个可选方法。

结语

针对HttpServlet的数据传递,请求处理过程(该部分没有了解到的读者可以点击链接Servlet生命周期解析第一弹「JavaWeb工程师必读」)以及生命周期的解析在这一篇中就已经结束了。大家有什么问题或者其他的想法可以通过留言或者私信告诉我,我会给大家做出解答,复杂的问题我会直接写一篇文章出来。

感谢大家的阅读,欢迎关注本人头条号,以便您获得最新的技术解答。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java servlet 服务器 web
相关文章推荐