您的位置:首页 > 文档 > 编程技术 >
 文章分类 

了解Servlet


创建:2005-10-28 00:00:00
作者:Unlinux
来自: http://www.Unlinux.com

Dracula译


什么是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引擎调用一个Servlets服务方法:

浏览器(客户)<====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

转载自:http://www.unlinux.com/doc/program/20051106/8015.html

评论】 【加入收藏夹】 【 】 【打印】 【关闭

 *  请尊重我们的劳动,转载请注明出自UnLinux.Com及作者名 * 

※ 相关链接
 ·网络协议全了解  (2005-10-28 00:34:21)
 ·网络协议全了解  (2005-10-28 00:34:21)
 ·网络协议全了解  (2005-10-28 00:34:21)
 ·了解Debian 系统  (2005-10-28 00:34:12)
 ·一劳永逸的数据库编码解决方案  (2005-10-28 00:09:07)
 ·了解硬盘分区  (2005-10-28 00:07:57)
 ·了解硬盘分区  (2005-10-28 00:07:57)
 ·全面了解和使用电子邮件服务器  (2005-10-28 00:00:00)
 ·了解自己的机器上有哪些服务在运行  (2005-10-28 00:00:00)
 ·全面了解Linux加载器  (2005-10-28 00:00:00)

Copyright © 2005 UnLinux.Com All Rights Reserved