当前位置:文档之家› rad复习2翻译

rad复习2翻译

rad复习2翻译
rad复习2翻译

Servlet

判断题知识点

Web 应用程序的演近–JavaServer Pages

service(req,res)

Web container

请求

响应

methods()

forward(req,res)

methods()

service(req,res)

JavaServer Page

Servlets 对业务逻辑和表示逻辑的分离不佳使用JSP 和JavaBeans 可以改善这种分离效果

6

Figure 2-5.Web application evolution –JavaServer Pages

RD7927.0

Notes:

多个Servlet 自行组合会带来一个问题—如果一个Servlet 负责返回所有内容给浏览器,那么S 必须以某种方式嵌入将HTML(或其他内容)嵌入到Java 代码中.这样会带来几个方面的问题:事实上,HTML 嵌入到Java 代码中意味着必须使用Java 编辑器(所以它不可能使用高质量的HTML 编辑器提供的预览策略),代码就必须由Java 开发者来写(而不是有更多合适技能展示的设计师来写)并且控制应用程序的流程和展示的任务最重可能被混合到一起(给予重用的机会越来越少,更难以维护,并且平行开发的机会也越少).使用Java beans 能改善这种情况这就引出了你将会很快看到的模型-视图-控制器模式.

请求适配器RequestDispatcher 是由Web 容器提供的一种机制,它用来管理将一个请求响应对从一个资源传递(如一个Servlet)到另一个资源(如一个JSP 页)的过程.

?Servlet and JSP Development ?Copyright IBM Corp.2003,2007

Course materials may not be reproduced in whole or in part

JavaBean

RequestDispatcher 请求适配器

判断题知识点

模型-视图-控制器模式

?模型-视图-控制器(MVC)是一种设计模式

应用广泛并且被当做J2EE开发的核心概念

各种实用的优点(后面详细包括了)

?促进代码重用

?缩短开发时间

模型

?代表基础数据和业务逻辑的一个地方

?不包含关于用户界面的信息

视图

?用户界面–用户能看到和响应的东西

?代表模型的一个窗口–有许多这样的东西

控制器

?连接模型和视图

?用于模型和视图之间的通信

?第四层–持久层–经常被添加到模式中

Figure2-7.The model-view-controller pattern RD7927.0 Notes:

MVC在J2EE的上下文的例子将在下一页幻灯片中提供.从模型中分离出持久层并进一步将更多的层从模型中抽象出来,增强的好处很快会体现出来.

9Student Notebook

MVC–应用到J2EE

Controller

J2EE server

2

Web browser

1Transfer

servlet

4

Model

Transfer

JavaBean

75

Transfer

result

JavaBean

H H T T M M L L

d d o o c c

6

3

Balance

JSP

View

Database

Persistence

Figure2-8.MVC–application to J2EE RD7927.0 Notes:

这个图显示了主要的J2EE组件提供的MVC模式的实现框架.这个想法是以J2EE应用程序开发为中心的.

简答画图题知识点

10

Student Notebook

MVC –优点

?

促进代码重用

模型的目的是在一个地方提供业务逻辑和数据访问

这个逻辑可以无需任何额外的编码便可以同时被多个应用程序重用?

减少开发时间

模型,视图,控制可以并行开发?

易于维护

视图可以在不影响模型的情况下被改变

-一个网页视图可以在不改动模型的情况下将表格显示改成图表显示

模型层的改变不影响视图

-例如,其中一项保险费的计算方式发生了变化,但是提供业务方法的接

口仍保持相同

数据可以在不影响视图和模型的情况下被移动

-分层的概念允许了更多的灵活性Figure 2-9.MVC –Benefits

RD7927.0

Notes:

通过使用MVC,开发者可以专注某一层或者使用最舒适的方式对待技术.

2-10Servlet and JSP Development ?Copyright IBM Corp.2003,2007

简答画图题知识点

Student Notebook

判断题知识点

J2EE介绍

?Java2平台企业版(J2EE)规范包括:

J2EE平台

-一个容器,服务和通信的标准平台

J2EE兼容性测试包(J2EE符合性测试包)

-为了验证J2EE平台产品符合标准

-WebSphere Application Server6.1是符合J2EE1.4规范的

J2EE参考实现

-对J2EE为原型的程序开发提供了J2EE平台的操作定义

J2EE蓝图

-多层开发,瘦客户端应用程序的最佳实践

?J2EE是由Java Community Process(JCP)组织开发的

主要的企业软件供应商之间的协作

IBM积极推动J2EE开发过程

11

Figure2-10.J2EE introduction RD7927.0 Notes:

J2EE平台的定义来自J2EE规范.

Student Notebook

J2EE

架构

RMI-IIOP

14

Figure 2-13.J2EE architecture RD7927.0

Notes:

这些缩写在下面的幻灯片中有说明.J2EE 规范中的每种类型的容器所需要的一系列服务在后面详述时会提到.

这个图可以在J2EE 1.4规范文档中直接找到https://www.doczj.com/doc/404461643.html,/en/jsr/all.

2-14Servlet and JSP Development ?Copyright IBM Corp.2003,2007

选择

理解不同的组件,容器

简答画图题知识点

J2EE 多层模型

客户端层

中间层

企业信息系统层

Web client

遗留程序

Web client

Web 容器(servlets,JSPs,HTML)

关系型数据库企业资源计划系统

防火墙

15

Figure 2-14.J2EE multi-tier model RD7927.0

Notes:

此图显示了不同的容器和组件如何允许一个应用程序的功能被分成层级或层.如WebSphere Application Server 软件通常被描述为应用集成中间件,因为它提供了服务,允许在该图的中间的组件前端与后端资源在企业内部可用范围的整合.

?Copyright IBM Corp.2003,2007Unit 2.J2EE Web Component Introduction 2-15

简答画图题知识点

什么是servlet?

?servlet是J2EE应用程序中一个标准的,服务器端组件,它执

行的业务逻辑代表一个HTTP请求

运行在服务器层(而不是客户端)

一个替代其他服务器技术(如CGI脚本)的纯Java方案

由Web 容器管理

request

response

3

Figure3-2.What is a servlet?RD7927.0

判断题知识点

Notes:

根据Java Servlet规范(2.4版):“一个servlet是一个Web组件,由容器管理,动态生成内容. Servlets是小的,平台无关的Java类被编译成可以动态加载到Web服务器并由Web服务器运

行的体系结构中立字节码.”简而言之,一个servlet是一段运行在服务器上的Java代码它代表一个请求.这与CGI(公共网关接口)类似.CGI是一个允许Web服务器运行代表HTTP请求的

应用程序代码的原始机制.

因为servlet是Java类,它运行在提供servlet运行时的Java虚拟机上.

?Copyright IBM Corp.2003,2007Unit3.Servlet Overview3-3

Course materials may not be reproduced in whole or in part

without the prior written permission of IBM.

判断题知识点

HTTP 协议–请求样例

?浏览器和服务器之间的交流?

请求阶段

’请求(例子中使用POST 协议)’请求头的值’空行

’Post 传输的数据(如果请求方法是POST)

POST /Music/SearchServlet HTTP/1.1Accept:*/*

Referer:https://www.doczj.com/doc/404461643.html,/Music/musicSearch.html Accept-Language:en-us

Content-Type:application/x-www-form-urlencoded UA-CPU:x86

Accept-Encoding:gzip,deflate

User-Agent:Mozilla/4.0(compatible;…)Host:localhost:9080Content-Length:50

Connection:Keep-Alive Cache-Control:no-cache

song_title=Hello&song_artist=Jones&limit_number=20

6

Figure 3-5.HTTP protocol –Sample request

RD7927.0

Notes:

HTTP 是一个简单的,无状态协议.当客户端发出请求时,一个HTTP GET 或POST 请求被发送给服务器.服务器处理请求并返回结果.这时业务处理完成.

请注意上面的例子是对servlet /servlet/MusicServlet 发送POST 请求.同样要注意HTTP 版本(这个例子为1.0版)和其它头部(Connection:User-Agent:,Host:,等等).Post 传输的数据在这个例子中是以song_title 开头的文本数据.

Servlet instance

Application

server

Servlet 处理流程

?客户端发出一个请求,请求的URL 中的一部分以servlet 命名.?Web 服务器将请求转发给Web 容器,它找到一个servlet 类的一个实例.

?Web 容器调用这个servlet 的service 方法.

?servlet 动态地构建一个响应传递给服务器并把它传递给Web 服务器.外部资源或许也许会被使用.?Web 服务器发送响应给客户端.

URL request

Browser (client)

response

Web server

8

Figure 3-7.Servlet process flow

RD7927.0

Notes:

Servlets 实现了一个通用的在客户端和服务器之间处理消息流的请求/响应范例.这个页面显示了一个高层的客户端到servlet 的处理流程.

javax.servlet.Servlet 是一个接口.javax.servlet.GenericServlet 实现了servlet 接口service()方法在所有servlets 中都有定义.

12-12Servlet and JSP Development ?Copyright IBM Corp.2003,2007

选择

Servlet 处理流程

Student Notebook

判断题知识点

构建一个简单的Javaservlet

?为了创建一个servlet响应HTTP请求,你必须:

创建一个类继承javax.servlet.http.HttpServlet

重载doGet或doPost方法用于处理HTTP GET或POST请求

?处理HttpServletRequest的输入值

?调用业务进行处理

?设置HttpServletResponse值

?通过输出对象PrintWriter输出HTML

?Servlets本质上是多线程的

MyServlet

instance

9

Figure3-8.Building a simple Java servlet RD7927.0 Notes:

一个通用的servlet应该重写它的service()方法.HTTP servlet经常不需要重写service()

方法.

如果你希望你的servlet同时能处理GET和POST请求,你可以在doGet()方法中调用doPost()方法(反之亦然).

doGet()和doPost()方法都返回空类型并且都带两个输入参数.第一个参数的类型为HttpServletRequest,第二个参数的类型为HttpServletResponse.两个方法都能抛出ServletException异常和java.io.IOException异常.

?Copyright IBM Corp.2003,2007Unit3.Servlet Overview3-9

Student Notebook

一个简单的Javaservlet 例子

package com.ibm.example.servlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;import java.io.IOException;import java.io.PrintWriter;

public class VerySimpleServlet extends HttpServlet {public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException,IOException {St

ring browser =request.getHeader("User-Agent ");

response.setStatus(HttpServletResponse.SC_OK);//default response.setContentType("text/html ");//default PrintWriter out =response.getWriter();

out.println("Simple servlet ");out.println("");

out.println ("Browser details:"+browser);out.println("");

}}

10

Figure 3-9.A simple Java servlet example RD7927.0

Notes:

你的servlet 需要做的第一件事是处理HttpServeltRequest 参数中的任何头部,cookies,输入数据或者表单数据.上图的这个servlet 读取了User-Agent 请求头,它提供了用户浏览器的详细信息.

下一步你的servlet 应该设置HttpServletResponse 对象的任何响应头的值.这个servlet 简单的设置了状态码为SC_OK.

最后你的servlet 需要构建输出文档(在这个例子中是一个HTML 文档).

选择读懂代码

判断题知识点

J2EE 应用->模块->组件

选择

掌握J2EE 文件结构图

Installed RARs

J2EE application EAR file

Application

DD

EJB module JAR file Web module WAR file Client module JAR file

EJB DD

Web services DD

Web DD

Web services DD

Client DD

EJBs Servlets

JavaServer Pages

HTML,GIFs,etc.

Client classes

3

Figure 4-2.J2EE Application ->Modules ->Components

RD7927.0

Notes:

一个J2EE 应用程序被打包成企业级归档文件,文件以.EAR 作为扩展名.这个应用程序有一个部署描述符文件(application.xml)在部署时允许配置指定定容器的环境.J2EE 组件被划分成模块组,并且每个模块有自己的部署描述符.部署描述符在这张幻灯片上表示为方角矩形.

EJB 模块由相关联的EJBs 构成单个模块,并且被打包成Java 归档文件(JAR).注意所有一个模块的的所有EJBs 仅有一个部署描述符.

Web 模块由servlet 类文件,JSP 页,HTML 文件,和图像等组成.它们被打包到Web 应用程序归档文件中(WAR).

客户端应用程序模块被打包到Java 归档文件中(JAR).

资源适配文件(J2EE 连接器架构的一部分)被打包到资源适配归档文件中(RAR 文件).

?Copyright IBM Corp.2003,2007Unit 4.Supporting Perspectives for Developing J2EE Applications 4-3

简答画图题知识点

(Initialize failed)

Initialize

Available for service Unavailable

for service

(Unavailable exception thrown)

Destroy

Servicing requests

Unload

Create

Javaservlet 生命周期

选择

掌握生命周期中各个方法及执行顺序,作用

3

Figure 6-2.Java servlet life cycle RD7927.0

Notes:

servlet 生命周期在Java Servlet API 的servlet 接口中的init,service (doGet()或doPost()),和destroy 方法中都有表述.这个图是单个servlet 的视觉图.

创建

?当容器启动或者容器确定需要servlets 处理请求时,servlets 被加载和实例化.

初始化

?在处理客户端的请求之前,servlet 需要被初始化.

?init()方法执行一次性的活动,如加载servlet 参数,初始化昂贵的资源.

?Copyright IBM Corp.2003,2007Unit 6.Servlet API (Part I)6-3

简答画图题知识点

Student Notebook

1.有两个init()方法.一个不带输入参数,另一个带一个ServletConfig引用类型作为一个

参数.init()方法允许servlet访问在servlet中指定的名字-值对作为初始化参数.

ServletConfig对象能够获得ServletContext对象,这个对象存放了servlet环境的描述信息.

请求处理:

2.servlet接收客户端请求并且通过Web服务器发送响应.

3.service(),doGet(),doPost()...方法被调用用来响应客户端(每个HTTP请求在不同的线

程中).默认情况下每当一个HTTP GET请求被Web客户端发送过来时(通常是一个URL结果)service()方法调用doGet()方法,每当一个HTTP POST请求被Web浏览器发送过来时(通常是是一个HTML表单动作的结果)service()方法调用doPost()方法.

结束服务

4.当容器需要节省内存资源或者它正在关闭自身时Web容器从服务中删除servlet.

5.容器摧毁收集servlet的垃圾,并调用destroy()方法.

6.destroy方法应该确保所有servlet线程已经完成,而且应该撤销那些不会因为servlet销毁

而撤销的任何初始化工作.

判断题知识点

9-34Servlet and JSP Development?Copyright IBM Corp.2003,2007

Course materials may not be reproduced in whole or in part

without the prior written permission of IBM.

Student Notebook

判断题知识点Javaservlet API

?servlet API是一组Java类用于定义在Web客户端和Web服务

器之间的标准接口

?Servlet API包括两个包:

javax.servlet

javax.servlet.http Array

4

Figure6-3.The Java servlet API RD7927.0 Notes:

在你的servlets中定义在这些包中的很多类型将被引用.因此,你通常需要导入这些类型或

者它们的包.

这些类和接口的由Servlet API定义的两个包组成,javax.servlet和javax.servlet.http. WebSphere6.1支持2.4版本的Servlet API.

大部分servlets被用在使用HTTP协议在Web客户端(浏览器)和Web服务器/应用程序服务器之间通信的Web环境中.大部分的标准处理都必须发生在通过类

javax.servlet.http.HttpServlet管理的基于HTTP的环境中.一个典型的servlet集成这个类并

重载一个或者多个标准方法,例如,doGet()或者doPost(),用于特定的servlet行为.这类似于客户端模型中的继承java.applet.Applet并且重写init(),start(),等等.

?Copyright IBM Corp.2003,2007Unit6.Servlet API(Part I)6-5

判断题知识点

Student Notebook

ServletConfig 和初始化参数

?在初始化期间ServletConfig 被Web 容器使用将信息传递给servlet

?通过GenericServlet 的一个方法访问’getServletConfig()?ServletConfig :

’包含一组名字-值对形式的初始化参数

public String getInitParameter(String name)public Enumeration getInitParameterNames()

’维护了一个ServletContext 对象的引用,这个对象保存了服务器的servlet 信息

public ServletContext getServletContext()

5

Figure 6-4.ServletConfig and initialization parameters

RD7927.0

Notes:

ServletConfig 对象允许从Web 应用程序的配置信息里访问名字-值初始化参数.这个配置对象也提供了方法供servlet 访问ServletContext 对象.ServletContext 对象描述了servlet 的运行时环境.HttpServlet 类通过使用超类GenericServlet 也实现了ServletConfig 接口.结果就是你可以直接调用HttpServlet 类的getInitParameter()和getInitParameterNames()方法.

getInitParameter(String)方法返回一个字符串包含初始化参数指定字符串对应的值.getInitParameterNames()方法返回servelt 的初始化参数的所有名字的字符串对象的枚举(Enumeration )类型.

getServletContext()方法返回ServletContext 当前执行的servlet 的一个引用.

9-6Servlet and JSP Development ?Copyright IBM Corp.2003,2007

Course materials may not be reproduced in whole or in part

without the prior written permission of IBM.

简答画图题知识点Servlet在web.xml文件中的定义

RegistrationServlet

RegistrationServlet

com.ibm.exam.servlet.RegistrationServlet

MaxTries

4

AutoSave

false

1

RegistrationServlet

Register

6

Figure6-5.Servlet definition in web.xml file RD7927.0 Notes:

上面的web.xml源文件显示了servlet初始化参数的编码.处理这些初始化参数的代码在下一页显示.

判断题知识点

HttpServlet

?一个特定HTTP 请求的处理

?添加特定的HTTP 方法:

’doGet()–处理GET 请求(URL)

’doPost()–处理POST 请求(HTML 表单)

?子类重载doGet(),doPost(),和其它方法并且还可能重载init()和destroy()方法

?通常情况下,service()方法调用doGet()and doPost()进行工作

8

Figure 6-7.HttpServlet

RD7927.0

Notes:

javax.servlet.http.HttpServlet 是大多数你写的servlet 的基类.它提供了一个可重载的service 方法,和一组doX()方法,X 与HTTP 请求方法一致,例如,doGet(),doPost(),或doPut().

重载的service 方法的任务是观察HTTP 请求流,决定请求方法,并委托给相应的专业的服务方法处理.如,doGet().

HttpServlet 的子类通常会重载doGet(),doPost(),或者都重载,并且有可能会重载init()或destroy().有一些额外的do ...方法也会被重载.如,doOptions(),doTrace(),doDelete()和doPut(),对应其他HTTP 方法.然而,doGet()和doPost()是最常用的.

?Copyright IBM Corp.2003,2007Unit 6.Servlet API (Part I)6-9

请求协议

?请求对象封装了客户端请求的所有信息.下面的方法可以用来访

问参数:

’getParameterNames()

?返回HTML参数的一个枚举(Enumeration)

’getParameterValues(String name)

?返回多值参数的值

’getParameter(String name)

?返回指定名字参数的值

’getReader()

?返回一个BufferedReader到视图的输入

选择

方法

11

Figure6-10.Request protocol RD7927.0 Notes:

请求参数集包括查询字符串参数和post body体参数的聚合.聚合的顺序是查询字符串参数优先于post body体数据.当一个查询字符串和post body体有相同的名字时,值显示为相同名字的的多个值.

当下列所有条件都满足时,Post表单形式的数据被读入到request的输入流并被加入到聚合的参数集:

?请求类型为HTTP或HTTPS.

?HTTP请求为POST请求.

?请求的内容类型为application/x-www-form-urlencoded.

?针对任意的input request对象,servlet都是调用getParameter方法获取.

如果以上的一个或多个条件不成立,post数据会被request对象的输入流读取.

6-12Servlet and JSP Development?Copyright IBM Corp.2003,2007

Course materials may not be reproduced in whole or in part

without the prior written permission of IBM.

相关主题
文本预览
相关文档 最新文档