JSP-Servlet对SQL Server 2005的可配置访问
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP/Servlet对SQL Server 2005的可配置访问
王萍, 董义革
(1.2.北京电子科技职业学院科技工程学院电子工程系,北京 100029 )
摘要:
随着SQL Server 2005数据库使用的普及,在Java 应用程序中使用基于Java Database Connectivity (JDBC)的驱动程序来访问SQL Server 2005数据库已经成为十分必要的工作。
特别是随着XML成为工业标准,越来越多的Java应用程序趋向于使用XML配置文件。
论文结合实例讲述了在JSP/Servlet中使用JDBC 驱动及XML配置文件访问SQL Server 2005数据库的典型应用方式。
With the more and more applying in SQL Server 2005, Using the drive of Java Database Connectivity(JDBC) procedure to visit SQL Server 2005 database in the Java applied procedure have already become a very necessary work. Especially with the XML become industry standard , more and more of Java application will use XML configuration document. The paper combines a example related typical model application way to use JDBC to drive in the JSP/Servlet and the XML configuration to visit SQL Server of 2005 databases 。
关键词:
JDBC; SQL Server 2005; XML; JDOM; JSP/Servlet; JBuilder
1.引言
JSP是一种基于Java Servlet的Web开发技术。
目前,JSP/servlet 结合大型或超大型网络数据库已经成为电子商务站点的流行架构。
在传统的网页HTML文件中加入Java程序代码,就构成了JSP页面。
当Web服务器上的一个JSP页面被第一次请求执行时,JSP引擎首先将此JSP页面文件转译成一个java Servlet文件,再将这个java文件编译成字节码文件,然后通过执行字节码文件响应客户请求。
JDBC(Java Database Connectivity)是Java语言访问数据库的一种规范, 它是一个面向对象的应用程序接口(API),是Java核心类库的一部分。
为了使JAVA应用程序独立于特定的数据库驱动程序,JDBC 规范建议开发者使用基于接口的编程方式,即尽量使用仅依赖java.sql及javax.sql中的接口和类。
通过使用JDBC,Java应用程序可以访问各种不同类型的关系数据库,完成建立数据库连接、执行SQL语句进行数据的增、删、改、查操作。
JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性, JDBC 应用程序可以自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。
随着SQL Server 2005数据库使用的普及,在Java 应用程序中使用基于JDBC驱动程序来访问SQL Server 2005数据库已经成为十分必要的工作。
特别是随着XML成为工业标准,越来越多的Java应用程序趋向于使用XML配置文件。
下面结合实例讲述在JSP/Servlet中使用JDBC驱动及XML配置文件访问SQL Server 2005数据库的典型应用方式。
2.JDBC驱动程序的下载及设置
首先需要下载SQL Server 2005的JDBC驱动程序,下载后需要对机器的环境变量以及JBuilder 或Eclipse开发环境进行配置。
2.1 JDBC驱动程序的下载
首先下载SQL2005的JDBC驱动程序,这是微软官方下载地址:
培训项目:高端软件、网络工程师(可通过搜索引擎检索“深圳北大青鸟嘉华学校”进入学校网站)
/download/2/8/9/289dd6a3-eeeb-46dc-9045-d0c6b59bfbc1/sqljdbc_1.1.1501.101_chs.exe 。
将文件“sqljdbc_1.1.1501.101_chs.exe ”下载后解压,会默认解压生成一个名
为“
Microsoft SQL Server 2005 JDBC Driver ”的文件夹。
将此文件夹复制到%ProgramFiles%文件夹下(如果系统在C 盘则为C:\Program Files )。
复制后的文件夹内容如图1所示。
2.2 设置系统环境变量CLASSPATH
JDBC 驱动程序并未包含在 Java SDK 中。
因此,如果要使用该驱动程序,必须将CLASSPATH 设置为包含 sqljdbc.jar 文件,即“CLASSPATH =
.;C:\Program Files\sqljdbc_1.1\chs\sqljdbc.jar ”,否则Java 应用程序在加载JDBC 驱动时,将引发“找不到类”的常见异常。
2.3 配置JBuilder
打开JBuilder2005开发环境, 创建一个名为“JDBC_SQL2005”的项目。
在此项目中创建一个名为“JDBCTest ”的Web Module 。
在此Web Module 中创建一个名为“JDBC_SQL2005.jsp ”的JSP 应用程序页面。
此时整个项目在“Project ”窗口中显示如图2所示。
选择“Project ” “Project Properties ”菜单项,打开此项目的属性配置窗口 。
切换到“Required Libraries ”面板,点击“Add ”按钮,向此工程中添加JDBC 驱动类库文件,如图3所示。
点击“Add ”按钮后,选择“New ”按钮。
在打开的窗口中先给要加载的JDBC 驱动起个名字“SQLJDBC ”。
点击“Add” 按钮,再在弹出的窗口中选择安装在“C:\Program
Files\sqljdbc_1.1\chs ”文件夹下的“sqljdbc.jar ”文件后,点击”OK ”按钮。
此时JDBC 驱动程序已加载到当前的项目中,如图3
所示。
3. SQL Server 2005数据库系统的配置
SQL Server 是一个设计用于在服务器上运行,能够接受远程用户和应用程序访问的数据库管理系统。
而SQL Server 2005的设计原则之一就是“Trustworthy Computing initiative ”——Secure by Default(“默认安全”)。
在实现这一原则的过程中,SQL Server 2005禁用了一些网络选项以尽量保证SQL Server 环境的安全性。
例如,SQL Server 2005在默认情况下并不允许远程访问(企业版除外),即不允许使用TCP/IP 协议,所以要使用用“SQL Server 外围应用配置器”工具来启用远程访问。
3.1 启用远程连接
图2 JSP 应用程序项目结构图
图3 向JSP 应用程序项目添加JDBC 驱动类库
图4 启用TCP/IP 协议
图5 启用TCP/IP 协议
选择“开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server 外围应用配置管理器”菜单,在打开的窗口中选择“服务和连接的外围应用配置器”选项。
此时会弹出“服务和连接的外围应用配置器”窗口。
在“远程连接”中选择“同时使用TCP/IP 和named pipes (B )”,然后点击“确定”按钮,如图4所示。
3.2 启用SQL Server 2005
网络配置中的TCP/IP
协议
选择“开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server Configuration Manager ”菜单,在打开的窗口左侧选择“SQL Server 2005 网络配置”项下面的“SQLEXPRESS 的协议”选项,将其对应的TCP/IP 协议设置为“启用”,如图5所示。
3.3 配置启用的TCP/IP 协议 修改TCP/IP 属性,将全部侦听改为“否”,同时将TCP 动态端口改为空(让服务器自己选择端口), TCP 端口改为1433,如图6所示。
重新启动计算机,或重新启动SQL Server2005 express 服
务。
4. 使用jdom 读取XML 配
置文件
当创建JDBC 到SQLServer 2005数据库的连接时,需要提供数据库服务器IP 地址、用户名、密码以及所要访问的数据库等信息。
为了使我们的JSP/Servlet 应用程序有较好的安全性和可移值性,一般要把这些信息写在一个配置文件中,并将此配置文件存放到应用程序所在的“WEB-INF ”文件夹下,此文件夹是禁止浏览器访问的。
随着XML 成为工业标准,越来越多的Java 应用程序趋向于使用XML 配置文件。
文档对象模型(Document Object Model ,DOM )是公认的 W3C 标准,它被用于与平台及语言无关的 XML 文档内容、结构和样式的动态访问和更新。
它为表示文档定义了一套标准的接口集,也为访问和操纵文档定义了一套标准的方法。
而jdom 是用java 语言读、写、操作XML 的API 。
用jdom 处理现有XML 文档的大致过程如下:
● 用构造方法构造一个org.jdom.input.SAXBuilder 对象。
● 用建立器的build()方法从reader,inputstream,url,file 或包含系统id 的字符串建立Document 对
象。
● 如果读取文档遇到问题,则抛出IOexception,如果建立文档遇到问题,则抛出JDOMException 。
● 否则用Document 类,element 类和其他jdom 类的方法在文档中建立导航。
4.1 jdom 的下载及配置
图6 配置TCP/IP 协议
目前jdom 并没有包含在sun 的jdk 中,需要到 下载jdom 的最新版本。
将文件“jdom-1.0.zipjdom-1.0.zip 下载后解压,会默认解压生成一个名为“jdom-1.0”的文件夹。
将此文件夹复制到%ProgramFiles%文件夹下(如果系统在C 盘则为C:\Program Files )。
复制后的文件夹内容如图7所示。
jdom 的jar 文件就是build 目录下的文件jdom.jar 。
再在JBuilder2005开发环境中,将“jdom.jar ”添加到当前的项目中,如图8所示。
图7
jdom.jar
文件所在位置 图8 将
jdom.jar 添加到当前的项目
4.2 创建XML 配置文件
在Web Module “JDBCTest ”的“WEB-INF ”文件夹下新建一个名为“DBConfig.xml ”的XML 文件,其内容为需要连接的SQL Server 2005数据库所在的服务器IP 地址、端口号、数据库登录用户名、密码及要访问的数据库名信息。
其代码如下:
<?xml version="1.0"?> <DBConfig>
<ipaddress>127.0.0.1</ipaddress> <port>1433</port>
<database>master</database> <user>sa</user> <password>sa</password> </DBConfig>
4.3 JSP 页面程序设计
JSP 页面利用JDBC 驱动连接SQL Server 2005系统数据库master ,并检索表
MSreplication_options 中的所有记录。
如果检索成功,则在页面中显示出相应信息,如果操作失败,则报告异常。
JSP 页面代码如下,此JSP 页面运行效果如图9所
示。
<%@page
import="java.io.InputStream,
java.io.IOException,
java.io.FileInputStream, org.jdom.input.SAXBuilder, org.jdom.Document, org.jdom.Element, org.jdom.JDOMException,
图9 JDBC_SQL2005.JSP 运行效果
org.jdom.*,
java.sql.*"%>
<%@page contentType="text/html;charset=GB2312" language="java"%>
<html>
<head>
<title>使用JDBC驱动及XML配置访问SQL Server 2005数据库</title>
</head>
<body>
<center>
<%
String ipaddress, port, database, user, password;
Connection con = null;
Statement s = null;
ResultSet rs = null;
try {
//构造一个SAXGBuilder对象
SAXBuilder db = new SAXBuilder();
//取得XML配置文件的绝对路径
String filepath =
pageContext.getServletContext().getRealPath("WEB-INF\\DBConfig.xml"); //创建文档
Document doc = db.build(new FileInputStream(filepath));
//获得这个文档的根元素
Element root = doc.getRootElement();
//获取各个元素的值
ipaddress = root.getChild("ipaddress").getText();
port = root.getChild("port").getText();
database = root.getChild("database").getText();
user = root.getChild("user").getText();
password = root.getChild("password").getText();
//输出从XML文档中提取的配置信息
out.println("数据库所在的服务器IP地址:" + ipaddress + "<br>");
out.println("端口号:" + port + "<br>");
out.println("用户名:" + user + "<br>");
out.println("密码:" + password + "<br>");
}
catch (JDOMException jdome) {
throw new IOException(jdome.getMessage());
}
try {
//加载JDBC数据库驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch (ClassNotFoundException ce) {
System.out.println("JDBC驱动加载失败!");
System.out.println(ce);
}
try {
String str = "select * from dbo.MSreplication_options";
// 创建数据库连接,要提供主机IP地址、端口号、用户名、口令等信息
con = DriverManager.getConnection(
"jdbc:sqlserver://" + ipaddress + ":" + port + ";DatabaseName=" + database, user, password);
//执行SQL语句,得到结果集
s = con.createStatement();
rs = s.executeQuery(str);
if (rs.next()) {
out.print(database + "数据库成功访问");
}
rs.close();
}
catch (SQLException se) {
System.out.println(database + "数据库访问失败!");
System.out.println(se);
}
finally {
try {
if (s != null) {
s.close();
}
if (con != null) {
con.close();
}
}
catch (SQLException se2) {
System.out.println("数据库连接关闭失败!");
System.out.println(se2);
}
}
%>
</center>
</body>
</html>
5.总结
Java与XML的组合被普遍认为是“黄金组合”。
JDBC技术的使用,可以实现对因特网上异构环境的数据库的访问,已经成为Web开发的首选方案。
相信随着SQL Server 2005使用的普级,在使用JDBC访问SQL Server 2005数据库时采用XML配置文件也一定会被更广泛的使用。
参考文献:
[1] 马斗·专家门诊——JSP开发答疑[M]·北京:人民邮电出版社,2006年5月·P151~152
[2] imetoo的资料室·数据库安全基本原则[OL] ·/,2007年10月24日/2007年10月27日。