您的位置:寻梦网首页编程乐园Java天地小龙亭之JSP实践之旅
小龙亭之JSP实践之旅
主页入门EJBJ2EE平台JSP编程译文工具JavaAppServerWeb数据库XML手记小亭

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