动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.jrlib(公共类库)_src_0.5beta源代.
.用JavaBean实现文件上载(5).
.java迈步从头越(java环境配置).
.Java对战.NET,战争与和平的游戏.
.Structs中基本配置入门.
.Eclips使用秘技(绝对经典).
.Jini技术介绍(一).
.Java是传值还是传引用.
.IntelliJ IDEA 让开发不再单调.
.使用 Struts portlet 实现页面导.
.对于JAVA基础测试中常见的异常问.
.Java中finalize()的另类用法.
.Struts 配置与组件介绍.
.一个 Java 编程老手的设计语录.
.用Java实现Web服务器.
.如何在JAVASE中使用Hibernate.
.在Java中解读压缩文件.
.在Struts和Hibernate之间搭起桥梁.
.用Java实现Web服务器 HTTP协议.
.原创-Effective java学习笔记3:用.

Servlet简介

发表日期:2008-1-5 |



  Servlet是对支持Java的服务器的一般扩充。它最常见的用途是扩展Web服务器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一种动态加载的模块,为来自Web服务器的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此它不依靠于浏览器的兼容性。
  servlet容器:
  负责处理客户请求、把请求传送给servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与servlet之间的接口是由servlet API定义好的,这个接口定义了servlet容器在servlet上要调用的方法及传递给servlet的对象类。
  servlet的生命周期:
  1、servlet容器创建servlet的一个实例
  2、容器调用该实例的init()方法
  3、假如容器对该servlet有请求,则调用此实例的service()方法
  4、容器在销毁本实例前调用它的destroy()方法
  5、销毁并标记该实例以供作为垃圾收集
  一旦请求了一个servlet,就没有办法阻止容器执行一个完整的生命周期。
  容器在servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理。容器可以决定在任何时候把这个实例从内存中移走。在典型的模型中,容器为每个servlet创建一个单独的实例,容器并不会每接到一个请求就创建一个新线程,而是使用一个线程池来动态的将线程分配给到来的请求,但是这从servlet的观点来看,效果和为每个请求创建一个新线程的效果相同。
  
  servlet API
  servlet接口:
  public interface Servlet
  它的生命周期由javax.servlet.servlet接口定义。当你在写servlet的时候必须直接或间接的实现这个接口。一般趋向于间接实现:通过从javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生。在实现servlet接口时必须实现它的五个方法:
  init():
  public void init(ServletConfig config) throws ServletException
  一旦对servlet实例化后,容器就调用此方法。容器把一个ServletConfig对象传统给此方法,这样servlet的实例就可以把与容器相关的配置数据保存起来供以后使用。假如此方法没有正常结束就会抛出一个ServletException。一旦抛出该异常,servlet就不再执行,而随后对它的调用会导致容器对它重新载入并再次运行此方法。接口规定对任何servlet实例,此方法只能被调用一次,在任何请求传递给servlet之前,此方法可以在不抛出异常的情况下运行完毕。
  service():
  public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException
  只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,后一个提供servlet构造响应的方法。
  destroy():
  public void destroy()
  容器可以在任何时候终止servlet服务。容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时destroy()不被执行。
  getServletConfig():
  public ServletConfig getServletConfig()
  在servlet初始化时,容器传递进来一个ServletConfig对象并保存在servlet实例中,该对象答应访问两项内容:初始化参数和ServletContext对象,前者通常由容器在文件中指定,答应在运行时向sevrlet传递有关调度信息,后者为servlet提供有关容器的信息。此方法可以让servlet在任何时候获得该对象及配置信息。
  getServletInfo():
  public String getServletInfo()
  此方法返回一个String对象,该对象包含servlet的信息,例如开发者、创建日期、描述信息等。该方法也可用于容器。
  
  GenericServlet类
  Public abstract class GenericServlet implants Servlet,ServletConfig,Serializable
  此类提供了servlet接口的基本实现部分,其service()方法被申明为abstract,因此需要被派生。init(ServletConfig conf)方法把servletConfig对象存储在一个private transient(私有临时)实例变量里,getServletConfig()方法返回指向本对象的指针,假如你重载此方法,将不能使用getServletConfig来获得ServletConfig对象,假如确实想重载,记住要包含对super.config的调用。2.1版的API提供一个重载的没有参数的init()方法。现在在init(ServletConfig)方法结束时有一个对init()的调用,尽管目前它是空的。2.1版API里面,此类实现了ServletConfig接口,这使得开发者不用获得ServletConfig对象情况下直接调用ServletConfig的方法,这些方法是:getInitParameter(),getInitParameterNames(),getServletContext。此类还包含两个写日志的方法,它们实际上调用的是ServletContext上的对应方法。log(String msg)方法将servlet的名称和msg参数写到容器的日志中,log(String msg,Throwable cause)除了包含servlet外还包含一个异常。
  
  HttpServlet类
  该类扩展了GenericServlet类并对servlet接口提供了与HTTP更相关的实现。
  service():
  protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
  public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
  该方法作为HTTP请求的分发器,这个方法在任何时候都不能被重载。当请求到来时,service()方法决定请求的类型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把请求分发给相应的处理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),doPut(),doTrace())每个do方法具有和第一个service()相同的形式。为了响应特定类型的HTTP请求,我们必须重载相应的do方法。假如servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。
  getLatModified():
  protected long getLastModified(HttpServletRequest req)
  该方法返回以毫秒为单位的的自GMT时间1970年1月1日0时0分0秒依靠的最近一次修改servlet的时间,缺省是返回一个负数表示时间未知。当处理GET请求时,调用此方法可以知道servlet的最近修改时间,服务器就可决定是否把结果从缓存中去掉。
  
  HttpServletRequest接口
  public interface HttpServletRequest extends ServletRequest
  所有实现此接口的对象(例如从servlet容器传递的HTTP请求对象)都能让servlet通过自己的方法访问所有请求的数据。下面是一些用来获取表单数据的基本方法。
  getParameter()
  public String getParameter(String key)
  此方法试图将根据查询串中的要害字定位对应的参数并返回其值。假如有多个值则返回列表中的第一个值。假如请求信息中没有指定参数,则返回null。
  getParametervalues():
  public String[] getParametervalues(String key)
  假如一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应参数的所有值。假如请求信息中没有指定参数,则返回null。
  GetParameterNames():
  Public Enumeration getParameterNames()
  此方法返回一个Enumeration对象,包含对应请求的所有参数名字列表。
  HttpServletResponse接口
  public interface HttpServletResponse extends servletResponse
  servlet容器提供一个实现该接口的对象并通过service()方法将它传递给servlet。通过此对象及其方法,servlet可以修改响应头并返回结果。
  setContentType():
  public void setContentType(String type)
  在给调用者发回响应前,必须用此方法来设置HTTP响应的MIME类型。可以是任何有效的MIME类型,当给浏览器返回Html是就是”text/html”类型。
  getWriter():
  public PrintWriter getWriter()throws IOException
  此方法将返回PrintWriter对象,把servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的UniCode编码字符转换成正确的编码以使客户端能够阅读。
  getOutputStream():
  public ServletOutputStream getOutputStream() throws IOException
  此方法返回ServletOutputStream对象,它是java.io.OutputStream的一个子类。此对象向客户发送二进制数据。
  setHeader():
  public void setHeader(String name,String value)
  此方法用来设置送回给客户的HTTP响应头。有一些快捷的方法用来改变某些常用的响应头,但有时也需要直接调用此方法。
  编译条件
  需要从http://java.sun.com/prodUCts/servlet/ 获得一份JSDK的拷贝,并把servlet.jar移动到JDK安装目录下的\jre\lib\ext目录下。假如是JDK1.1,则移动到\lib下,并在CLASSPATH中加入servlet.jar的绝对路径。
  运行条件
  需要Apache Jserv,Jrun Servlet Exec,Java Web Server,Weblogic,WebSphere,Tomcat,Resin等servlet服务器端程序。
  简单范例
  
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  public class HelloWorld extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)  throws IOException, ServletException 
   {   
   response.setContentType("text/html");  
    PrintWriter out = response.getWriter();
      out.println("<html>");  
    out.println("<body>");   
   out.println("<head>");   
   out.println("<title>Hello World!</title>");  
    out.println("</head>");
上一篇:Servlet 容器的工作原理 ( 四 ) 人气:458
下一篇:Servlet和JavaServerPages的集成应用 人气:462
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成