index.html如下:
<%@ page contentType="text/html;charset=gb2312" language="java"%>
<html>
<head>
<title>留言</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<LINK href="../../hellking.css" type=text/css rel=stylesheet>
<body>
<table width="90%" align="center" border=1 cellspacing="0" bordercolordark="#CCCC99" bordercolorlight="#CCCC99">
<tr>
<td align="center" bgcolor="#CCCC99">访客留言板</td>
</tr>
<tr>
<td><table  align="center" border=1 cellspacing="0" cellpadding="0" bordercolordark="#CCCC99" bordercolorlight="#CCCC99">
<form action="addMessage.jsp">
<tr>
<td>姓名:</td>
<td bgcolor="#CCCC99"><input type="text" name="name" size=25></td>
</tr>
<tr>
<td bgcolor="#CCCC99">E-mail:</td>
<td bgcolor="#CCCC99"><input type="text" name="email" size=25></td>
</tr>
<tr>
<td><tr>
<td>主题:</td>
<td bgcolor="#CCCC99"><input type="text" name="title" size=25></td>
</tr> 
<tr>
<td valign="top" bgcolor="#CCCC99">留言:</td>
<td><textarea name="content" rows=7 cols=25></textarea></td>
</tr>
<tr>
<td colspan=3><table align="center" width="100%" cellspacing="0" cellpadding="0" bordercolordark="#CCCC99" bordercolorlight="#CCCC99">
</tr>
<td align="center" bgcolor="#CCCC99"><input type="submit" value="提交留言"></td>
<td align="center"><a href="viewMessage.jsp"><font size=2>查看留言</font></a></td>
<td align="center" bgcolor="#CCCC99"><input type="reset" value="重新填写"></td>
</tr>
</table></td>
</tr>
</form>
</table></td>
</tr>
</table>
</body>
</html>
addMessage.jsp如下:
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,com.jspdev.message.*,java.util.*,java.sql.*" errorPage="../error.jsp"%>
<jsp:useBean id="messageVo" class="com.jspdev.message.MessageVO" scope="page">
<jsp:setProperty name="messageVo" property="*"/>
</jsp:useBean>
<jsp:useBean id="messageBean" class="com.jspdev.message.MessageBean" scope="page"/>
<HTML>
<HEAD>
<TITLE>添加记录</TITLE>
</HEAD>
<%
request.setCharacterEncoding("gb2312"); 
%>
<BODY>
<%
try
{messageBean.setMessage(messageVo);
messageBean.addMessage();
}
catch(Exception e)
{
e.printStackTrace();
}
%><jsp:forward page="viewMessages.jsp"/></body>
</html>
ViewMessage.jsp如下:
<%@ page contentType="text/html;charset=gb2312" language="java"%>
<%@ page import="java.sql.*,com.jspdev.message.*,java.util.*,java.sql.*"%>
<jsp:useBean id="messageBean" class="com.jspdev.message.MessageBean" scope="page"/>
<HTML>
<HEAD>
<TITLE> show the message in the table </TITLE>
</HEAD>
<%
request.setCharacterEncoding("gb2312"); 
%>
<LINK href="..\..\hellking.css" type=text/css rel=stylesheet>
<BODY>
<p align="center">所有访客留言</p>
<hr>
<%
int message_count=0;
Collection messages=messageBean.getMessage();
Iterator it=messages.iterator();
while(it.hasNext())
{
   MessageVO message=(MessageVO)it.next();   
%>
<TABLE  width="100%" align="center" border=1 brcolor=99ccff cellspacing="0" cellpadding="0" bordercolordark="#000000" bordercolorlight="#CCCC99">
<tr><td bgcolor="#CCCC99"><font size=2>主题:</font></td>
<td colspan=3><%=message.getTitle()%></td></tr>
<tr><td bgcolor="#CCCC99"><font size=2>留言人:</font></td>
<td><%=message.getName()%></td><td bgcolor="#CCCC99"><font size=2>E-mail:</font></td>
<td>
<% 
out.println("<a href=mailto:"+message.getEmail()+">"+message.getEmail()+"</a>");
%>
</td></tr>
<tr><td bgcolor="#CCCC99"><font size=2>留言时间:</font></td><td colspan=3>
<%
out.println("<font size=2>"+message.getDate().toLocaleString()+"</font>");
%>
</td></tr>
<tr><td align="center">
<%
out.println("("+message_count+")"); 
%>
</td>
<td colspan=3><%=message.getContent()%>
</td></tr>
</table>
<%
out.println("<hr>");
message_count++;

%>
<p align="center"><a href="index.html">我要留言</a></p>
</body>
</html>
MessageBean如下:
package com.jspdev.message;import javax.sql.*;
import java.sql.*;
import java.util.*;public class MessageBean
{
private Connection con;
MessageVO msg;

//获得数据库连接。
public MessageBean()
{
  String CLASSFORNAME="oracle.jdbc.driver.OracleDriver";
    String SERVANDDB="jdbc:oracle:thin:@127.0.0.1:1521:prince";
    String USER="prince";
    String PWD="prince"; 
    try
    {
     //装载数据库驱动程序。
     Class.forName(CLASSFORNAME);
con = DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e)
{
e.printStackTrace();
}
}

//设置属性。
public void setMessage(MessageVO msg)
{
this.msg=msg;
}

//增加一个消息
public void addMessage()throws Exception
{
try
{
PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
stm.setString(1,msg.getTitle());
stm.setString(2,msg.getName());
stm.setDate(3,new java.sql.Date(new java.util.Date().getTime()));
if((msg.getEmail()).length()==0)
stm.setString(5,null);
else stm.setString(5,msg.getEmail());
stm.setString(4,msg.getContent());
try 
{
stm.executeQuery();

catch(Exception e) 
{
}

con.close();
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}
//获得所有留言消息,并且返回结果到JSP页面。
public Collection getMessage()throws Exception
{
Collection ret=new ArrayList();
try
{
Statement stm=con.createStatement();
ResultSet result=stm.executeQuery("select count(*) from message");
int message_count=0;
if(result.next())
{
message_count=result.getInt(1);
result.close();
}
if(message_count>0)
{
result=stm.executeQuery("select * from message order by time desc");

while(result.next())

String title=result.getString("title");
String name=result.getString("name");
String mail=result.getString("mail");
String content=result.getString("content");
java.sql.Date date=result.getDate("time");
MessageVO message=new MessageVO();
message.setName(name);
message.setTitle(title);
message.setContent(content);
message.setDate(date);
message.setEmail(mail);
ret.add(message);
}
result.close();
stm.close();
}

con.close();

}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
return ret;
}
}



messageVO如下:
package com.jspdev.message;
/**
 *此JavaBean,代表了留言薄的数据
 */
public class MessageVO implements java.io.Serializable
{
private String name,email,title,content;
private java.sql.Date date;
//setter 或者getter方法。
public void setName(String name)
{
this.name=name;
}
public void setEmail(String email)
{
this.email=email;
}
public void setTitle(String title)
{
this.title=title;
}
public void setContent(String content)
{
this.content=content;
}
public String getName()
{
return this.name;
}

public String getContent()
{
return this.content;
}
public String getTitle()
{
return this.title;
}
public String getEmail()
{
return this.email;
}
public java.sql.Date getDate()
{
return this.date;
}
public void setDate(java.sql.Date date)
{
this.date=date;
}
}
跟oracle读取数据时候凡是中文都是乱码,oracle里显示的是乱码,jsp里读出的也是乱码。谢谢!
oracle的编码ZHS16GBK。