Java Servlet 开发工具(JSDK)提供了多个软件包,在编写Servlet时需要用到这些软件包,下面主要介绍HTTP Servlet应用编程接口。
HttpServlet类包含init()、destroy()、Service()等方法,其中init()和destroy()方法是继承的。
----1、init()方法:
在Servlet的生命期中,仅仅执行一次init()方法,它是在服务器装入Servlet时执行的。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()方法。
缺省的init()方法通常是符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源,例如,可能编写一个定制init()来只用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机请求的性能。
----2、Service()方法:
Service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要被调用,而且传递给这个方法一个请求(ServletRequest)对象和一个响应(ServletResponse)对象作为参数。在HttpServlet中已经纯在Service()方法。缺省的服务功能是调用与HTTP请求的方法相应的do功能,例如,如果HTTP请求方法为get,则缺省情况下就调用doGet()。HttpServlet.Service()方法会检查请求方法是否调用了适当的处理方法,不必要覆盖Service()方法。只需要覆盖do方法就可以了。
当一个客户通过HTML表单发出一个http post请求的时候,doPost()方法呗调用,与post请求相关的参数作为一个单独的http请求从浏览器发送到服务器,当需要修改服务器端的数据的时候,应该使用doPost()方法。
当一个客户端通过HTML表单发出一个http get请求或直接请求一个URL时,doget()方法呗调用,与get请求相关的参数添加到URL的后面,并与这个请求一起发送,当不会修改服务器端的时候应该使用doGet()方法。
----3、destroy()方法:
Destroy()方法仅仅执行一次,即使在服务器停止且卸装Servlet时执行该方法,典型的,将Servlet作为服务器进程的一部分来关闭,缺省的destroy()方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果Servlet在运行时会累计统计数据,则可以编写一个destroy()方法,该方法用于在未装入Servlet时将统计数字保存在文件中,另一个实例是关闭数据库连接,当服务器卸装Servlet时,将所有service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个Servlet在运行service()方法时可能产生其他的线程,因此请确认在调用destroy()方法时,这些线程已经终止或完成。
-----4、GetServletConfig()方法:
GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext提供有关Servlet的环境信息。
----5、GetServletInfo()方法:
GetServletConfig()方法是一个可选的方法,它提供了有关Servlet的信息
创建HTTPServlet
创建一个HTTP Servlet,通常涉及一下四步:
1、 扩展HttpServlet抽象类
2、 重载适当的方法,如覆盖或重写doGet()、doPost()方法
3、 如果有HTTP请求信息的时候,获取该信息,用HttpServletRequest对象来检索HTML表格所提交的数据或URL上的查询字符串
4、 生成HTTP响应。HttpServletresponse对象生成响应,并将它返回到发出请求的客户机上。它的方法允许设置请求标题和响应主题。响应对象还含有getWriter()方法,以返回一个PrintWriter对象。使用PrintWriter的print()方法以编写Servlet响应来返回给客户机