黑马程序员:Servlet的一点小知识

---------------------- android培训java培训、期待与您交流! ------------------------

一:Serverlet概述

Java Servlet是一个专门用于编写网络服务器应用程序的Java组件。所有基于Java的服务器端编程都是构建在Servlet之上的。Servlet所适用的网络协议可以是多种多样的,比如HTTPFTPSMTPTELNET。但是就目前而言,只有HTTP服务已经形成了标准的Java组件。由于Servlet是用Java编写的,所以它与生俱来就有跨平台的特性,因此Servlet程序的设计完全和平台是无关的,同样的Servlet完全可以在ApacheIIS等不同Web服务器上执行,不管底层的操作系统是WindowsSolarisMacLinux还是其他的能支持Java的操作系统。

二:Serverlet运行环境。

典型的Servlet运行环境有JSWDKTomcatResin等,这几个都是免费的软件,适合用来学习ServletJSP。它们都自带一个简单的HTTP Server,只需简单配置即可投入使用,你也可以把它们绑定到常用的Web服务器上,如ApacheIIS等,提供小规模的Web服务。

三。Serverlet编译。

Servlet的编译和一般的Java程序是完全一样的,在使用javac编译的时候不需要任何特殊的参数。只要Servlet的编写是正确的,编译完后生成的Class文件就可以做为Servlet来运行了。如下例:、

import java.io.*;

import java.util.*;

import javax.servlet.http.*;

import javax.servlet.*;

   public class HelloServlet extends HttpServlet { 
          
//所有Servlet必须从HttpServlet派生
     public void doGet (HttpServletRequest req, HttpServletResponse res) 
     throws ServletException, IOException 
     
//doGet()是这个Servlet的核心,真正处理请求的地方
   {
   res.setContentType("text/html"); 
     
//设置相应的类型为text/html
   PrintWriter pw = res.getWriter(); 
     
//从HttpServletResponse得到输出流

   pw.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.0 Transitional//EN/">");
   pw.println("<head>");
   pw.println("<meta http-equiv=/"Content-Type/" content=/"text/html; charset=ISO-8859-1/">");
   pw.println("<!-- The Servlet expression tags interpolate script variables into the HTML -->");
   pw.println("<title>Hello, world!</title>");
   pw.println("</head>");
   pw.println("<body bgcolor=#cc99dd>");
   pw.println("<h1>Hello, world!</h1>");
   pw.println("</body>");
   
//上面的语句都是向客户端打印HTML文本
   pw.close(); 
   
//关闭HttpServletResponse,使Web服务器知道相应结束
  }
  public HelloServlet() {} 
//构造函数,可以不要
 }

表单是HTML中使用最广泛的传递信息的手段。搞清楚Servlet与表单的交互,就在客户端与服务器之间架起了一座桥梁。Servlet使用HttpServlet类中的方法与表单进行交互。在HttpServlet类中有几个未完全实现的方法,你可以自己定义方法的内容,但是必须正确使用方法名称以使HTTP Server把客户请求正确的映射到相应的函数上。

doHeader 用于处理HEADER请求
  doGet 用于处理GET请求,也可以自动的支持HEADER请求
  doPost 用于处理POST请求
  doPut 用于处理PUT请求
  doDelete 用于处理DELETE请求
  HttpServletService方法,当它接收到一个OPTIONS请求时,它会自动调用doOptions方法,当接收到一个TRACE请求时调用doTraceDoOptions默认执行方式是自动    决定什么样的HTTP被选择并返回哪个信息,在使用这些方法时必须带两个参数。第一个包含来自客户端的数据HttpServletRequest;第二个参数包含客户端的相        应HttpServletResponse

四:跟客户端的Applet相似,Servlet(这里Servlet的概念又回到了最原始的含义)也遵循严格的生命周期。在每个Servlet实例的生命中有三种类型的事件,这三种事件分别对应于由Servlet引擎所唤醒的三个方法:

1init()。当Servlet第一次被装载时,Servlet引擎调用这个Servletinit()方法,只调用一次。如果某个Sevlet需要特殊的初始化需要。那么Servlet编写人员可以重写该方法来执行初始化任务。这是一个可选的方法。如果某个Servlet不需要初始化,那么默认情况下将调用它父类的init方法。系统保证,在init方法成功完成以前,是不会调用Servlet去处理任何请求的。
  2service()。这是Servlet最重要的方法,是真正处理请求的地方。对于每个请求,Servlet引擎将调用Servletservice方法,并把Servlet请求对象和Servlet响应对象最为参数传递给它。
  3destroy()。这是相对于init的可选方法,当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源。

Servlet的生命周期:
  1 装载Servlet,这一项操作一般是动态执行的。然而,Servlet通常会提供一个管理的选项,用于在Servlet启动时强制装载和初始化特定的Servlet
  (2 Server创建一个Servlet实例
  (3 Server调用Servletinit方法
  (4 一个客户端请求到达Server
  (5 Server创建一个请求对象
  (6 Server创建一个响应对象
  (7 Server激活Servletservice方法,传递请求和响应对象作为参数
  (8 service方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
  9 service方法使用响应对象的方法。将响应传回Server,最终到达客户端。Service方法可能激活其他方法以处理请求。如doGetdoPost或其他程序员自己开发的方法
  (10 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此servletservice方法,将这两个对象作为参数传递给它,如此重复以上的循环,但无需再次调用init方法,Servlet一般只初始化一次
  (11 Server不再需要Servlet时,比如当Server要关闭时,Server调用Servletdestroy。



-------------------- android培训java培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值