服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

servlet 技术


  什么是servlets
  ?明白servlet api以及与cgi相比较
  ?知道在servlet的主要的类的使用。
  ?能够实现简单的servlets
  
  
  ?什么是servlet?
  ?一般地,服务器端java应用程序扩展了web服务器的功能。
  .在服务器上可以完整地运行
  .没有必要下载到浏览器
  .代替cgi脚本
  ?servlets的优势在于:
  .方便性与灵活性
  .安全性
  .执行效率
  
  安全性优势
  ?在服务器的范围中调用
  ?能够约束servlet的调用
  ?在安全体系中能够成为单一(全局)信号的一部分
  
  
  性能优势
  ?run in the same context as application server
  ?执行并且驻留在内存中
  ?有请求时提前被装入或装入
  ?通过http请求维持对话
  ?减轻后置系统的负担
  ?多线程
  ?可伸缩于多处理器以及多机种系统(ibm websphere performance pack)
  
  一般的servlet调用
  ?客户建立一个web服务请求,命名为一个servlet,就如同url的一部分
  ?web服务器向由一个servlet类的对象所定位的servlet引擎发送一个请求
  ?servlet引擎调用一个servlet's服务方法:
  
  浏览器(客户)<====url请求=====>web服务器<===>servlet对象(应用程序服务器)
  
  
  java servlet 应用程序接口api
  ?jsdk包括了两个包:
  javax.servlet
  javax.servlet.http
  
  javax.servlet.servlet
  | 实现
  javax.servlet.genericservlet a
  |
  javax.servlet.http.httpservlet a
  
  servlet
  ?表现一项服务
  ?一般通过url请求
  ?servlets通过应用程序服务器被装入
  ?在服务的初始化阶段(如果是预装入)
  ?在客户端首次请求时
  ?在servlet重新装入时
  
  servlet的生命周期
  ?在装入时init()方法被调用
  ?仅这一次
  ?当每个客户发出请求时,service()方法被调用
  ?当它被卸载时,destroy()方法被调用
  
  init()
  |
  service()
  |
  destroy()
  
  
  http servlet
  ?一个http-specific请求处理器
  ?加入两个http-specific的方法
  ?doget()--处理一个get请求(url)
  ?dopost()--处理一个post请求(html)
  ?子类代替了这两个信息并且可能代替init()和destroy()
  ?doget()和dopost()作这些工作并且被service()调用
  
  
  请求与响应
  ?service(),doget()和dopost()方法都具体有两个参数:
  ?httpservletrequest--提供请求数据(参数)httpsession信息等访问。
  ?httpservletresponse--提供允许servelt向发出请求的客户的响应的服务
  ?大多数servlet程序是用来读出请求并且写入响应
  
  
  httpservletresponse
  ?向客户提供通讯的通道
  ?允许servlet返回内容并且/或者是错误
  ?设置内容头(类型,长度......)
  ?重定向服务器以返回一个指的url
  
  应答协议
  ?getwriter()
  ?返回一个输出的printwriter
  ?setcontenttype(string type)
  ?为这个响应设置内容的类型
  ?类型是mime型
  ?sendredirect(string anurl)
  ?重定向浏览器到一个新的url
  
  
  简单的servelt
  
  public class myservlet extends httpservlet {
  public void doget( httpservletrequest req,
  httpservletresponse res)
  throws servletexception, ioexception {
  // get stream to output html on!
  res. setcontenttype(" text/ html");
  printwriter out = res. getwriter();
  // send out a simple banner
  out. println("< html>< body>");
  out. println("< h1> hello world!");
  out. println("");
  }
  }
  
  httpservletrequest
  ?提供客户请求
  ?"getters"请求的特征,比如:
  ?请求头部,内容类型,长度,方法....
  ?请求url如同一个string
  ?servlet"path"
  ?客户安全性类型
  ?访问请求参数(通过name)
  ?请求中,数据在参与对象中的共享范围
  
  
  请求协议
  ?getparmeternames()
  ?在html页上,返回一个的枚举的参数
  ?getparmetervalues(string name)
  ?返回multi-valued参数的值
  ?getparameter(string name)
  ?返回一个指定的命名的参数的值
  ?getreader()
  ?返回bufferedreader到输入视图
  
  案例:
  

please fill out this form with your name.
  thanks!
  

  action="/ servlet/ nameservlet">
  

please enter your name:
  

first name:   size=" 12" maxlength=" 20">
  surname:   size=" 15" maxlength=" 25">
  

thank you!   type=" reset">
  
  
  
  读入一个post
  public void dopost( httpservletrequest req,
  httpservletresponse res)
  throws servletexception, ioexception
  {
  …
  enumeration enum = req. getparameternames();
  while (enum. hasmoreelements()) {
  string name = (string) enum. nextelement();
  string value = req. getparameter( name);
  //… do something with each pair...
  }
  }
  
  调用servelet
  最普遍使用的调用httpservlet是通过类名(classname)比如:
  http://www.ibm.com/servlets/com.ibm.a.myservlet
  
  ?"load/run by classname"的支持通过另一个称为"invoker"的servlet所提供
  ?"invoker"servlet试图找到servlet的类的路径
  ?考虑到会有无名的servlet,一个servlet用这种方法装入运行
  在websphere中的servlet
  ?另一方面,大多数的servlet引擎支持servlet通过名字注册
  ?被使用的参数可以初始化
  ?参数约束servlet的行为
  ?一个servlet可以提供不同的服务(在不同的"short names")
  ?参数在init()方法中使用
  ?允许servlet被预装入
  ?通过requestdispatcher,允许简单定位
  ?允许servlet被保护
  
  摘要
  ?我们已经看到servlets的优势大于cgi
  ?安全性,灵活性,效率
  ?我们已经介绍了servlet的基本类和接口
  ?servlets,genericservlet,httpservlet,httpservletrequest,httpservletresponse
  
  
  visulalage for java 的复习
  ?首先,需要知道:
  ?ibm visualage for java 基本概念
  ?ide
  ?scrapbook
  ?debugger
  
  ?visualage for java与websphere之间的关系
  ?visualage for java:
  ?visual builders
  ?visual application builder
  ?enterprise access builder
  ?data,cics,rmi,c++
  ? many others
  工具:
  ?ide
  ?appletviewer
  ?smart guides
  ?debugger
  ?browsers
  ?scrapbook
  类库
  ?jdk1.1.7
  ?jdk1.2
  ?ibm enterprise connectivity
  编译器和虚拟机
  ?incremental
  ?java to byte code
  ?byte code to machine code translation
  ?multiple vms
  部件:
  ? javabeans
  ?ejb develpement environment
  ?websphere test environment
  技术支持
  ?integrated team environment
  ?scaleable
  
  集成开发环境
  ?组织管理项目,类,方法
  ?组队开发--聚宝库
  ?导入及导出类文件到开发环境同java文件一样
  ?优化编译
  ?视图:项目,类,界面,所有的问题
  ?搜索,智慧向导
  ?剪贴本,debugger

扫描关注微信公众号