Tomcat+JSP+Oracle信息查询系统开发笔记(2)

来源:互联网 发布:pp助手 mac 备份app 编辑:程序博客网 时间:2024/05/20 06:23

上一篇讲解了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数据库