分享
 
 
 

了解Servlet

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

什么是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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有