浅析基于JSP技术的JavaBean和Servlet

2015-01-10 07:49刘晓峥
科技视界 2015年34期
关键词:服务器端客户端组件

刘晓峥

(长江工程职业技术学院,湖北 武汉 430212)

随着web 技术的出现,早期网络的集中计算逐渐被分布式计算所代替。Web 技术是一种分布式计算技术,使用这种技术构建企业应用时,通常需要开发大量的程序,这些程序部署在不同的计算机上,它们在应用中承担不同的职责。例如,根据功能不同可以分为用户界面展示、逻辑计算、数据处理。其中用户界面展示一般由动态网页完成。JSP技术就是一种动态网页技术标准。它是在传统的网页HTML 文件中插入Java 程序段和JSP 标记,从而形成JSP 文件。而逻辑计算和数据处理则是在后台由Java 程序写成的功能代码来完成,这些独立代码模块就是servlet,运行在服务器上。同时又经常用JavaBean 来封装事务逻辑。这样可以实现前台展示、业务逻辑、数据库操作三者的分离,使系统变得健壮和灵活。而初学者常面对的问题就是不知道如何理解servlet 与JavaBean 二者的区别。本文就从多个方面来阐述说明二者的用法。

1 servlet

1.1 概念

Servlet 实际上是Server+Applet 的意思,全称Java Servlet。是用Java 编写的服务器端程序。狭义的Servlet 是指Java 语言实现的一个接口,广义的Servlet 是指任何实现了这个Servlet 接口的类,一般情况下,人们将Servlet 理解为后者。

Servlet 运行于支持Java 的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下Servlet 只用来扩展基于HTTP 协议的Web 服务器。最早支持Servlet 技术的是JavaSoft 的Java Web Server。此后,一些其它的基于Java 的Web Server 开始支持标准的Servlet API。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态Web 内容。实现过程如下:

1)客户端发送请求至服务器端;

2)服务器将请求信息发送至Servlet;

3)Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;

4)服务器将响应返回给客户端。

1.2 生命周期

每个servlet 模块有其生命周期。一般过程如下:

1)客户端请求该Servlet;

2)加载Servlet 类到内存;

3)实例化并调用init()方法初始化该Servlet;

4)service()(根据请求方法不同调用doGet()或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());

5)destroy()。

在这个过程中,加载和实例化Servlet 这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在Server 启动时强制装载和初始化特定的Servlet。第一个客户端的请求到达Server,Server 调用Servlet 的init()方法(可配置为Server 创建Servlet 实例时调用,在web.xml 中<servlet>标签下配置<load-on-startup>标签,配置的值为整型,值越小Servlet 的启动优先级越高)。之后Server 创建一个请求对象,处理客户端请求,再创建一个响应对象,响应客户端请求。

Servlet 的service()方法很重要,它将传递请求和响应对象作为参数,获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息。它使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。

对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此Servlet 的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet 只初始化一次(只有一个对象),当Server 不再需要Servlet 时(一般当Server关闭时),Server 调用Servlet 的destroy()方法。

我们可以在eclipse 等开发平台中直接创建web 工程,平台工具可以自动对项目进行组织和部署。Servlet 和页面文件分开存储,使项目结构清晰,也实现了软件分层架构模型。

1.3 servlet 优势

1)方便

Servlet 提供了大量的实用工具例程,例如自动地解析和解码HTML 表单数据、读取和设置HTTP 头、处理Cookie、跟踪会话状态等。

2)功能强大

在Servlet 中,许多使用传统CGI 程序很难完成的任务都可以轻松地完成。例如,Servlet 能够直接和Web 服务器交互,而普通的CGI程序不能。Servlet 还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

3)可移植性好

Servlet 用Java 编写,Servlet API 具有完善的标准。几乎所有的主流服务器都直接或通过插件支持Servlet。

2 JavaBean

2.1 概念

JavaBean 是使用Java 语言描述的软件组件模型,简单地说,它就是一个可以重复使用的Java 类。JavaBean 可分为可视化组件和非可视化组件,其中可视化组件包括简单的GUI 元素(例如,文本框、按钮)及一些报表组件等。非可视化组件是在实际开发中经常被使用到的并且在应用程序中起着至关重要的作用。其主要功能是用来封装业务逻辑(功能实现)、数据库操作(例如,数据处理、连接数据库)等。

在实际的开发过程中,通常会出现重复的代码或者段落,此时就会大大降低程序的可重用性并且浪费时间。使用JavaBean 就可以大大简化程序的设计过程并且方便了其它程序的重复使用。JavaBean 在服务器端的应用具有非常强大的优势,非可视化的JavaBean 可以非常好地实现控制逻辑、业务逻辑、表示层之间的分离,从而大大降低了它们之间的耦合度。非可视化的JavaBean 现在多用于后台处理,这样会使系统具有一定的灵活性。

2.2 JavaBean 规范

编写JavaBean 就是编写一个Java 的类,这个类创建的一个对象称作一个Bean。为了能让使用这个bean 的应用程序构建工具(比如JSP 引擎)知道这个bean 的属性和方法,只需在类的方法命名上遵守以下规则:

1)如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:

◆getXXX():用来获取属性xxx。

◆setXXX():用来修改属性xxx.。

2)对于boolean 类型的成员变量,即布尔逻辑类型的属性,允许使用"is“代替上面的"get"和"set"。

3)类中方法的访问属性都必须是public 的。4)类中包含公共无参构造方法

3 servlet 与JavaBean 的区别

Servlet 和JavaBean 都是用Java 语言写的程序模块,在服务器运行,但二者的实际意义和使用层面是不同的。JavaBean是一个普通的Java 类,里面为属性增加了getter 和setter 进行封装并提供默认构造。而Servlet 应当只在展示层存在。在一个完整MVC 模式 中,JavaBean、servlet、JSP分别对应M(model)、C(controller)、V(view)三个层面。举例:servlet 查询数据库——JavaBean 保存查询结果——JSP 显示查询结果。

Servlet 是只能在JavaEE 容器中存活的特殊Java 类,就像是鱼缸里的鱼,没有容器Servlet 是不能生存的。而JavaBean 则可以脱离JavaEE 环境单独存在,按照Sun 公司的说法,既可以用在客户端,也可以用在服务器端。另外,根据上文对于二者规范的说明,也可以明显看出,二者在程序语句方面的规范与实现的接口有很大区别。Servlet需要生命周期框架,而JavaBean 并不需要。

4 结束语

Servlet 与JavaBean 是JSP 技术乃至J2EE 平台中很常用的技术。掌握二者的编程规范、工作层面和区别,才能编写出功能明确、结构正确的web 项目。

[1]王先国.JSP 基础与编程实践[M].清华大学出版社,2012,1.

[2]李迎秋.JSP 实用教程[M].大连理工大学出版社,2008.2.

[3]javaBean 和Servlet 的 区 别.http://blog.sina.com.cn/s/blog_71c1942e01013gsb.html[OL].

猜你喜欢
服务器端客户端组件
无人机智能巡检在光伏电站组件诊断中的应用
Linux环境下基于Socket的数据传输软件设计
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
风起新一代光伏组件膜层:SSG纳米自清洁膜层