服务热线: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引擎调用一个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!</ h1>");
out. println("</ body></ html>");
}
}

httpservletrequest
?提供客户请求
?"getters"请求的特征,比如:
?请求头部,内容类型,长度,方法....
?请求url如同一个string
?servlet"path"
?客户安全性类型
?访问请求参数(通过name)
?请求中,数据在参与对象中的共享范围


请求协议
?getparmeternames()
?在html页上,返回一个的枚举的参数
?getparmetervalues(string name)
?返回multi-valued参数的值
?getparameter(string name)
?返回一个指定的命名的参数的值
?getreader()
?返回bufferedreader到输入视图

案例:
<p> please fill out this form with your name.
thanks!
<form method=" post"
action="/ servlet/ nameservlet">
<p> please enter your name:
<p> first name: <input name=" first" type=" text"
size=" 12" maxlength=" 20">
surname: <input name=" surname" type=" text"
size=" 15" maxlength=" 25">
<p> thank you! <input type=" submit"> <input
type=" reset">
</ form>


读入一个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

扫描关注微信公众号