CSDN博客

img gbopeng

一个文件留言本代码分析

发表于2004/10/25 16:40:00  1615人阅读

分类: jsp

一个文件留言本代码分析


    做为一个网站与网友交流的方式,留言本无疑是最好的选择。这里,为大家介绍一个用文件系统组件实现的留言本实例。这个留言本包括四个文件。留言本填写页面——gform.html 留言本处理脚本——gform.jsp 留言本显示页面——gbook.jsp 还有一个自动生成的文本文件——gbook.txt。
  • 留言本填写页面——gform.html
        这是一个简单的HTML文件,它让读者填写留言并把内容传递给gform.jsp来处理。它HTML源代码如下:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    <title>329studio的留言表单</title>
    </head>
    <body BACKGROUND="b01.jpg">
    <table BORDER="1" CELLSPACING="0" CELLPADDING="4" WIDTH="100%" BGCOLOR="#D0D0EC">
    <tr>
    <td ALIGN="CENTER"><font SIZE="+2" COLOR="#000080"><b>329studio的留言表单</b></font></td>
    </tr>
    </table>
    <form Action="gform.jsp" Method="POST">
    <table BORDER="1" WIDTH="100%">
    <tr>
    <td><font COLOR="#000080">姓名:</font></td>
    <td><input TYPE="TEXT" NAME="Name" SIZE="20"></td>
    </tr>
    <tr>
    <td><font COLOR="#000080">Email:</font></td>
    <td><input TYPE="TEXT" NAME="Email" SIZE="40"></td>
    </tr>
    <tr>
    <td><font COLOR="#000080">主题:</font></td>
    <td><input TYPE="TEXT" NAME="Subject" SIZE="60"></td>
    </tr>
    <tr>
    <td VALIGN="TOP"><font COLOR="#000080">留言:</font> </td>
    <td><textarea NAME="Memo" ROWS="6" COLS="60"></textarea></td>
    </tr>
    </table>
    <div align="center"><center><table WIDTH="100%">
    <tr ALIGN="CENTER">
    <td><input TYPE="Submit" NAME="SEND" VALUE="提交留言"></td>
    <td><a HREF="gbook.jsp">浏览留言</a></td>
    <td><input TYPE="RESET" VALUE="清除重写"></td>
    </tr>
    </table>
    </center></div>
    </form>
    </body>
    </html> 
  • 留言处理脚本——gform.jsp
        这个脚本的工作流程如下:接受gform.html提交的数据,先判断它是否合法,如果合法,把它转化化成需要的形式,然后保存在文本文件gbook.txt中,最后重定向到gbook.jsp,显示所有的留言,如果不合法则给出错误提示。代码如下:
      
    <%@page contentType="text/html"%>
    <%@page language="java"%>
    <%@page import="java.io.*"%>
    <%@page import="java.util.*"%>
    <%@page import="java.text.*"%>

    <%!
    // 解决中文显示问题
    public String getStr(String str)
    {
    try
    {
    String temp_p = str;
    byte[] temp_t = temp_p.getBytes("ISO8859_1");
    String temp =new String(temp_t);
    return temp;
    }
    catch(Exception e)
    {
    }
    return "空";
    }
    %>

    <%

    String Name;
    String Email;
    String Subject;
    String Memo;

    // 读取各输入框的数据

    Name = request.getParameter("Name");
    Email = request.getParameter("Email");
    Subject = request.getParameter("Subject");
    Memo = request.getParameter("Memo");

    Name.trim();
    Email.trim();
    Subject.trim();
    Memo.trim();

    // 检查各输入框是否输入有数据
    if((Name.length() == 0)||(Email.length() == 0)||(Subject.length() == 0)||(Memo.length() == 0))
    {
    out.println("输入框不能为空白!");
    out.println("<br>"); 
    out.println("<a href=gform.html>返回</a>");
    //不再处理以下的程序
    return;
    }
    // 第一行包含"姓名"与"Email"
    String Line1;
    Line1 = "留言人:" + Name;
    Line1 = Line1 + " "; // 插入5个汉字空格
    Email = "<A HREF=mailto:" + Email + ">" + Email + "</A>";
    Line1 = Line1 + "Email" + Email + "<BR>";

    // 第二行
    String Line2;
    Line2 = "主 题:" + Subject + "<BR>";

    // 第三行为"留言",先将留言中/n转换成为回车<br>
    String makeContent=new String();
    StringTokenizer strToken=new StringTokenizer(Memo,"/n");
    while(strToken.hasMoreTokens()){
    makeContent=makeContent+"<br>"+strToken.nextToken();
    }

    Memo=makeContent;
    // 为了显示不同的背景颜色,采用表格输出
    String Line3;
    Line3 = "<TABLE BORDER=0 BGCOLOR=#00FFFF><TR><TD>";
    Line3 = Line3 + Memo + "</TD></TR></TABLE>";

    // 第四行为留言时间
    String Line4;
    Date currTime = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd a hh:mm:ss",Locale.US);
    Line4 = "时 间:" + formatter.format(currTime);
    %>

    <%
    // 把留言内容写入文件

    // 首先建立FileWriter实例
    try{
    String path = "c://tomcat/webapps/myweb/gbook.txt";
    FileWriter file = new FileWriter(path,true);
    PrintWriter pwout = new PrintWriter(file);

    // 写入访问者留言
    pwout.println(getStr(Line1));
    pwout.println(getStr(Line2));
    pwout.println(getStr(Line3));
    pwout.println(getStr(Line4));

    pwout.println("<HR>");

    pwout.close();
    }

    catch(IOException e){
    out.println(e.toString());
    }

    // 将网页重定向到"浏览留言"的网页gbook.jsp
    response.sendRedirect("http://127.0.0.1:8080/myweb/gbook.jsp");
    %>
  • 留言本显示页面——gbook.jsp
      它用来显示所有留言,这里我们采用了文件包含语句,使得显示留言变得异常简单,它其实得益于gform.jsp 对留言的处理结果,这种处理把格式页面写入了gbook.txt文件中,这样在gbook.jsp中就不需要设置格式。代码如下:

    <%
    response.setHeader("Cache-Control","no-store");
    response.setHeader("Pragma","no-cache");
    response.setDateHeader("Expires",0);
    %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    <title>329studio的访问者留言簿</title>
    </head>
    <body TEXT="#000000" BGCOLOR="#FFFFFF" BACKGROUND="b01.jpg">
    <h2 ALIGN="CENTER">329studio的访问者留言簿</h2>
    <hr WIDTH="100%">
    <%@ include file="/gbook.txt" %>
    <a HREF="gform.html">
    <p align="center">返回留言表单</a></p>
    </body>
    </html>

 
阅读全文
0 0

相关文章推荐

img
取 消
img