这是我的第一个留言板测试例子,包括登陆界面,留言板主页,添加留言等页面:
1.页面
F:/Tomcat 5.0/webapps/ROOT/login
log.html
log_cm.jsp
success.jsp
relog.jsp
index.jsp
guestbook.jsp
2.Bean
F:/Tomcat 5.0/webapps/ROOT/WEB-INF/classes/login
LogBean.java
F:/Tomcat 5.0/webapps/ROOT/WEB-INF/classes/dbtest
Accessdb.java
3.数据库
F:/Tomcat 5.0/webapps/ROOT/BUSINESS(BUSINESS 是可以自定义的)
firm.mdb——两个表:
user(name,password,email);
guest(未完成,用作保存留言.....)
4.表情
F:/Tomcat 5.0/webapps/ROOT/images
hello.gif
...
1。log.html
<html>
<head>
<title>我的第一个HTML登陆界面</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = gb2312" >
<style type = "text/css">
body { font-family:宋体; font-size:9pt}
th { font-size: 9pt }
</style>
</head>
<body>
<center>
<table border = "0" cellspacing = "0" width = "332" bgcolor = "#F0F8FF"
bordercolorlight = "#4DA6FF" bordercolordark = "#ECF5FF">
<tr><td colspan=2 align='center'><h4>请你登陆:</h4></td></tr>
<form method = post action = "log_cm.jsp">
<tr>
<td align='left'>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td align='left'>密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td align='left'>邮 箱:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan=2 align='center'>
<input type="submit" size="4" value="确定">
<input type="reset" size="4" value="重置">
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
2。log_cm.jsp
<%-- class="login.LogBean" 指代/ROOT/WEB-INF/classes/login 目录下的LogBean 类 --%>
<jsp:useBean id="handle" class="login.LogBean" scope="request">
<jsp:setProperty name="handle" property="*"/>
</jsp:useBean>
<html>
<head><title>验证界面</title></head>
<body>
<%-- session.putValue("loginsign", "ok"); 用于检验用户是否已经登陆 --%>
<%
session.putValue("loginsign", "ok");
if(handle.validate()){
%>
<jsp:forward page="success.jsp"/>
<%
}
if(!handle.validate()){
%>
<jsp:forward page="relog.jsp"/>
<%
session.putValue("loginsign", "false");
}
%>
</body>
</html>
3。success.jsp
<%-- class="login.LogBean" 指代/ROOT/WEB-INF/classes/login 目录下的LogBean 类 --%>
<jsp:useBean id="handle" class="login.LogBean" scope="request"/>
<jsp:useBean id="addBean" class="dbtest.Accessdb" scope="page"/>
<html>
<head>
<title>注册成功</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = gb2312" >
<style type = "text/css">
body { font-family:宋体; font-size:9pt}
th { font-size: 9pt }
td { font-size: 9pt }
</style>
</head>
<body>
<center>
<table border = "0" cellspacing = "0" width = "332" bgcolor = "#F0F8FF"
bordercolorlight = "#4DA6FF" bordercolordark = "#ECF5FF">
<tr><td colspan=2 align='center'><h4>祝贺你注册成功!</h4></td></tr>
<tr>
<td align='left'>用户名:</td>
<td><jsp:getProperty name="handle" property="username"/></td>
</tr>
<tr>
<td align='left'>密 码:</td>
<td><jsp:getProperty name="handle" property="password"/></td>
</tr>
<tr>
<td align='left'>邮 箱:</td>
<td><jsp:getProperty name="handle" property="email"/></td>
</tr>
</table>
<%
//把"8859_1"码转换为"gb2312"码
String name = new String(handle.getUsername().getBytes("8859_1"));
String password = new String(handle.getPassword().getBytes("8859_1"));
String email = new String(handle.getEmail().getBytes("8859_1"));
String strSQL = " insert into user(name, password, email) values(' "
+ name + " ',' " + password + " ',' " + email + " ') "; //把记录写入数据库
addBean.executeUpdate(strSQL);
out.print("你的留言已经保存到数据库中,谢谢!");
%>
</center>
</body>
</html>
4。relog.jsp
<jsp:useBean id="handle" class="login.LogBean" scope="request"/>
<html>
<head>
<title>重新登陆</title>
<meta http-equiv = "Content-Type" content = "text/html; charset = gb2312" >
<style type = "text/css">
body { font-family:宋体; font-size:9pt}
th { font-size: 9pt }
</style>
</head>
<body>
<form method = post action = "log_cm.jsp">
<table border = "0" cellspacing = "0" width = "332" bgcolor = "#F0F8FF"
bordercolorlight = "#4DA6FF" bordercolordark = "#ECF5FF">
<tr><td colspan=2 align='center'><h4>请重新登陆:</h4></td></tr>
<tr>
<td align='left'>用户名:</td>
<td><input type="text" name="username"
value="<jsp:getProperty name="handle" property="username"/>">
</td>
</tr>
<tr>
<td align='left'>密 码:</td>
<td><input type="password" name="password"
value="<jsp:getProperty name="handle" property="password"/>">
<%=handle.getErrorMsg("password")%>
</td>
</tr>
<tr>
<td align='left'>邮 箱:</td>
<td><input type="text" name="email"
value="<jsp:getProperty name="handle" property="email"/>">
<span class="error"><%=handle.getErrorMsg("email")%></span>
</td>
</tr>
<tr>
<td colspan=2 align='center'>
<input type="submit" size="4" value="确定">
<input type="reset" size="4" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
5。index.jsp
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="showBean" scope="page" class="dbtest.Accessdb" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>我的第一个留言板主页</title>
<link rel=stylesheet href="../style.css" type="text/css">
</head>
<body>
<script language="javascript">
function submit(){
self.location.replace("index.jsp")
}
</script>
<center><p>留言板</p>
<table>
<tr>
<td>
<p align='left'>>>分页
<a href='guestbook.jsp'>我要留言</a>
</td>
</tr>
</table>
<%
//指定行数
int pageLine = 10;
int totalRec = 0;
int totalSub = 0;
int intPage = 1;
int i;
try{
ResultSet rs = null;
//取得总记录数
rs = showBean.executeQuery("select count(*) as cnt from guestbook");
if( rs.next() )
totalRec = rs.getInt("cnt");
rs.close();
showBean.closeStat();
}catch(Exception e){ e.printStackTrace(); }
//取得总页数
int intPageCount = 0;
intPageCount = (totalRec + pageLine - 1) / pageLine ;
ResultSet RS = showBean.executeQuery("select * from guestbook order by serial_no desc");
String emote1;
String name1;
Date gtime1;
String content1;
%>
<table border='1' cellspacing='0' width="80%" bgcolor='#d7e3b9' bordercolorlight='#green' bordercolordark='#ecf5ff'>
<tr align='center'>
<td>表情</td>
<td>留言人</td>
<td>留言时间</td>
<td>留言内容</td>
</tr>
<%
if(intPageCount>0){
for(i=1; i<(intPage-1)*pageLine; i++)
RS.next();
for(i=1; i<=pageLine; i++) {
if(RS.next()){
emote1 = RS.getString("emote");
name1 = RS.getString("name");
gtime1 = RS.getDate("guest_time");
content1 = RS.getString("content");
%>
<tr>
<td align='center'><img src="../images/<%=emote1%>.gif" ></td>
<td align='center'><%=name1%></td>
<td align='center'><%=gtime1%></td>
<td align='center'><%=content1%></td>
</tr>
<%
}//if(RS.next())
}//for(i=1; i<=pageLine; i++)
RS.close();
}//if(intPageCount>0)
%>
<!--以下用于留言分页显示-->
</table>
</center>
</body>
</html>
6。guestbook.jsp
<html>
<head>
<title>我的第一个GUESTBOOK</title>
<link rel = stylesheet href="../style.css" type="text/css">
<script language="JavaScript">
function valiform() {
if(document.form1.content.value=""){
alert("留言内容不能为空!");
documnet.form1.content.focus();
return false;
}
}
</script>
</head>
<body>
<form method=post action="ok_guestbook.jsp" name=form1 onSubmit="return valiform()">
<center><h4></font color="blue">留言</font></h4></p>
<table width='60%' height='120'>
<%-- 取得用户登陆时的session 变量值,并存放在隐藏域中 --%>
<%String name1 = (String)session.getValue("username");%>
<input type="hidden" name="name" value=<%=name1%>>
<tr>
<td>留言人:<%=name1%></td>
</tr>
<tr>
<td>表 情:
<select name="emote" size="1">
<option style="color: #000000" value="p1" selected>大家好</option>
<option style="color: #000000" value="p2" >赞成</option>
<option style="color: #000000" value="p3" >反对</option>
<option style="color: #000000" value="p4" >不太明白</option>
</select>
</td>
</tr>
<tr>
<td>留 言:<br>
<textarea name="content" cols="50" rows="10" maxlength="80"></textarea>
</td>
</tr>
<tr>
<td align="center">
<input type="submit" size="4" value="提交" class="buttonface">
<input type="reset" size="4" value="重写" class="buttonface">
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
7。LogBean.java
package login;
import java.util.*;
public class LogBean
{
private String username;
private String password;
private String email;
private Hashtable errors;
public LogBean(){
username = "";
password = "";
email = "";
errors = new Hashtable();
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
public String getEmail(){
return email;
}
public void setUsername(String usernameStr){
username = usernameStr;
}
public void setPassword(String passwordStr){
password = passwordStr;
}
public void setEmail(String emailStr){
email = emailStr;
}
public void setErrors(String Key,String msg){
errors.put(Key,msg);
}
public boolean validate(){
boolean allOk = true;
if(username.equals("")){
errors.put("username","Plz enter your name");
username = "";
allOk = false;
}
if( (password.equals(""))||(password.length()>10)||(password.length()<6) ){
errors.put("password","Plz enter a password of 6-10 charactors.");
allOk = false;
}
if( (email.equals(""))||(email.indexOf('@')==-1)||(email.indexOf('.')==-1) ){
errors.put("email","Plz enter a valid Email");
allOk = false;
}
return allOk;
}
public String getErrorMsg(String s){
String errorMsg = (String) errors.get(s.trim());
return (errorMsg==null)?"":errorMsg;
}
}
8。Accessdb.java
package dbtest;
//1.导入JDBC 标准类库
import java.sql.*;
public class Accessdb {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:firm";
private Connection con = null;
private Statement stat = null;
ResultSet rs = null;
//2.注册数据库驱动程序
public Accessdb()
{
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("firm():" + e.getMessage());
}
}
//3.建立数据库连接及定义数据查询
public ResultSet executeQuery(String sql){
rs = null;
try{
con = DriverManager.getConnection(sConnStr);
stat = con.createStatement();
rs = stat.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("aq.executeQuery:" + ex.getMessage());
}
return rs;
}
//4.定义数据操作
public void executeUpdate(String sql){
stat = null;
rs = null;
try{
con = DriverManager.getConnection(sConnStr);
stat = con.createStatement();
stat.executeQuery(sql);
stat.close();
con.close();
}
catch(SQLException ex){
System.err.println("aq.executeQuery:" + ex.getMessage());
}
}
//5.关闭数据库连接
public void closeStat(){
try{
stat.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
public void closeCon(){
try{
con.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}