JSP语法介绍 语法详解 jsp汉字编码问题策略 javamail在JSP中的应用 javamail何志强篇 JDBC精要 jsp在win2k/oracle上的应用 如何用UML为JSP建模 通用信息发布程序 JSP概述及音乐店设计 jsp计数器制作 不用odbc直接连接SQL Server jsp的出错处理 jsp的wap应用 jsp实现购物程序 用jsp编写文件上载 用jspsmart Bean实现文件上载 用jsp连接mySQL数据库 基本内置组件 JavaBean调用示例 JDBC应用示例 一个通用的日历 JSP技巧集锦(一) 流方法读写文件 文件处理-读写追加 数据库记录分页显示
|
用JSP编写通用信息发布程序
邓振兴 (计算机世界报)
---------------------------------------------------------------
Sun公司的 JSP和微软公司的 ASP一样,是制作动态网页的又一利器。本文介绍如何利用 JSP和 Oracle数据库编写网上通用信息发布程序。该程序主要是利用了 Java的 Enumeration数据类型,通过调用 Java Bean和 Oracle数据库相连接。
插入数据记录
提供一个通用的向数据库插入数据记录的接口,以供发布信息。程序与数据库类型无关,与信息发布界面无关。
recordMessage.jsp
<HTML><HEAD>
<META content="text/html; charset=GB2312" http-equiv = Content-Type>
<TITLE>jsp通用信息发布程序</TITLE>
</HEAD>
<BODY bgcolor = "#aad2fb">
<% @ page contentType=“ text/html; charset=GB2312”% >
<% @ page language=“ java” import=“ java.sql.* ,java.util.*”% >
<jsp: useBean id = "replyok" scope = "page" class ="ymbean.opDb"/>
<%
//只允许用 POST方法发布信息 ,这是为了避免有人使用程序恶意发布信息
String requestMethod=request.getMethod();
requestMethod=requestMethod.toUpperCase();
if(requestMethod.indexOf(“ POST” )<0)
{ out.print(“非法操作 !!!” );
return;
}
String dtkey=“” ;
try{
//取数据表
dtkey=new String(request.getParameter(“ dtkey” ).getBytes(“ ISO8859_1” ));
//参数名其实就是数据表的列名,参数值就是要存入数据表的信息
String vcname=“” ,vcvalue=“” ,vcnames=“” ,
vcvalues=“” ,insertsql=“” ,st=“‘ ,’” ;
Enumeration vpe = request.getParameterNames();
//动态形成向数据库插入信息的 sql语句
while (vpe.hasMoreElements())
{
vcname = (String) vpe.nextElement();
vcname = vcname.trim();
if(vcname.equals(“ dtkey” )) continue;
String colname=vcname;
st=“”+“’” ;
//由于向 Oracle中插入记录时,数值列和字符列是有区别的 ,所以必须在信息录入界面程序 sayMessage.jsp中提供标识
if(vcname.charAt(0)==‘#’ ){
//表示该列为数值列
colname=vcname.substring(1,
vcname.length());
st=“” ;
}
vcvalue=new String(request.getParameter
(colname).getBytes(“ ISO8859_1” ));
vcvalue= vcvalue.trim();
vcnames= vcnames+ colname+“ ,” ;
vcvalues=vcvalues+ st+ vcvalue+ st+“ ,";
}
vcnames=vcnames .substring(0,vcnames .length()- 1)+“ )” ;
vcvalues=vcvalues .substring(0,vcvalues .length()- 1)+“ )” ;
insertsql=“ insert into”+ dtkey+ vcnames+ vcvalues;
//插入发文
try{
String lmsg=replyok.executeUpdate(insertsql);
if(lmsg.indexOf(“ executeUpdate ok” )< 0)
out.print(“信息发布失败 ,error:”+ lmsg);
else
out.print("<BR> <BR> <BR> <CENTER> <H1>发布信息成功!</H1> </CENTER> </BR> </BR>");
}catch (Exception e1) { out.print(“错误 001:”+ e1);}
} catch (Exception e) {}
% >
</BODY> </HTML>
信息发布界面
提供发布信息的交互界面,调用 recordMessage.jsp程序。
sayMessage.jsp
<HTML> <HEAD> <TITLE> 信息发布</TITLE>
<META content = "text/html; charset=GB2312" http-equiv = Content-Type>
<LINK href ="css_01.css" rel = stylesheet>
<META content = "MSHTML 5.00.3103.1000" name =GENERATOR> </HEAD>
<BODY>
<% @ page contentType=“ text/html; charset=GB2312”% >
<% @ page language=“ java” import=“ java .sql .*”% >
<jsp: usebean id ="rencommend" scope="page" class="ymbean.opDb"/>
<form action =recordmessage.jsp method =post name=sign>
<input name=dtkey type=hidden value=ta_routes>
<table bgcolor=#d5e8fd border=0 cellspacing=1 width="97%">
<tbody>
<tr> <td nowrap width="45%" height="185px">
<div align=left>
<table bgcolor=#d5e8fd border=0 cellspacing=1 width="100%">
<tbody>
<tr> <td nowrap width="100%" >线路名称:
<input maxlength=100 name = routename size=36>
</td>
</tr>
<tr><td nowrap width="100%">显示序号:
<input maxlength=3 name=routeno size=36>
</td></tr>
<tr>
<td width="100%" >游览内容。文字超一行时 ,请您敲 Enter键换行</td>
</tr>
<tr><td width="100%" height="162px">
<TEXTAREA cols=55 name =c04 rows=9>
</TEXTAREA>
</TD>
</TR></TBODY></TABLE></DIV></TD></TR>
<TR><TD align=middle colspan=2 nowrap>
<input name=cmdcommit type=submit value="提交">
</td></tr></tbody></table>
</form></center>
<div></div></body></html>
连接数据库
通过调用 Java Bean连接 Oracle数据库。
opDb.java
package ymbean; // java包
import java.sql.* ;
public class opDb {
public opDb() { }
public ResultSet executeQuery(String sql)
{
ResultSet rs = null;
Statement lstmt = null;
try { lstmt = connectdb();
rs = lstmt.executeQuery(sql);
System.out.println(“ executeQuery:”+ sql);
} catch(SQLException ex) { return(null); }
return rs;
}
public String executeUpdate(String sql)
{
ResultSet rs = null;
Statement lstmt = null;
try {
lstmt = connectdb();
lstmt.executeUpdate(sql);
System.out.println(“ executeUpdate:”+ sql);
lstmt.executeUpdate(“ commit” );
}catch(SQLException ex) {}
return(“ executeUpdate ok” );
}
//连接数据库
public Statement connectdb()
{ Statement lstmt=null;
Connection conn=null;
final String connect_string=“ jdbc:oracle:thin:scott/tiger@192.168.0.1:1521:test” ;
final String driver_string=“ oracle.jdbc.driver.
OracleDriver” ;
Connection lconn;
try { Class.forName(driverstr);
lconn=DriverManager.getConnection(connectstr);
lstmt=lconn.createStatement();
} catch (Exception e) { return(null);}
return lstmt;
}
}//end opDb.java
|