admin 管理员组文章数量: 1086019
2024年4月17日发(作者:结束网页进程)
维普资讯
实用第一 智慧密集
构建网站软件组合系列讲解
用JSP+Apache+Tomcat+JavaBeans+Servlet+Oracle8i+Solaris 7构建网站
谷和启
概述
1 JSP简介
马丽萍
记,还可接受第三方开发的标记,从而可以方便使用第三方提
一
、
供的功能组件
2.JSP的开发运行环境
JSP(JavaServer Pages)是由Sun Microsyslems公司倡导、许
多公司参与一起建立的一种动态阿页技术标准 该技术为创建
显示动态生成内容的Web页面提供了一个简捷而快速的方
法 JSP技术的设计目的是使得构造基于Web的应用程序更加
容易和快捷.而这些应用程序能够与各种Web服务器 应用
(1)运行JSP最少需要三样东西:JSP引擎、Web服务器
和JVM(J a虚拟机)。
它们实现的功能是:
●JSP引擎:主要完成对JSP代码的转换.把它转换戚
SERVLET代码,并做出判断,判断是否要对SERVLE7代码进
行重新编译,还是直接执行,然后向JVM发出通知=
服务器、浏览器和开发工具共同工作 JSP规范是Web服务
器、应用服务器、交易系统、以及开发工具供应商间广泛台作
的结果。在传统的阿页HTML文件( hun, hind)中加^Ja—
a程序片段(Scripdet)和JSP标记(t g),就构成了JSP两页(
jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其
中的程序片段,然后将执行结果以HTML格式返叫给客户。程
●Web服务器:主要完成一个服务器最基本的功能,如
接受客户端的请求,并把结果传回给客户端。还有,这个Web
服务器必须是支持JSP服务的服务器,不然它将无法和3SP引
擎进行沟通
●JVM:主要完成对SERVLET代码的编译和对字节码的
序片段可以操作数据库 重新定向网页以及发送email等等,
这就是建立动态网站所需要的功能。所有程序操作都在服务器
执行,它接受来自JSP引擎的通知 知道要干什么,然后用自
己的命令完成动作,并把结果告知JSP引擎。
1)现在能宴现JSP引擎功能的常见软件有:
●Js帅K(JavaServer web Development Kit):JavaSoft是
端执行,阿络上传送给客户端的仅是得到的结果、对客户浏览
器的要求最低
JSP特性:
官方提供的一个JSP引擎,同时它也具有Web服务器的功
能,是一个实现JSP非常好的软件,使用的人也最多.一般我
们都以此为准。
●Tomcat:又一个很多人使用的JSP引擎。
1)可穆植性:Java se kt程序则具有Java程序的优点,
可运行在任何平台之上,大多数Web及应用服务器都支持Ja-
va及sePzlet API
2】性能上:JSP每个程序装载一次,并驻留在服务器内存
●Java web ser r:JavaSoft公司推出的又一JSP引擎
●JRUN:一个不错的软件,它能让微软的IIS和PWS支
持JSP服务
2)支持JSP服务的web服务器有:
Apache:一个垒球应用非常广泛的Web服务器 同时它
现在也推出了支持JSP服务的版本。还有上面JSWDK,它不
为以后请求服务。由于Java Sert,elt具有Java的所有优点,开
发起来也相对容易,Java简化了对异常的处理;它的面向对象
特性使开发^员的协作成为一件简单的事。
JSP技术从三个方面加胰动态阿站开发:
●将静态页面的开发和动态内容的生成分开
JSP中通过使用HTML或XML标记来规划、设计web页
的布局和风格;而用JSP标记来实现动态的内容.生成动态内
容的部分被封装起来运行于服务器端;这样页面布局和风格可
单独编辑与调试而不影响动态内容生成
●组件的重用
光是JSP引擎,同时还可作Web服务器,还有IIs和PWS结
台了JRLN也能支持JSP服务。
Weblogic:一个功能十分强大的服务器软件,配置比较简
单,对JSP的扩展十分强大,附带数据库JDBC驱动程序,支
持JHTML,是目前市场占有率最高的服务器。
WebSphere:IBM的服务器软件,功能很强大,与DB2、Visual
多数JSP页通过重用与平台无关的组件--JavaBeans来完
成曼杂的要求 这些组件可在开发人员中重复使用一
●通过标记来简化页面开发
Age等IBM的开发工具相互配套,开发Web程序非常方便
3)JVM有:
通过JSP提供 标记,开发人员可以很容易使用Beans组
件。设置和访问它们的属性。同时JSP也允许用户自定义标
最常用的是JDK和JBuild 它们之间很大的不同就是JDK
是DOS界面,而Jbuild是图形窗口界面;当然使用最多的要
c衄|pmr 唧 m s s矗蛳№n№z00 ̄.3 5
维普资讯
实用第一 智慧密集
算JDK,它是JavaSofi提供的一个免费软件。由于JSWDK既
有集成式web信息管理工具的数据库=
能作JSP引辈,又可以允当Web服务器,所 应用广泛 =
Oracle正在推动Java成为下一代应用的标准,它在各个层
(2)JSP的开发工具
次,包括Oracle8i服务器内的Java VM,均支持Java。Ora-
JSP网页可 用FrontPage和D a 编辑,开发工具
cle8i将强大的新型功能引入到了联机事务处 ̄(OLTP)和数据
采用JRun Studio、Oracle Jdeveloper、UltraEdit、Jbuilder等。 库应用之中。OracleSi还对Oracle数据服务器的几乎所有方面
3.Apache+Tomcat构成的Web服务器是当前在UNIX环
都给予了增强,全面改进了质量、可用性、性能、可管理性、
境下运行JSP的前提条件
多媒体数据类型支持和复制功能
Apache是目前世界lntemet网上经常使用的Web服务器。
OracleSi特性:
对于UNIX用户来说,也是最容易使用的w曲服务器实际 ●操作的简易性
上,如果你仅仅是想要用Apache提供基本的Web页面服务,
Oraele8i从根本上改进了Oracle应用的安装、配置和可管
那,厶你可能根本不需要调整任何配置。但是,另一方面,A—
理性。Oracle通用安装程序(Universal ln ̄aller)和数据库配置助
pache是一个十分强大的Web服务器程序,能够提供许多专业 手fDatabase Configuration Assistant J都是基于Java的应用,它
的功能,进行适当的配置,才能更好地发挥它的功能一 们通过探测硬件特征和提示信息来安装、预调整和配置Ora-
●开始提供web服务
cls8数据库环境。Oracle通用安装程序是针对簇的,它是在簇
,
apache的服务有两种方式,即通过inetd的方式或者独立 的所有节点上进行软件分布和安装的。
执行ht【pd的方式:在一般情况下我们使用独立执行方式。首
●可扩展性
先你必须安装Apache服务器,进行配置的修改,测试~下它
OracleSi网络计算体系结构(Network Compudng Architecture
的正确:
NCA)引入了一个开放的、易于使用的方法,用来扩展具有多
●利用Apache做web Proxy"
媒体数据类型(称为插件cartridge)的数据库。Orcale8i为数据
Proxy就是代理。Apache的Web代理是指可以让客户端服
插件的开发人员提供了一组全面的API。它允许合作伙伴开发
务器通过Apache来访问wⅣw.这样Apache服务器将接收来 的数据插件具有与Oracle开发的数据插件相同的内部访问机
自客户机的请求,然后首先去目标站点取得内容,并将内容存
制。
储在Apache服务器上,然后再提交给客户,以后假如有另一
●安全性改进
个客户机需要访问同样的内容,Apache就会直接从服务器硬
Omcle8i引入了细粒度化的访问控制,并改进了多层环境
盘上取得内容并且提交蛤客户
的安全模式。细粒度化的访问控制使用参数驱动的、可扩展
●做虚拟主机
的应用上下文关系,从而允许应用根据用户属性控制用户的访
Apache虚拟主机是一项不错的功能,它可 用一台Apache
问。中间层,特别是Web服务器或应用服务器,常常可能设
机器.一个『P来提供多十页面,设定非常简单。
置在防火墙上或防火墙外,为此,Oracle8i提供了这样一种能
mc吐是sun和Apache合作做出来的jsP Server,支持到 力,即限制一个中间层可以连接哪些用户,以及将中间层作为
Set,let 2.2及JSP 1 1。Tomcat在j殳计上是 独立的Se ̄,er执
~
个特殊用户进行审计。
行,而不像Jserv是附在Apache中,这样就更可以发挥在 ●对象关系数据库
servlet中,非HttlX ̄etvlet的能力 Tomcat是Java程序,所以只 对象类型的数据现在可以是分区表的列,并且可以使用
要有JDK就可以使用,不需要考虑操作系统平台。
SQL Loader来装载。并行查询可以利用对象类型或对象表在
作为web服务器扩展的Tomcat服务器有一些问题需要说
表上实施操作。在使用对象类型和LOB列的时候,许多方面
明:
都还有性能上的提高 在CLOB和NCLOB列中还支持变宽字
●当处理静态页面时,Tomcat不如Apache迅速。
符集。同时,对客户方对象Cache也进行了改进,允许跟踪和
●Tomcat不像Apache一样可配置
调试,以及支持优化加锁技术。
●Tomcat不像Apache一样强壮。
●网络功能
基于以上原因,一个现实的网站使用一个Apache作为 Oraale8i提供了先进的同络特性和管理能力,并引入了()-
web服务器,为网站的静态页面请求提供服务;并使用Tom- racle8i安全目录(Oracle Secure Directory—OSD)服务。网络管
cat服务器作为一个Servlet/jsp插件.显示网站的动态页面。 理通过自动配置Net8,以及将管理功能集成至Oracle企业管
4.Oracle8i是一个面向Intemet计算环境的数据库,它改 理器从而得到了大大简化。
变了信息管理和访问的方式。OracleSi将新的特性融八到了传
Oracle安全目录是一个遵循LDAPv3的层次数据仓储,可
统的Oracle暇务器之中。从而成为一个面向web信息管理的 用来存储企业用户信息.包括X 509认证(cert ̄cate)、企业角
数据库 Oracle8i支持Web高级应用所需要的多媒体数据,支 色和Oracle钱夹(Oracle Wallet)
持Web繁忙站点不断增长的负载需求 Oracle8i是唯一一 拥 联机模式管理增强了模式,扩展已经扩展的预定义目录模
6电脑缡{莹技巧与维护・2oo2.3i
维普资讯
实用第一
式。OSD支持授权访问和数据加密,实现r安全接口层
(SSL)。OSD还与Oracle家族产品紧密集成,这些产品包括0一
racle应用服务器(Applicatiort Server)和[nternet消息传输
(Internet Messaging)
智慧密集
jsp:setPr0pe啊——设置JavaBeart的属性。
j p:gelPmpe r-将JavaBeat ̄的属性插入到输出中。
jsp:f0rward——引导请求者进入新的页面。
J p:pll n——向客户端浏览器插入Java插件来运行一个
Applet或Bean的对象
●注释和字符引用
有许多在不同情况下插入注释和字符的专门结构,说明如
下
OracleSi连同Net8允许站点最大限度地利用现有应用的投
资,同时开拓了Intemet的主要标准,如Java、IIOP和SSL
5.Solaria 7(SPARC平台版)亚洲版发行简介
Suu Solaria系统是由Sun公司开发,固化于Sun的服务器
或工作站的一套UNIX操作系统 目前的版本已经发展到
8 0。现在,有许多大学、科研机构、政府部门和公司都采用
了Sun的服务器或工作站.以Sun Solaris系统作为网络操作系
统。
该产品的名称是Solaria 7,但代码和路径或文件包的路径
名称可以使用Solaris 2 7或SunOS 5 7:
Sdaris 7版本有INTEL和SPARC平台版两种,这主要取
决于服务器的CPU的种类(INTEL或SPARC芯片):有汇编
程序的32位或64位Solaris支持。
Solarls系统实际上是AT&T系统版本4(SVR4)和BSD
UNIX的台并,再增加了OpenWindows图形界面
二、JSP的有关说明
1 JSP语法简介
J 元素 语 法 解 群
P表选式 (%=表选式%’ 表达式是经过运算然后输出的
形式
P脚奉 (% t码%> 嵌^… 方 巾的代码
P声明 <%’代码%> 嵌^SERV[ET中.定戈f鲫-
Yice方浩25Yr
ISP丽面指々 (%@阻 … ”%> 在载凡是指向SEHVl e g引擎
ISP ioclmie指辛 一十在蛭过转译战SF# ̄Vl ET
之后蔫包音进来的 件
P往释 (% 注释一一%> 在将 P韩译戚SERVLET时
将蔫忽略
(】一p: ̄dude page=“ 『日h URL 当页面碍到请求时.所包古的
h=‘t e”/> 文件
…sp:eBB (1sp:u ̄Bean atl rat・/)0r 找到井建立JI’aH 日n
‘1 D:u ̄Bean atl )
(/j ̄o:u ̄eBean>
jsp:setPmpe (1sp: ̄eLP ropercym1=val / 设置Ben的属性
jsp; m nY ‘J — =。pmpert;., 慨复或者输出Bean的属性
Name” 日『 = Ⅵ【”/>
Jap:f ̄ard ‘lsg,‰ 日 page= 『日1IYe URL /> 指向后一面
Jsp:plugln ‘1sp:plUSh日I b…  ̄'alue” > 产生OBJECT或者嵛^标眷
怍为浏览器的告适类型在
《 sp: 『u n> , ̄LET运行时请求此PLI ̄N
●JSP动作语法
应用XML语法结构来控制Servlet引擎的行为 你可以动
态插入文件、重用JavaBean控件、导向另一十页面或产生
va HTML插件(PLUGIN) 可用的动作有:
J sp:include一在页面得到请求时包含一个文件
j :useBean——应用JavaBeart控件
语法 作用
(%一一conmmm一一%> 一个JSP注释,任何嵌入其中的
脚本元素、指令语法、动作语法都
将教忽略
(!~一comment一一> 一个html注释,嵌^其中的JSP
脚本元素、指令语法、动作语法将
会正常执行。
(、% 在模板文本(静态网页)中,如果
想应用“<%”。
%、> 在脚本元素中如果想应用
“%>”。
、’ 在属性中应用单引号
属性中应用双引号
%、> 属性中应用%>
(、% 属性中应用<%
●JSP隐含对象
与JSF语法相关的最后的元素是一些叫做“隐含对象”的
东西。在JSP代码片段中,你可以利用这些隐含对象与JSP页
面的代码片段执行环境产生互动。应尽量少访同这些内置隐古
对象 但是,在某些情况下,访问隐古对象是可被接受的 若
要充分利用隐古对象,就需了解最新的Java Servlet API:
隐古对象说明
唧e ——客户端请求,包括从GET/POST请求传递过来
的参数
啷ponse——网页传回客户端的反应
p gec0_T【exI——在此管理网页属性
se鞫i。n——与请求关联的会话
印plic i0n——代码片段的运行环境
ouI 传送响应的输出流
c0n6g——代码片段配置对象
pa ——JsP网页本身
excepn0n——有错的网页中未被捕获的例外
2.JavaBean
JavaBean是一种基于Java的组件。在JSP中,对于在Web
应用程序中集成JavaBean组件提供了完善的支持。JavaBeart组
件可以用来执行复杂的计算任务,或负责与数据库的交互以及
数据提取等:
JavaBean是一种Java类(class),通过封装属性和方法成
cDⅢpu1曲Programmh ̄g s4mb&:M衄忸岫∞聋呻2.3 7
维普资讯
实用第一 智慧密集
为具有某种功能或者处理某个业务的对象 JavaBean被绀织成
同时得到服务 一般来说,Servlet进程只是在Web ̄ct'er卸载
为package(数据包) 便进行管理,实际f一就是把一组Ja ̄,a—
时被卸载
Bcan一起放在“某某”目录中,每个娄的定义前加上pat:kagc Senlet是使用Java Sen,let应用程序设计接口(AlP/)及相
某某”.目录“某某”必颁放在系统环境CI ASSPAIH包含
关类和方法的Java程序 除了Java eSct.1et API,Se ̄let还可
的目录下,系统才能找到其中的JavaBean 它应当具有
使用用 扩展和添加到API的Java类软件包。Semlet在启
XXX.181,,a和XXX. ̄:lass两个文件,具体的Ja ̄aBean使用在后 用Java的Web服务器上或应用服务器上运行并扩展了该服务
面的例子再详细介绍
器的能力 Java Sect,let对于Web服务器就好像Java Applet对
3 sen'lct
于Web浏览器。Sect'let装入Web服务器并在Web服务器内执
Servlet是用Ja,,a编写的Se ̄er端程序.它与协议和 F台尢 行,而applel装入web浏览器并在Web浏览器内执行=Java
关 Sen,let运行于Java—enabled Web Sect,er中 Java Ser ̄let可
Servlet API定义了一个Servlet和Java使能的服务器之间的一
动态地扩展Sen,er的能力,并采用请求一响应模式提供Web
个标准接El,这使得Sect,lets具有跨服务器平台的特性。
服务
●Sect ̄let的基本结构
摄早支持Sect,let技术的是Javaseft的Java Web Server此
'
一,
Servlet de基本 构
后,一些其它的基于Ja ̄,a的Web Set.'e/"开始支持向 准的
i--port JaVa io
impo t Java ̄servlet}.
Sen,let API。Servlet的主要功能在于交互式地浏览和修改数
import lavax se r,Aez nttp .
据,生成动态Web内容~这个过程为:
public class SomeServlet extends HttpSe rvlet{
客户端发送请求至服务器端;
publio VOid doGet c HttpSe VIetReouest req Lles ̄
服务器将请求信息发送至Servlet;
HnpSe rvletResp0nse response) zh rows Se rv etE×cept 01
l0Exception{
Servlet生成响应内容并将其传给Server 响应内容动奄生
成,通常取决于客户端的请求;
月匪务器将响应返回给客户端;
用 reuuest 可 读取输,、的值(e g cookies
}[表鱼提主 数据
Servlet看起来像是通常的Java程序 Servlet导人特定的属
response 返回输出的同吝
于Java Sect,let API的包:因为是对象字节码,可动态地从网络
PrintWriter OUt;response getW riterll
加载,可 说Ser',let对Selwer就如同Applet对Clie r,t一样但
out 司浏览器写内番
是、由于Sert,let运行于Se ̄-er中,它们并不需要一个旧形用
户界面 从这个角度讲.Sen,let也被称为Faceless Object
eSct.1et都是有Httpservlet继承下来的。
Sen,let可 和其他资源I文件、数据库、Applet、Java应用
●Ser'det开发环境
程序等1交互, 生成返回给客户端的响应内容~如果需要,
进行Servlet开发所需要的基本环境是JSDK以及一个支持
还可 保存请求~响应过程中的信息。
Set,let的Web服务器。
采用Sen,let,服务器可 完全授权对本地资源的 疔问l加
●JSDKfJava Sect,1et Development Kit1
数据库),并且Servlet自身将会控制外部用户的访问数量及访
JSDK包含了'编译Sect,let应用程序所需要的Java类库 及
问性质
相关的文档资料。
eSct'let可被链接(chain) 一个Setcdet可 调用另一个或
●支持Servlet的Web服务器
系列Servlet、即成为它的客户端
eSct'let需要运行在支持Set-,let的Web服务器上。
采用Sect,let Tag技术,可 在HTML贞面中动态调用
【1)Apache Tomcat
Sendel
(2l JSWDK(JavaServer Web Development Kk)
Sect,let API与协议无关 它并不对传递它的协议仃任何假
(3) laire Jrun
设.
(4)New Atlanta的servletExec
像所有的Ja ̄,a程序一样、Set.1et拥有卣向对象Java语青
f51 Gefion的LiteWebServer【LWS)
的所有优势
{61 Sun的JavaWebSect,er
Sect'let提供厂J a应用程序的所有优势——口r移植 稳
4 JDBC
健、易开发:使用Ser ̄let的lag技术,Sect'let能够牛成嵌于
JDBC是Java的开发者——sun的JavaS,oft公司制定的Java
静态HTML页面中的动态内容:
数据库连接{Java Data Base Connectitdty】技术的简称,是为各
一
个Sen'let被客户端发送的第一个请求激活.然后它将
种常用数据库提供无缝联接的技术。JDBC在Web和Internet
继续运行于后台.等待以后的请求每个请求将生成一个新的
应用程序中的作用和ODBC在Windows系列平台应用程序中的
线程,而不是一个完整的进程 多个客户能哆在同 个进样中
作用类似一ODBC(OpenData Base Connectivity),称为开放式数
8 电略编程技巧与维护,2002 3
维普资讯
实用第一
据库互联技术,是由Micro ̄fl公司倡导并得到业界普遍响应
智慧密集
Statement statemt.=conn createStatement
SQL语 玎雾
NAME=R0M book“。
刮建一
的--I']数据库连接技术,如果读者有使用ODBC编程的经验.
就会发现JDBC与ODBC很类似。JDBC现在可 连接的数据
库包括:xhase、Oracle、Sybase、Aceess 及paradox等。
JDBC定义了Java语言同SQL数据之间的程序设计接口。
JDBC有一个非常独特的动态连接结构,它使得系统模块化。
使用JDBC来完成对数据库的访问包括 下四个主要组件:Ja—
v,K的应用程序、Jlmc驱动器管理器、驱动器和数据源:
用JDBC来实现访问数据库记录可以采用下面的几个步
qesuItSet rsltset=s:atemt execLiteQuery{ SELECT USER—
执 互淘 果辱顶_芏Resu tSet中.book是一i、table
While{rsl:set nextI})
Syste'-"out pri tinI rs Jtset getS:lincI]I. 时碍: 针移
到ResultSet蓑再口豹T 彳.i1半ResultSet中有鼓据_l读.则
退回TRUE 至 返回FALSE
●JDBC瘦驱动程序
瘦驱动程序是一种JDBC驱动程序.该程序允许从Java小
骤:
①通过驱动器管理器获取连接接口:
⑦获得Statement或它的子娄 =
④限制Statement中的参数。
④执行S ̄tement。
⑤查看返回的行数是否超出范围。
⑥关闭S ̄tement
⑦处理其它的Statement
⑧关闭连接接13。
在JSP中与数据库连接编程需要JDBC驱动程序.本文中
数据库采用Oracle8i
JDBC的Oracle版本有两个驱动程序 “瘦”驱动程序是
针对于Java小应用程序的,用于将它连接到Oracle数据库一
Oracle还提供了另一个OCI(Oracle Call Interface,Oracle调用
接口)驱动程序。
三种主要JDBC与Oracle8i数据库连接编程:
●JDBC OCI驱动程序
OCI驱动程序是一十JDBC驱动程序,它允许从Java应用
程序中连接并查询Oracle数据库 在查询数据库以前Java程
序必须执行三个步骤。
①驱动程序娄导人到程序中
,Ierport the JDBC d rive rs
import ava sql{.
ja 包包含了创建并执行SQL语句所需要的所有娄和
接口
②注册驱动程序
在Oracle中注册OCI驱动程序,Driver Manager娄允许动态
地注册驱动程序。
/.,registe she oracle Jdbc d r ve r
DriverManage registe Dri ̄,erf FleVV oracle Jdbc d rive r O rac e
Driver1)):
③连接到数据库
System out prindn I Connectlng to the Oa:abase
Conoection conn=DriverMa, ̄ager getConnecUon I doc:ora
cle:oda:@ghe system manager |
,,将连接手碍吕传退给还十万兰l 建立引敦据厍的运接乏接
手符串中的黄一个值指明OCI8 JDBC驱动程序.]亘(SQL
Netf用的是@符号}连接一十各为ghq TNSNAMES服毒连
接的用p名是system 口令是manage r
④执行查询并且打印输出结果
应用程序连接并查询Oracle数据库一在查询数据库之前Java
小应用程序也必须执行三个步骤:
①将驱动程序类装八到程序中
//impo rt the JDBC drive rs
mpor:java sql .
mport Jeva math{.
java.sql包包含了创建并执行SQL语句所需要的所有类和
接口,java math包包括数学处理对象。
②注册驱动程序
在Oracle中注册驱动程序Ddver Manager类允许动态地注
册驱动程序。
/,."registe r the 0 ac e Jdbc d rive r
DriverManage r reg;ste rDriverf new oracle Jdbc d river O rac e
Drive r()J
③连接到数据库
System OJ:println f Connecting:0:he database }
Connectioq conn=DriverManage r getConqection( -dbc:ora
cle thin:@ghc 1521:book. system manage r }.
将连接字符串传递给这个方法 建立到数据库的连接 连
接字符串中的第一十值指明thin JDBC驱动程序,(用的是@
符号)连接一个名为ghq的Hostname(或连接IP地址),端口
是1521.数据库的Oracle SID是book.连接的用户名是system.
口令是manager:
④执行查询并且打印输出结果
Statement statemt=conn createStatemen:{1. 它建一1’
SQL 吾日 复
ResuItSet rsltset=sta:e ̄"t executeQde ry c SELECT USER
 ̄
'IAM E FROM book)。
, 执行亘询结果存藏在ResultSet中book是一个table
WhIle{rsltset next I 1)
System out p rin:l"I rstset getString{’J,一/N用时 £指针移
ResultSe:缓互中 一行.如早ResultSet中有数据可诿.nl
退回TRUE.否则退巨FALSE
●JDBC—ODBC桥
JDBC—ODBC桥是一一个JDBC驱动程序.它通过将JDBC
操作转换为ODBC操作来实现JDBC操作
要魁使 JDBC—ODBC桥之前.必须选择Oracle ODBC
Driver来创建一个OracleSi数据源.配置Oracle数据源时在数
据源名称中填入Oracle.在描述中填人OracleSi.在Service
Ftalne中填人ghq.在UserID中填入system。
选择Oracle8i数据库的SQL{Net中Microsotf odlx.test来
c。tapmer Programming驯k&M面 nance 2帕日2.3 g
维普资讯
实用第一
测试ODBC配置连接正确与否。
¥make
智慧密集
①加载驱动程序
Class forNameI sun ldbc odbc Jdbc0dbcDf ver l
③安装
¥su
#make mstail
②与Oracle81数据库建立连接
String Jrl= jdbc:odbc:oracle . /oracle是DNS名
Cennection
co rl=D riverManager getCOnnectJ0n:Jr1 system .manag
(2)编译与安装modjk插件
①解包
¥/uar/local/bin/gzip—dc lakarta—tomcat一3 2 1一s rc ta r
ef):
/, system , manager J是用尸若和口令
③执行查询一个JDBC声明
Statement stat=COn createStatement¨:
String que ry= SELECT USERNAME FROM book
ResultSet ra:stat executeQuery c query).
@打印辅出结果
W le{rS next{i}
System out priqtlnI rs getStri ̄g c1)):
三、在Solaris 7下用JSP构建网站的安装和配
置运行
安装配置Web服务软件Apache和应用服务软件Tomcat
I包括JDK)。
(一)应用环境
操作系统为Solaris 7,应用环境为Java 1 2.2(假定安装
在/usr/javal 2.2目录下)、perl 5 005(假定安装在/usr/lo—
cal/bin目录下)和 _p(假定安装在/usr/local/bin目录下)
(二)软件包的下载、编译与安装
1.下载地址
在hltp://wv,3*'apache org可下载最新的Apache源代码软
件包apacheJ 3.22 lar.gz。
在hltp://j ̄aa.apache.org/builds/lomeal/release/v3.2
1/src/可下载Tomcal源代码软件包jakarta—tomcat一3 2 1一
sJX2 lar- 。
在hltp://jakarta.apache.org/builds/jakarta—tomcat/relea—
so/v3.2 1/bin/可下载已编译的Tomcat应用软件包jakarta—
tomcat一3.2 1. gz
2.编译与安装
假设各软件包已下载到当前的某个工作目录(如:/
home/tarp)下,Apache和Tomcat将安装在/home目录下 在
当前目录我们可以进行如下操作
(1)编译和安装Apache应用服务
①解包
¥/usr/local/bin/gzip—dc./'apache__.3 22 ta r gzlta r xf一
②编译
¥cd apache__.3 22
¥/configu re一一prefix:,home/apache一1 3 22
一一
with—pe rl:/usr/local/bin/'pe r J一一enable—mooule=
So
假设per1的解释命令安装在/usr/local/bin目录下.A.
pache服务安装在/home/apache一1 3.22目录下。
1 0 电鲢龋舞技l巧每维护 2∞2 3
gz【ta r xf一
②编译
¥cd Iaka rta—tomcat一3 2 1一arc/src/native,/apache1 3
¥/home/apache一1 3 22/bin/apxs—o modjk so—DSO
LARIS—l/k一{/
us "java1 2.".include—1 usr,"java1 2 include/
so ̄aris—Jposix4一c c k/ c
假定Java安装在/usr/javal 2目录下。
⑤安装
¥su
# home/apacse一1 3 22 bin.,apxs一【一a—n Ik modjk
so
当屏幕显示如下内容时,表示安装成功。
cp modjk so/home/apache一1 3 22/libexec/modjk so
chmod 755/home/apache一1 3 22/Iibexec/mod Ik so
Iactivating module lk in/home./apache一1 3 22./conf./'
httpd conf】
(3)安装Tomcat服务
用超级用户身份把已编译的Tomcat 3 2.1解包到/home
目录下即可。
S su
#/us r/Ioca!/bin/gzip—dc Iaka ̄a—tomcat一3 2 1 ta gz
fcd home.伯r xf一)
3参数配置
(1)配置Apache服务
用vi命令打开Apache的配置文件httpd cord"
#cd,/home,/apache一1 3 22/conf
#vi httpd conf
在末尾添加以下内容:
JkWorkefsFile/home./Iaka rta—tomcat一3 2 1/conf/work—
ors properties
JkLogFiie/home."apache一1 3 22.,'logs/mod tk log
注意:日志文件可根据具体情况调整
JkLogLevel wa rn
JkMo,Jnt, Jsp alp1 3
JkMoJnt,".se rvlet," lsp alp1 3
(2)配置Tomcal服务
首先,修改server xml文件
这里假定存放Apache的Web网页的根目录为/home/ht—
does。
#cd/home/jaka rta—tomcat一3 2 1/'conf
#vi serve r xmI
然后,在Conneclors部分嵌^如下内容:
<Connector cla ssName: org apache tomcat service
POOlTcDCOnnectOr ><Pa rame:e r name= handle r
value:o rg apache tomcat service connector Alp
维普资讯
实用第一
1 3C0nnect10nHand}e r/>
(Pa rameter name= poR ,caIue=8007 >
智慧密集
111o k”插件,它很好地弥补了modj serv的缺点,而且能支
持Apache以外的多种Web服务:关于这种Apaehe/Jk方式的
实现原理,请参考有关资料。
《三)有关Solaris 7和Oracle8i的安装配置,由于篇幅有
限,在此不能展开,请读者参考有关软件说明。
为了使大家更具体地了解这种组合网站建站的实际应用,
下面通过几个实例的讲解,希望大家能将理论和实际相结合,
进一步提高自己椅建动态同站的水平 注:所有源程序可以在
网站( comprg coin cn)下载
< Connector>
接着,在Special Webapps部分嵌入如下内容
<Context path=
docBase= /home/htdocs
debug= 0
</Context>
修改wotke ̄.properties文件。
#V1 wo rkers properties
wo rkers tomcat home=,home/iaka rta—tomcat一3 2
worke rs lavaj1ome=/us r/]ava 1 2 2
ps=/
四、JSP的实例
l jsP与JavaBean结合构造一个简单计数器的例子
该侧子包含有3个文件:counter Java是一个JavaBean的文
件, nler.class是counter java文件经过JDK1.2.2编译生成
随后,修改Tomcat启动和关闭命令文件。
#cd n
#vi sta rtup Sh
的类;c ̄unt jsp是一个JavaServer Page(JSP)的文件。
nter java主要用来进行计数器的计数操作,count.j p
文件主要用来显示网页的计数。
counter 1日 的源程序如下:
package COUnt.
再在“BASEDIR=‘diruame 8O”。语句前嵌人如下内容
PATH=/uer/lava1 2 2/b n。¥PATH。
JAVA h0ME=/us r lava1 2 2
TOMCAT H0ME=/home laka rta~tomcat一3 2 1
PubIIc cIass goJnter f
export P H JAVA HOME TOMCAT_HOME
#vi shutclown Sh
/ 始一(JavaBean 成员互量
nt COUnt=0
最后.在“BASEDIR=‘dirname¥0 语句前嵌人如下内容
PATH= usr/'java1 2 2 bln:¥PATH.
JAVA OME=/uer."java1 2 2
TOMCAT OMB=/卜10me./jaka rta—tomcat一3 2 1
export PATH JAVAHOME TOMCAT H0ME
_
//Class构造器
PJbl c SOUnte r{I【
属 兰Count Get万法
public int getCo ̄nt()f
4测试
计数搀作.每一次请求看I过行计数罪加一
retJ rn this coJnt
分别启动Apache和Tomcat
home/apache 1 3 22 bin/apacnectl star
#,'home./jaka rta tomcat一3 2 1/bIn,staRup sh
#vi.,'home./apache 1 3 22 htoocs/Hello Isp
<%page lauguage= java %>
,,属性Count Set万巷
public vo d setCount f int count
this couqt=COunt
<HTML>
<HEAD>
<TiTLE>Hello wo rld 0<.,'TITLE>
</HEAD>
(BODY>
<%
}
}
count.Jsp的源程序如下:
< 一m}>
<head
<title>couqte r<,title>
Out printf Hello world 0)
%>
( head>
(booy>
<,BODY>
</HTML>
<1sp:useBean ia= ghq scope=application class= COUnt
COante r )
打开浏览器,访问Hello.jsp文件:http://loealhast/Hel—
lo jsp。如能显示正确的内容(Hero world!),表示运行正常
至此就可以正常运行JSP动态网页文件了
5说明
//韧始化counte r这个Bean 买1;戈ghq
<CENTER>
<FONT SIZE=5 COLOR=BLUE>…
}一¨ <,F0NT>
(/CENTEB>
<县R>
<HR)
<BR>
<CENTER>
简单计数器
Apache与Tomcat结台支持JSP动态网页开始是通过一个
名为 Inodjser ̄r”的插件来实现的。采用这种Apache/Jser',方
式配置参数十分复杂,运行效率很低,而且对ss L(一种加密
传输方式)的支持也不理想.因此Jaka ̄a工作组新近开发了
<FONT SIZE=6 COLOR=BLUE face=隶书>您好l欢迎
c0皿叩ll1eT ramruing:Sbm&Mai卿 :29 3 1 1
维普资讯
实用第一
’王 来I您是第</FONT>
<FONT S1ZE=6 COL0R=BLUE face
F0NT>
智慧密集
ava io P rin:Write ̄OJr=new Java io PrintWrite rf resp get
素书>
。。><
0dtputStreamI)),
,
<lsp:getPrope rty qame= gnq p roper:y= COU r『
输出HTML 邵
oJt printIn{ <htm ) }
使用Jsp:getP rope rty 簦得到coiJlf* ̄属I¥ff谴 _±就是]一
数器的筐
(FONT SIZE=6 COLOR=BLUE face= 景书>。互吾人(-
,
out print n c<heap> }
out println( <t tie ava Servlets Sample 十 0Jr
dengiibiao(,."title>I:
F0NT>
< CENTER>
< body>
< m’)
程序说明:
JSP和JavaBean应用的一般操作方法
(1)在JSP页面中要声明并初始化JavaBeart.这个JavaBean
有一个唯一的-d标志.还有_一个生存范围scope(设置为appli-
cation是为了实现多个用户共享一个计数器的功能,如果要实
现单个用户的计数功能.可以修改scope为session).最后还
要制定JavaBean的class来源couttt.coanter:
<lsp:useBean id= ghq scope= applicatioq class=
COUnt counter />
f 2 J可以使用JavaBean提供的public方法或者直接使用
<jsp:getProaprty> ̄签来得到JavaBean中属性的值:
ghq getCeunt()或<jsp:getPl-Oparty n ̄rtle:“ghq proper-
ty= ‘count”/>
注意:ghq是Id的值,getPmperb"的name值要和useBeaJl
的-d值相同
r3)在浏览器IE上运行…下程序,刷新几次,注意看计数
器的变化。(每刷新一次,计数器加1)
最后要注意counter j a编译后的文件cotmte ̄class放在
<Se ̄er Root>、WEB—INF\CIASSES\count\counter cla ̄s
一
2一叶、简单Servlet的例子
该例子包含有2个文件:DengjiBiao javs.是 个Servlet文
件,Ocngji.Biao class是Den ̄[Bi.ao j &文件经过编译生成的
Selwlet类 De ̄gjiBiao iavlt运行于服务器端.主要功能是输出
一
张登记表,表的内容是姓名(Baltic).性别I sex)和年龄
(age)。
DengjiBiao】ava的源程序如下
impo t Javax se rv:et- . /3^、Iav'Bx servlet中所有的娄
impo rt aVBX servlet http 。 导 avax servlet http中所
有 娄
public class DengjiBiao extenos HEpSe rvlet
{
用doGet万舌进行HTTP GET操作 参数req 为害口端
request请 .爹数resp作为se rv!et服务器端翱response
响应
publ c'void doGet f Htt0Se rv etRe0uest req HttpServle:Re-
sponse resp)
th rows Se rvIe:E×cept10n.Java io 1OExcept:on
]{置明匝自] ContentType 蓼
resp setC0ntentTv0e c text,htmI J。
。
生一^ 1twme . Oo: 向丑览器写门菩
1 2 电妇编程技巧与维护.2002.i 3
ou:println(</heao> )
OUt printlnf<h2><center> }
out priqtln f 0 r dengjibiao<."center></h2>一1
out printlnf<br) )
,,
辅出一十特殊 用表过愿器se rvlet 表格形
, the Table lIter servlet
out printlnf<i—tab e columqs=3 heade r~yes>)
.
/,输出三列表格
out p rintlq I name.sex.age)
OUt p r ntln{ gnq boy,28》
out p r,ntln{ ggg gir1.25 1.
out printIn{ hhh,boy 23 }.
oJt print n c qqq.gi r1.26 J.
OUt print n( <I—eRe table 一) )
/,结束过崔
out printlnf<,t1tm> j
out flush『).
OUt c 4oseI}.
)
/ 初始化se rvlet.售用Se rv etConfig对象作为参数
public void init(ServletConfig cfg)
th rows Se rvIetE×ceDtIOn
, 用Dest roy卸载se rv et
public"re1d destrc ̄y{1
supe r destroy c1.
程序说明:
在编写好一个Servlet程序后,编译成.class,然后运行之
前,体一定要确认下面的工作已经完成。
(1,某个版本的Java Developer’s kit(JDK)已经安装好
本网站配置安装的是Jdk1.2 2
(2)Servlet API类文件 在编译Den ̄iBiao va时还需
要一些Servlet API类文件。如本例中就用到了javax.servlet}
和Javax sere,let http. 类文件;或者第三方厂商提供的Servlet
引擎.Servlet API的JAR文件一定要加人到CLASSPATH中
(3)一个支持Servlet的Web服务器。它们包括Java Web
服务器、Apache 及其他一些带有Servlet引擎附件的Web服
务器 本例中就用到Apache和Tomcat服务器。
编写响应HTML请求的Servlet只需两步:
(】)创建一个扩展了jasqtx.serdet.http HttpServlet接口的
Servlet类。
(2)重写doGet和doPost方法之一或全部 这是servkt
实际需要完成工作的地方一本例中就重写doGet部分:
维普资讯
实用第一
Servlet也可 重写init和destroy方法以实现Serdet特殊
的初始化和析构 重写init和destroy的典型例子就是在init方
法中建立数据库连接并在destroy方法中断开它。
本例DengjiBiao.java和DengjiBiao.class应放在examples、
WEB—INF\classes中,在浏览器IE上路径为h廿p://localhost:
8007/既锄pks/se k【/De” Biao
注意:DengjiBiao中的大小写字母,Sen'let后面没有
s ,本机的端口号为8007fTomcat1:
本铡用浏览器IE看到的输出是元格式的数据,如将格式
化表格输出则可以采用两种方法:由表过滤器 f也是
个TableFiher Servlet程序)或者编写两用5en,1el的HTML文
件 当然web服务器要作相应的配置,对此感 趣的读者ar
参考有关Servlet编程的书籍。
3 个JSP通过JDBC访问Omele8i数据库的铡了
本例子共包含4个JSP文件,它们是indexj
Queo.j p、Inse ̄.jsp、Delete jsp 主要的功能是图书管理 实
现简单的查询、添加和删除图书功能 index jsp是个图书
管理维护界面,它的作用主要是链接查询图书(Queo J印)、
添加图书(Inserl Jsp) 删除图书(Delete jsp】 Qu ry J p
是一个实现查询图书的功能 Il18 .1sp是个实现添加图书
的功能,Delete JsP是个实现删除图书的功能
在数据库Oracle8i建个数据库表为book.表的结构 字
段含义如下所示
ID varehar2f8) 编号
title varchar2f501 书名
varchar2f401 作者
pnee varchar2l8) 价格
varchar2《1001 备注
数据库的Oracle SID是book.]-Iostnam ̄是g】】q,用户名为
system,密码为manager。
下面分别介绍一下源程序:
(1)index jsp的源程序如下所示:
<lit 1)
<head>
<title>丑书管理< title>
</head>
<body)
<table width=280 border:O a ign=center >
<tr)
<td width=650)<foot color= #004080)<O alig ̄
center ></font><f0m size=5
+ace= 宋体 color= ̄O4080)<st roqg>
stronc>< fO n1><font size: 十1></p>
( font)<hr>
<b )
</tO>
</tr)
<tr>
<td><P align: ,cente r><dig><font color=#O00OFF)
智慧密集
<strong><8 h ref=Query Jsp >查词图之.请任此连 </a>
< st rong></fOnt><,b岣></p>
P align= center >(./td>
</zr>
<tr)
<td><P align= cente r><big><font color=#0O00F )
<strong><a h ref=Insert jsp )番!口匿书请在此进^<,a>
</strong></fOnt></b岣></p>
<P align= cente r ></td>
</tr>
<:r)
<td><0 align=cente r >(big><font color=#O000FF’>
<strong><a href= Delete sp>删踪图书 请在此进 、< a)
< strong>< :ant>< blg></p>
P align= cente r > ( >
< ”)
(table
(body>
< html>
(2 QuerY.Jsp(查询图书)的源程序如下所示:
<%@page contentTVpe= text html cha rset=GB231 2
%>
<%@pageimpo rt= lava sql}: %)/¥}将茎装 程
f 口一.
<%@page impo rt= oracle ldbc d river} %)
(%@page language= java %)
(H ML>
<HEAD)
<TITLE>查壹图j‘."TITLE>
<,HEAD>
<BODY)
<CENTER>
<FONT SIZE=5 COLOq=blae碴询图书</FONT>
< CENTE同>
<BODY)
<BR)
<HR)
<BR>
<%
St r:ng lD=request getParameterf ID】:/,冀碍图 厍中书
骗寻
if(ID=:null】, 如果书自乞垌号 至
%>
<FONT Size=4 Color=red><B>Lq有博查找白勺习半晤昱‘
请你巨到<A h ref:index Jsp >图书管理一番加臣书‘<
A)</B><,/z FONT>
<%
eise
%>
<=0NT Size=4 Color=reo>(B>图书管葚信思如T.(
B><,FONT>
<%
/ }在O racle口注册驱 程序.Driver Manage r娄芜许昔吝
差册驱动程序
Drive Manage r registerDrive (new oracle Jdbc driver Oracle-
Drive ()I.
… 童强引数据库 一-
Connection con’1=D r verManage r getC0nnectIOn l ldbc e ra
Compuler Pr。舭 嘴啦ms&Maime e.29 .3 1 3
维普资讯
实用第一
cle:thin:@ghq:1 521:book system manager ).
(BR>
<%I
智慧密集
/ j芎连接字符吕传递冶这千方击 建互至1数据库自]连接连萎
宝符串中的第一i筐指明thin JDBC驱动程1予.1 是@符
号)莲接一1、若1_ghq HostnameI或连接lP地址).端]是
1 521.数据库 Oracle SID是book.连接的用F各兰system.
public String GBK2UNI(String s)th rows Exception
String temp:new Stnng c s getBytes( GBK 1. IS08859 1
口令是manager
Statement stmt=conn s reateStatement{ResultSet TYPE
—
SCR0LUNSENS VE.ResutSet CONCUR READ_。NLY),
, 建互Statement要量.#设定记录指标粪型为_l 后琴
ResultSet rs=stmt execu:eQueryl select fr0m book J
/ 孔行查 羔舌果存放在ResultSet中
%)
<TABLE bgcolor=Blue>
<TR>
<TD)编号<,1。D>
(TD 若<sTD>
<TD 乍看</TD>
<TD> ̄di桔<./TD>
<TD>备注</TD>
</TR>
<%
whl e{rs Bex {i)
//利用while循 配合qext万法,垮ResultSet要量中 记
录 出
%)
<TR>
<TD><%=rs getSt riqg¨)%></TD>
<TD><%=rs getString《2)%></TD>
<TD><%=rs getString《3)%></TD>
<TD><%:rs getS:ring{4I%></TD>
<TD><%:rs getStbng【5I%>(,IrD>
</TR>
</TABLE>
<%
rs close(), /,关-=-】ResultSet要量
stmt close1)./夭 Statement变量
conn close():/ 丢】习Connection变量
%>
<%
%>
</BODY>
</HTML>
(3)[nsert j叩(添加图书1的源程序如下所示:
<%@page contentTvpe= text,t1tm{cha rset:GB23’2
%
<%@page impo rt: java sql} %>
<%@page impo rt= oracle ldbc driver %>
<%@page language:java%>
<HTML>
<HEAD>
<TITLE>添 臣书<,"TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE:5 COLOR=blue>: ̄q图书< FONT>
(/CENTER>
<BR>
<HR>
14 龟隧蝻程技巧与维护‘2O02・
retu re temp,
】
%>
/,声明:幅GDK转换 Unicode 代码
<%
String pause:request getPa rameter( submit 】://取得指
令按钮悸出的数据
if{pause==qull】// 断是否取得指令按钮传出的数据
(
session setAttifbute{ Done “”),//重设变数值
%>
<FORM action= Inse rt lsp method=POST>
<TABLE
<TR COLSPAN=2 align:center>
<FONT SIZE=4 COLOR=red><B>请添加新图书<,B)
</FONT>
</TR)
<TR)<TD><B>编号</B)</TD>
<TD><INPUT type= text name=lD size= 20 max—
Length= 8)</TD></TR>
<TR)<TD><B>书名</B></TD>
<TD><lNPUT type= text name=Tit1e size= 2O max—
Length: 50 ></TD>(/TR>
<TR><TD><B>I乍者</B></TD><TD>
(INPUT type: text name:Author size: 20 maxLength
=
40 ></TD></TR>
<TR><TD><B>f,lf榷</R></TD>
<TD><INPUT type=text r]ame=Price size= 2O value
=
O 0 maxLength= 8 ></TD></TR>
<TR><TD><B墙注</B></TD></TR>
<./TABLE>
<TEXTAREA rOWS=5 C01S=40 name=Memo>
<, TEXTAREA><P></P>
<INPUT type= submit va ue= 添加数据 name:submit>
</FORM
<%
else
/{}在O rac!e中注册驱动程序,D rive r Manage r娄艽许动态
地注册;E动程序一/
D r ve rManager registe rD rive r(new oracle Jdbc driver O racle—
D rive r{1 1.
/ 连接到数据库 /
Connection conn=D rive rManager getC0nnectIOn J Jdbc:ora—
c e thin@ghq:1 521:book . system . manager 1.
,/:t7-莲接字符吕传退给这十万未以建互至 数据库的连接连接
!符丰中的第一个值指明thin JDBC驱动程序,l用的是@符
号)连接一个名为gha的Hostname{或连接lP地址】,端口是
I 521,数据库9t1 O racle s1D是book,连接的用尸名是system.
口令是manage r
Statement sturt:conn createStatement J ResuItSet TYPE
SCROLLjNSENSITI'vE,Resu JtSet CONCUR READ ONLY).
/,建互Statement变量.开设定记录指标类型 可前后移
String【D=GBK2UNI(request getParameterI lD)t rim{J J:
维普资讯
实用第一
Stnng Title=GBK2UNI(request getPa ramete r( Tit e J t r m
¨)
String Author=GBK2UNI(request getPa ramete r( Author)
ml11
%>
智慧密集
</BODY>
</HTML>
String Price:GBK2UNI【request getParameter( Price)…m
String Memo=GBK2UNI{request getParameter{ Memo )
t rim{I}.
(4)Delete j印(删除图书)的源程序如下所示:
<%@page contentType= text/n1m cha rset:GB2312
%>
/一对取得亩:参数数据进行转码.去掉空r苦,为了中文 正常显专
St ring st rSQL;
<%@page import: java sq!★ %>
<%@page import=oracle 1dbc-k- %>
if《session getAttribute《 Done J I= yes )
-
<%@page language= java %>
(HTML>
<HEAD>
判断Done要数的值.避免使用“重新整理” 安钮重要嚣 :数据
/ 建互匿书数据增z]引数据库刍勺SQL
st rSQL:】HSERT INT0 Bookl ID Tit e +Author Price
Memc-】Values f + f0 + + Title + 十
Author + +Price + + Meme + I
s t execufeupdafe J st rSQL) 碍图书数据 增z]至
数据库表book中
session setAttribute(Done . yes)
,/ 0 sess on变量中的Done设 yes时避免重要 I]数琚
%>
<P)己jz-新图书增虾到图书竟料中 匿 信息内客如下:</
P>
<%
ResuItSet rs:stmt executeQuery l SELECT FROM
Book J
,/捷行SQL毂连.,_^数据库甲取得Book数据表中的数据
%>
<CENTER>
<TABLE bgco o r=Btue)
<TR>
<TD)(B蝻号</B)</TD>
<TD>(B>书名(/B)</TD>
<TD)(B 乍者( B)</TD)
</TR)
<%
/利用while循 配合next声法将数据表中 记录利出
while c rs next¨l
{
%>
<TR>
<TD><B><%=rs getString c ID )%)</B>< TD)
<TD)(B><%=rs getString c Title }%>(/B></_ D>
<TD><B>(%=rs getString{ Autho r )% </B)(,.rD)
(/TR>
<%
%)
<1,]_ABLE>
</CENTER)
<%
rs dose¨ 关 司ResultSet 量
stmt ctosef) / 天闭Statement变量
conn close(). 关闭Connection变量
%)
<口)<A H ref=lnse rt lsp >要新增图书</A>还吊回
引<A href:index Jsp )图 管理 < A)</P>
<%
<TITLE>剩脖臣书< TITLE>
< HEAD>
<BeDY>
<CENTER>
<FONT SIZE=5 COLOB=blue> ̄J院臣书</FONT>
(,CENTER>
<BR>
<HR>
<BR)
<%I
/ 谭用一个JSP肓
Connection coen:nulI.
Sta ̄ement stmt=null;
ResultSet rs=nulI
pubi c void』splnit¨
{
t ry
{
Class fo rName l o racle ldbc d river O racleD river J.
//载A驱动程式美别
DriverManage r getConnection f”ldbe:oracle:thin:@ghq:
1 521 book . system , manage r J,
//将连接字符串传递给这个方法 建立到热据库的连接连接
字符串中的第一A值指明thin JDBC驱动程序,l用 是@符
号)连接一十芒 ghq的Hostname【或连接lP地址},端[是
1521.数据库 Oracle aID是book.连接的用尸名是system,
口令是manager
stmt:conn createStatement c只esu ̄tSet TYPE SCROLL
INSENSITIVE ResultSet CONCUR READ
一
0NLY),
//建立Statement变量 并设定记录指标类型 可前后移
)
catch(Exception e}
{
System out println l e toSt ring J]).
}
public void JspDestroy lJ
{
try
stmt closeI}., 关司Statement变量
conn close() 关闭Connection变量
ra close().//关闭ResultSet变量
catch f Exception e)
f
System Out prietlofe toStringl1)
Computer 略 越&弛却 晒睁29 .3 15
、
维普资讯
■
编 } 与匝¨一 H
Strine D r4:
request ge:Pa ameterI]D )./ 取碍10#
J亏出自]数据
lf DH::_IJ
l 是苫 『 襄罩口;譬寺 置锃F 传 1直
s:strut e×e I【lte0 Jery{ SELECT l FROM Book)
开后Resu ̄tSet 量
诧>
<CENTER>
<TABLE bgcclor=B ue>
<TR)
<TD><B>镐 </B)<TD>
<TD><暑>书芒</B><TD>
< TR>
<%
一
刊目whle话耳! i next 圭牦数难表甲的记录列
w l e{rs nextI I i
{
: )
<T )
<TD><B><%: s!le:St r ngI D I%)< B>< TD>
< D)<B><%:fs getSt ring Title 1%)</B)<TD>
</TR>
<%
}
%)
<一TABLE>
</CENTER)
<BR>
<CENTER)
<D)(FONT SIZE:4 CO_OR:red>请辅A欹删除 编号
<,FONT></P)
(FORM action=De ere Isp method:POST name:form2>
<INPUTtype=tex:name=D)
<INPUTtype: submit vahe=跚险name=B2>
</FORM
</CENTER>
<%
S
{
建王壹词圈 垂 SQL宇串
S:riqg strSQL:SELECT-一=R0M Book WhERE ID: 一
lDH+
ra:sturt executeQ e ry(s:rSQL}./建王ResuhSet妄量
lffI 1ext《lI
%>
(CEN 一{一>
<P :l书
<FON S ZE=4 C0L0R:reo>
<%=)H%)
</FO!JT 穑j芒去进1彳习书删译 (P)
<%
16 电曲编程技巧与维护.2002:3
智慧密集
删际习书数据 SQL语
String strDel= DELETE FROM BoOk WHERE ID: +
DH十
stmt ecuteupdateI strDel J 行 豫 作
rs:s:mt execu=eQuery SELECT¥FROM Book I
重新开届记录集要量印呈Book数据表中的蠡据
%
<CENTER>
<TABLE bgcolor=Blue)
<TR)
<TD><B 昙< B)(,1。D>
<TD><8>t4名< B><,TD)
<TD><B 乍考<,B)< TD>
</TR>
<%
0用while循环配自next万硅牡赶据表中的记录列出
whilef rs next1))
%>
<TR>
<TD)<B)<%:ra getString(ID )%></B></TD)
<TD)<B><%=rs getString{ Title }%)</B></TD>
<TD><B><%:rs getString(Au:hor }%></B></TD>
</TR>
<%
</TABLE>
</CENTER>
%>
<P><A HR EF
Delete lsp>要删陈习字</A>还是回到<A
ref= lqdex Isp
>图书管理 < A></P)(/CENTER)
<%
%>
</BODY>
</HTM L>
关于上面的三个程序(Queq ̄.Jsp.Insert jsp.Delete j叩)的
有关说明:
●上面的图书管理在实际应用中还必须进一步完善 JSP
通过JDBC访问OraeleSi数据库可以采用三种方法之一.本例
中采用Oracle8i瘦驱动程序,从Java小应用程序连接并查询
Oracle数据库,这种方法是JDBC访问Oracle数据库最常用
的、效果最好的。如果要用JDBC—ODBC桥的方法访问Oracle
数据库的话,就要像ASP访问数据库一样也要配置ODBC。
●为了JSP程序的简洁,可以将JDBC访问OracleSi数据
库的程序公共部分f或<%!xⅡ%>中x垃程序)做成一十Java—
Bean.就像上面的第一个例子一样.通过调用Bean的方式来
操作:
●在Insert.J。p中用到se&sion对象存取的说明如下:
将数据保存到sessien对象的语法如下:
session setAttributeIStirng数据名称,Object数值)
(下转第27页】
维普资讯
实用第一
B00L bRecving
b reak
一
——
集
.
编
0VERLAPPED read os:
OVERLAPPED write
os;
_
J
OVERLAPPED OS;
COMSTAT comStat; BOOL bSending=TRUE
Clea rCommE rro r I hComm,Dev&dwE r ro r=lag&corn—
Stat
HWND m hWnd;,/调 王窗伍句
HANDLE hCommDev
HANDLE postRecvEvent;
HANDLE 00stSendEve n1
HANDLE rethread.
_
DWORD ISendSt'Len:comStat cb0utQue
FILE十fpSeno:fopeqIflename rb )
//又件小于5K
int t=fread{st rSendData十30 1 5120 3O佃SeRe
f fISendStrLen::0)
DWORD dwThreadID1
将以下代码添加到实现文件中
nclude<crtdbg h>
#nclude<stdio h>
f
if(bSending)
W r;teFile I hCommDev,st rSendData,t+30.&dwBytesW r t
ten.8Lw riteos)
1O将以下代码写在头文件中
extem C void stdcaI ISendFile{char filename__)
将以下代码写在输出库定义文件中
SendEile
SetEvent f D0stSendEven
@2 、
fcloseI:fpSend J:
bSending=FALSE.
11代码编写的任务已经完成,现在只需编译执行即可生
成一个输人库文件和一个动态链接库文件。
注意所要发送的文件必须以字母a且结尾,如果文件尾不
是a且.应手动添加。
9舔加所需的变量和所需的文件。
三、结束语
本文从实际应用的角度对申口通信的实现方法给出了较为
详细的说明,所给出的实例是作者在实际的软件程序中摘录出
来的,具有较强的实用性。由于篇幅所限,实际软件中许多详
细内容还没有完全展示出来,读者只需将部分代码完全拷贝,
即可实现所需功能。如果读者对程序还有其他方面的要求,请
发E』nail:pekingmxl@sina COrn en
将以下定义添加到头文件中
unsigned long combaud rate:
unsigned long dwBytesW ritten
unsigned long dwE r rorFlag;
unsigned long dwTransfer;
unsigned long iRecvStrLen;
unsigned long dwEvtMask
串口波特率
参考文献
1.席庆、张春林编蓍.
Visual C++6.0实用编程技术
中国才利水电出版社,1999
2陈坚、孙志月编著
Modem通信编程技术.西安电子
科技大学出 杜 1999
(收稿目期:2001年l2月22日)
cha r strSendData【51 2O1. 发送缓冲区为5K
cha r strRecvDataI 51 20】 /接嘘缓冲区7j 5K
cha r strRecvBuffI 51 20】,,,串口接嘘缓冲区 5K
cha r endcode【2】 结束字符
Int
int count; ,接嘘数据 十数
f上接第l6面)
取得保存在 ̄ession对象的数据语法如下:
Object对象变量:session getAttribute(String数据名称)
●JSP中文显示的说明:
在JDBC Driver对数据库中的数据的暴加和显示时,会涉
及到IS08859_1和GBK字符集的转换同题,即encode和Uni—
code的代码转换,只有处理好字符集的转换同题.中文才能
正常显示。
public String GBK2UN ̄(String s1throws Exception
{
String temp:new String(s getBytes{ GBK ) IS08859 1
return temP.
}
或
/ 将Unicode转换无GBK的代码
public String UNI2GBK(String s Jthrows Exception
{
String temp:new Stringfs ge:Bytes c S08859
1 ) GBK
_
下面是字符集的转换的一段源程序,根据具体情况进行处
理。
}
retu rn temp;
叫£GBK转换 dnicode的代码
(牧稿E期:2002年1月4粤)
coⅢ|,mr Pr0 商她 &M赫 啦 27
版权声明:本文标题:+JavaBeans+Servlet+Oracle8i+Solaris7构建网站 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713320978a629368.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论