上一篇讲解了Tomcat的安装以及配置,本篇讲解查询系统中核心部分,数据库链接以及查询操作的实现。
由于数据库操作部分为java而非HTML/javascript,所以需要在页面开头处写入以下代码。
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page
import="java.sql.Connection"
import="java.sql.ResultSet"
import="java.sql.SQLException"
import="java.sql.Statement"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
在HTML页面中嵌入java代码需要用<% %>包裹起来,上述代码的功能是引入java关于数据库操作的库。
一般查询操作页面虽然也以.jsp后缀名保存,但不显示在前台。并且页面中几乎都为java代码,所以HTML代码部分可省略至仅保留两个标签。
接下来讲解链接数据库以及进行查询、显示操作的java代码。
Connection con;
Statement stmt;
ResultSet rs;
声明后面会使用的变量。否则会出错。
为了保证代码能处理异常,需要引入try/catch结构,如下图所示。
try{
out.println('all is well');
}
catch(Exception e){out.println(e.getMessage());}
引入Oracle的jdbc驱动,并取得所连接到的数据库的url,数据库名称,登录用户名以及密码。其中url信息可在本机Oracle安装文件夹下找到。
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
String dbUrl="jdbc:oracle:thin:@1.1.1.1:1521:dbl";
String dbUser="god";
String dbPwd="god";
con=java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);
stmt=con.createStatement();
本身开发的这个信息查询系统是关于ipv4地址信息的,输入一个ip地址,输出数据库中若干个表中的isp信息,省市信息。其中ip地址只需要输入前三段,因数据库中的ip地址最后一段均为1,对传入的ipname进行字符串处理以其为条件进行查询操作。
String ipname = request.getParameter("ip_name");
ipname += ".1";
out.println("<br / >"); //插入一个空行
out.println("<table>");
out.println("<tr><td width='200px'nowrap>数据源</td><td width='200px'nowrap>省份</td><td width='200px'nowrap>城市</td><td width='200px'nowrap>ISP</td></tr>");
ipname为查询界面传出的ip地址字符串。随即输出表格的HTML代码。表格的其他参数由下列代码在head标签中定义,使用css代码而非html代码对其进行修饰。
<style type="text/css">
table
{
border-collapse:collapse;
width:1000px;
text-align:center;
}
table, td, th
{
border:1px solid black;
}
</style>
最后为查询操作与打印表格的代码,使用较为简单的sql语句即可完成多表的查询,即一条语句查询一个表,需要注意的是sql查询语句为字符串,其变量名需要因查询的表不同而不同,否则会报错。
另外sql查询为空时会返回null值,需要对其进行处理变为空格。
表格打印完毕后关闭与数据库的链接并销毁变量。
//A数据库
String sqla="select * from A where ip="+"'"+ipname+"'";
rs=stmt.executeQuery(sqla); //rs为sql查询后获得的列表
while(rs.next())
{
String col1="A库";
String col2=rs.getString(2);
String col3=rs.getString(4);
String col4=rs.getString(6);
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td></tr>");
}
//B数据库
String sqlb="select * from B where ip="+"'"+ipname+"'";
rs=stmt.executeQuery(sqlb);
while(rs.next())
{
String col1="B库";
String col2=rs.getString(2);
String col3=rs.getString(3);
if (col3 == null)
col3 = " ";
String col4=" ";
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td></tr>");
}
out.println("</table>");
rs.close();
stmt.close();
con.close();
整个流程可类比一个冷笑话“如何将大象装进冰箱”,打开冰箱——装进大象——关上冰箱。本例中链接的数据库是Oracle,对于MySQL也是类似的过程与代码,只需要更改jdbc驱动部分的代码即可。
下篇将讲解查询系统的搭建与demo实现。
参考链接:jsp链接Oracle数据库