动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java 理论与实践: 平衡测试,第 .
.SpringXML配置十二个最佳实践.
.Java入门:java中几个关于类的名.
.软件项目开发之 软件过程RUP初探.
.Java语言概述.
.Tree图全功略.
.“javax.microedition.io.Connec.
.SWT/JFace开发入门指南之搭建开发.
.Java: 使用 finally 关键字来避免.
.提高Java代码的性能.
.Hibernate的关联关系映射.
.Java技术在嵌入式系统中的应用.
.ClassLoader介绍.
.java连接SQL数据库.
.使用XML小服务程序配置文件配置小.
.控制bean定制器的技巧.
.用UltraEdit打造自己的Java IDE.
.Java程序员就业前景.
.Hibernate访问多个数据库.
.Add 方法 (Dictionary).

基于java servlet技术的留言簿

发表日期:2008-1-5 |



  http://www.Linuxforum.net 作者 dream_bird@163.net

这几天整理我机器中的旧文档时,发现了一个不错的基于Java servlet技术的留言簿,好象是几个月前我从 http://go.163.com/~netjava/ 找到的,后台数据库用的是SQL Server。现在我的Redhat 6.1上正好安装了Apache Jserv 1.1、GNUjsp 1.0、mysql(包括mm.mysql的JDBC驱动),除此之外还有Tomcat 3.1和Cocoon 1.8。当然,一般只运行Jserv + GNUJSP + Cocoon + MySQL,Tomcat是不运行的。既然环境是现成的,为什么不把这个留言簿改改让它可以运行呢?

首先改造它的源代码,把JDBC 驱动和URL改成MySQL的。GuestBookServlet.java程序代码如下:

//javac -encoding iso8859_1 GuestBookServlet.java ( for Chinese gb2312 )
//javac GuestBookServlet.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.text.DateFormat;
import java.util.Locale;

public class GuestBookServlet extends HttpServlet {
    public void init(ServletConfig conf) throws ServletException {

     super.init(conf);

        try {
            Class.forName("org.gjt.mm.mysql.Driver");
        }
        catch( Exception e ) {
        }
    }
//Sign guestbook
    public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        String url = "jdbc:mysql://localhost.localdomain:3306/GuestBook?user=guest&passWord=password";
        ServletOutputStream out = res.getOutputStream();
        java.util.Date date = new java.util.Date();
        String name, email, comment;
        Connection conn = null;
        Exception err = null;
        int id = -1;
        String[] tmp;
//init

//accept name 
        tmp = req.getParameterValues("name");
        if( tmp == null  tmp.length != 1 ) {
            name = null;
        }
        else {
            name = tmp[0];
        }
//accept email  
        tmp = req.getParameterValues("email");
        if( tmp == null  tmp.length != 1 ) {
            email = null;
        }
        else {
            email = tmp[0];
        }
//accept comments       
        tmp = req.getParameterValues("comments");
        if( tmp == null  tmp.length != 1 ) {
            comment = null;
        }
        else {
            comment = tmp[0];
        }
  //header
        res.setContentType("text/Html");
        printPageHeader(out);
        if( name.length() < 1 ) {
            out.println("You must specify a valid name!");
            printCommentForm(out);
            printPageFooter(out);
            return;
        }
        if( email.length() < 3 ) {
            out.println("You must specify a valid email address!");
            printCommentForm(out);
            printPageFooter(out);
            return;
        }
        if( email.indexOf("@") < 1 ) {
            out.println("You must specify a valid email address!");
            printCommentForm(out);
            printPageFooter(out);
            return;
        }
        if( comment.length() < 1 ) {
            out.println("You left no comments!");
            printCommentForm(out);
            printPageFooter(out);
            return;
        }
        //Access to MySQL
        try {
            Statement statement;
            ResultSet result;
            
            conn = DriverManager.getConnection(url);
            statement = conn.createStatement();
            result = statement.executeQuery("SELECT next_id " +
                                            "FROM sys_gen " +
                                            "WHERE id = ´comment_id´");
            if( !result.next() ) {
                throw new java.sql.SQLException("Failed to generate id.");
            }
            id = result.getInt(1) + 1;
            result.close();
            statement.close();
            statement = conn.createStatement();
            statement.executeUpdate("UPDATE sys_gen SET next_id = " + id +
                                    " WHERE id = ´comment_id´");
            statement.close();
            statement = conn.createStatement();
            comment = fixComment(comment);
            statement.executeUpdate("INSERT into comments " +
                                    "(comment_id, email, name, comment, " +
                                    "cmt_date) "+
                                    "VALUES (" + id +", ´" + email +
                                    "´, ´" + name + "´, ´" +
                                    comment + "´, ´" + date.getTime() +
                                    "´)");
            statement.close();
        }
        catch( java.sql.SQLException e ) {
            e.printStackTrace();
            err = e;
        }
        finally {
            if( conn != null ) {
                try { conn.close(); }
                catch( Exception e ) { }
            }
        }
        if( err != null ) {
            out.println("An error occurred on save: " + err.getMessage());
        }
        else {
            printCommentForm(out);
            printComments(out);
        }
    }
    
    
//browser  the guestbook
    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        String url = "jdbc:mysql://localhost.localdomain:3306/GusetBook?user=guest&password=password";
        ServletOutputStream out = res.getOutputStream();
        Connection conn = null;
        int id = -1;
        Exception err = null;

        res.setContentType("text/html");
        printPageHeader(out);
        printCommentForm(out);
        printComments(out);
        printPageFooter(out);
    }

    public String getServletInfo() {
        return "Guest Book Servlet v1.0 Copyright 251 2000 meng_bo";
    }

    private void printCommentForm(ServletOutputStream out)
    throws IOException {
        out.println("
");
        out.println("");
        out.println("");
        out.println("");
        out.println(" Name: ");
        out.println(" ");
        out.println(" ");
        out.println("
");
        out.println("");
        out.println(" Email: ");
        out.println(" ");
        out.println("
");
        out.println("");
        out.println(" Comments: ");
        out.println("
");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println(" ");
        out.println("");
        out.println("
");
    }

    private void printComments(ServletOutputStream out)
    throws IOException {
        Connection conn = null;
        
        try {
            DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL,
                                                        Locale.getDefault());
            String url = "jdbc:mysql://localhost.localdomain:3306/GuestBook?user=guest&password=password";
            Statement stmt;
            ResultSet results;
            
            conn = DriverManager.getConnection(url);
            stmt = conn.createStatement();
            results = stmt.executeQuery("SELECT name, email, cmt_date, " +
                                        "comment, comment_id " +
                                        "FROM comments " +
                                        "ORDER BY cmt_date");
            out.println("
");
            while( results.next() ) {
                String name, email, cmt;
                java.util.Date date;

                name = results.getString(1);
                if( results.wasNull() ) {
                    name = "Unknown User";
                }
                email = results.getString(2);
                if( results.wasNull() ) {
                    email = "user@host";
                }
                date = results.getDate(3);
                if( results.wasNull() ) {
                    date = new java.util.Date();
                }
                cmt = results.getString(4);
                if( results.wasNull() ) {
                    cmt = "No comment.";
                }
                out.println("
" + name + " (" + email + ") on " +
                            fmt.format(date));
                cmt = noHTML(cmt);
                out.println("
 
" + cmt + "
");
            }
            out.println("
");
        }
        catch( SQLException e ) {
            out.println("A database error occurred: " + e.getMessage());
        }
        if( conn != null ) {
            try { conn.close(); }
            catch( Exception e ) { }
        }
    }
    
    private void printPageHeader(ServletOutputStream out)
    throws IOException {
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("");
        out.println("
Guest Book
");
    }

    private void printPageFooter(ServletOutputStream out)
    throws IOException {
        out.println("");
        out.println("");
        out.flush();
    }

    private String noHTML(String cmt) {
        if( cmt.indexOf("<") != -1  cmt.indexOf(">") != -1 ) {
            String tmp = "";

            for(int i=0; i                char c = cmt.charAt(i);

                if( c == ´<´ ) {
                    tmp = tmp + "<";
                }
                else if( c == ´>´ ) {
                    tmp = tmp + ">";
                }
                else {
                    tmp = tmp + c;
                }
            }
            cmt = tmp;
        }
        return cmt;
    }

    private String fixComment(String comment) {
        if( comment.indexOf("´") != -1 ) {
            String tmp = "";
            
            for(int i=0; i                char c = comment.charAt(i);
                
                if( c == ´´´ ) {
                    tmp = tmp + "\´";
                }
                else {
                    tmp = tmp + c;
                }
            }
            comment = tmp;
        }
        return comment;
    }
}

对于该程序所要使用的数据库和表,我写了如下三个脚本:

1. create_database.sql

create database GuestBook;
grant select,insert,update,delete,create,drop
on GuestBook.*
to guest@localhost.localdomain
identified by ´password´;

2. create_tables.sql

use GuestBook;
create table sys_gen(
next_id int(8) not null,
id char(10) not null);

insert into sys_gen (next_id, id) values (0, ´comment_id´);

create table comments(
comment_id int(8) not null,
email varchar(64),
name varchar(32),
comment varchar(128),
cmt_date date default ´0000-00-00´ not null);

3. install.sh

#/bin/sh

mysql --user=root --host=localhost.localdomain --password=password < create_database.sql
mysql --user=guest --host=localhost.localdomain --password=password < create_tables.sql

有了这些代码,一切就再明白不过了吧。这里还需要注重的是“<”和“>”在HTML文件中会出问题,所以谁要把这篇文档转换成HTML文件时一定要注重。
上一篇:基于Java&XML技术构建植物病虫害远程诊断系统 人气:595
下一篇:基础篇:循环 人气:424
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成