jdom+JSP+XML 留言板

 

留言板要達到的目的是與用戶交流互動。針對用戶提出的具體問題,進行回覆。其中功能主要包括幾個方面:顯示留言、用戶留言、回覆留言、對留言進行管理。

 1顯示留言

用戶可以瀏覽全部留言,並可以根據留言內容查找留言。但普通用戶不能回覆留言。

2 用戶留言

主要實現記錄用戶留言主題、留言內容、用戶信息(包括用戶名、電話、郵箱等)、留言時間。

 3回覆留言

實現管理員根據某一留言內容進行回覆,記錄回覆時間。同時使某一留言的回覆內容在顯示留言頁面顯示出來。

 4 管理留言

實現對留言內容進行管理。包括對留言的刪除,查看留言者信息。

 5留言板的分頁

由於留言板在使用過程中,如果留言的數量衆多,用戶在瀏覽留言時不可能一次顯示全部留言。這就要求留言板具備分頁顯示的功能,根據留言時間進行倒排序,每頁顯示一定數量的留言,用戶可以在頁面間進行導航,以瀏覽全部留言。

 

留言板運行環境

文件存儲數據:XML。

服務器端編程工具:JSP,JAVA。

開發平臺及插件:eclipse3.0 + lomboz_3.0.1 + jdom-1.0。

 

因爲代碼中有圖片的插入,所以運行起來,你會知道有很多XX,呵呵不好意思啊!~!

 其中有兩個Bean如下:

AddMessage.java中是發表留言的getter和setter方法


public class AddMessage {

    String manager;
    String email;
    String phone;
    String title;
    String information;
   

    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getInformation() {
        return information;
    }
    public void setInformation(String information) {
        this.information = information;
    }
    public String getManager() {
        return manager;
    }
    public void setManager(String manager) {
        this.manager = manager;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
   
    public static void main(String[] args) {
    }
}




RevertMessage.java中是回覆留言的getter和setter方法


public class RevertMessage {

    String username;
    String message;
   
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
   
    public static void main(String[] args) {
    }
}



 

login.jsp

主要功能:登陸界面
<%@ page language="java" %>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>JSP + XML 留言板</title>
</head>
<body bgcolor="#FFFFFF" background="images/bg.gif">


<script language="javascript">
    ourmove();
    function manage()...{
        var hdc = window.open('Login_M.jsp','','width=342,height=230');
        width = screen.width;
        height = screen.height;
        hdc.moveTo((width-342)/2,(height-230)/2);
    }
</script>

 

<center>
    <strong>JSP + XML 留言板</strong><br><br>
    <table>
        <tr>
            <td><a onClick="manage()">管理員登陸</a>&nbsp;&nbsp;&nbsp;&nbsp;</td>
            <td><a href="main.jsp?Page=1">用戶進入</a></td>
        </tr>
    </table>
    <br>
    <hr>
    <img src="images/inn.gif"></img><br><br><br>
    常聯繫--常寒暄--常問候   
</center>

</body>
</html>

 

 


Login_M.jsp

主要功能:登陸驗證,用戶名:sun密碼:sun因爲我姓孫嘛呵呵,見笑了~!~

<%@ page language="java" contentType="text/html;charset=gb2312" import="java.sql.*"%>

<script language="javascript">
    function mycheck(myform)...{
        if (myform.Manager.value=="")...{
            alert("請輸入管理員!");
            myform.Manager.focus();
            return;
        }
        if(myform.PWD.value=="")...{
            alert("請輸入密碼!");
            myform.PWD.focus();
            return;
        }
        if(myform.Manager.value!="sun")...{
            alert("用戶名錯誤!");
            myform.Manager.focus();
            return;
        }
        if(myform.PWD.value!="sun")...{
            alert("密碼錯誤!");
            myform.PWD.focus();
            return;
        }
        if(myform.Manager.value=="sun" || myform.PWD.value=="sun")...{
            alert("登陸成功!");
<%
            session.setAttribute("admin","true");
%>
            opener.location.href="main.jsp?Page=1";
            self.close();
            return;
        }
        myform.submit();
    }
</script>

<html>
<head>
<title>管理員登陸</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="Css/style.css" rel="stylesheet">
</head>

<body>
<table width="322" height="206"  border="0" cellpadding="-2" cellspacing="-2">
  <tr>
    <td height="153" valign="top" background="images/Login_M_Top.gif"><table width="100%" height="153"  border="0" cellpadding="-2" cellspacing="-2">
      <tr>
        <td>
        <form method="post" action="" name="myform">
          <table width="100%"  border="0" cellspacing="-2" cellpadding="-2">
            <tr>
              <td width="20" height="65">&nbsp;</td>
              <td width="82">&nbsp;</td>
              <td width="200">&nbsp;</td>
              <td width="20">&nbsp;</td>
            </tr>
            <tr>
              <td height="34">&nbsp;</td>
              <td align="center" class="word">&nbsp;&nbsp;管理員:</td>
              <td><input name="Manager" type="text" class="txt_grey" id="Manager3"onKeyDown="if(event.keyCode==13) myform.PWD.focus();" maxlength="20"></td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td height="34">&nbsp;</td>
              <td align="center" class="word">&nbsp;&nbsp;密&nbsp;&nbsp;碼:</td>
              <td><input name="PWD" type="password" class="txt_grey" id="PWD" onKeyDown="if(event.keyCode==13) mycheck(myform)" maxlength="20"></td>
              <td>&nbsp;</td>
            </tr>
          </table>
       
        </form></td>
      </tr>
    </table>
    </td>
  </tr>
  <tr>
    <td><img src="images/Login_M_bottom.gif" width="322" height="53" border="0" usemap="#Map"></td>
  </tr>
</table>
<map name="Map">
  <area shape="rect" coords="164,8,246,26" href="#" onClick="window.close();">
  <area shape="rect" coords="76,8,158,26" href="#" onClick="mycheck(myform)">
</map>
</body>
</html>

 

 

main.jsp中

主要功能:實現分頁和顯示XML中數據

<%@page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*,java.io.*"%>

<%
    request.setCharacterEncoding("gb2312");
    String admin = (String)session.getAttribute("admin");
    boolean login = false;
    if(admin != null && admin.equals("true"))...{
        login = true;
    }
%>

<%
    String file = "E:/message.xml";
    StringBuffer s = new StringBuffer();//保存HTML格式
   
    int P1=1,P2=1;
    int Page;
    int i=0,num=0,PageSize=3,totalPage=1;
    String strPage = request.getParameter("Page");
    int intPage = Integer.parseInt(strPage);
   
    if(strPage == null || strPage.equals(""))...{
        Page = 1;
    }else...{
        Page = intPage;
        if(intPage <= 1)...{
            Page = 1;
        }
    }
   
    try...{
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(new FileInputStream(file));
        Element root = doc.getRootElement();
        List list = root.getChildren();
       
        int totalRecords = list.size();
        totalPage = totalRecords % PageSize == 0 ? totalRecords / PageSize : totalRecords / PageSize + 1;
        if(intPage<=1) P1 = 1;
        else P1 = Page - 1;
       
        if(intPage>=totalPage) P2 = totalPage;
        else P2 = Page + 1;
       
        if(intPage>=totalPage)...{
            Page = totalPage;
            num = totalRecords - (Page-1) * PageSize;
            i = (Page-1) * PageSize + num - 1;
        }
        else...{
            i = (Page-1) * PageSize + 2;
        }    //xml文檔的最後一條記錄會被顯示爲留言板的第一條記錄
       
        for(;i>=(intPage-1) * PageSize; i--)...{
            Element info = (Element)list.get(i);
           
            String strLogin = "";
            if(login)...{
                strLogin = "<a href='revertMessage.jsp?num=" + i + "'>回覆</a>&nbsp;&nbsp;<a align=right href='delete.jsp?num=" + i + "'>刪除</a>";
            }
            s.append("<table  bgcolor=#F0F8E1 align='center' width='700px' height='200px' cellspacing='1' cellpadding='1'>");
            s.append("<tr><td bgcolor=#CCCCCC> 發言者:" + info.getChildText("manager") + "</td><td bgcolor=#CCCCCC>Email:" + info.getChildText("email") + "</td></tr>");
            s.append("<tr><td bgcolor=#CCCCCC>發表時間:" + info.getChildText("date") + "</td><td bgcolor=#CCCCCC>電話:" + info.getChildText("phone")+ "</td></tr>");
            s.append("<tr><td colspan=2 bgcolor=#CCCCCC>主題:" + info.getChildText("title") + "</td></tr>");
            s.append("<tr><td colspan=2>信息內容:" + info.getChildText("information") + "</td></tr>");
            s.append("<tr><td colspan=2 bgcolor=#E0DFE3>回覆人:" + info.getChildText("username") + "</td></tr>");
            s.append("<tr><td colspan=2>回覆內容:" + info.getChildText("message") + "</td></tr>");
            s.append("<tr><td colspan=2 align=center><a href='addWindow.jsp'>留言</a>&nbsp;&nbsp;" + strLogin+ "</form></td></tr></table><br>");
           
        }
    }catch(Exception e)...{
        e.printStackTrace();
    }
%>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>系統留言板</title>
</head>
<body background="images/bg.gif">

<div align="center" valign="top">
    <br>
    <%=s%>

</div>
<div align="center">
    第<%=Page %>頁
    &nbsp;<a href="main.jsp?Page=<%=P1%>">上一頁</a>
    &nbsp;<a href="main.jsp?Page=<%=P2%>">下一頁</a>
    &nbsp;共<%=totalPage%>頁
</div>

  
</body>
</html>
 

 

 

 

addWindow.xml中

主要功能:插入數據的界面

 

<%@page language="java" contentType="text/html;charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>發表留言</title>
</head>
<body bgcolor="#FFFFFF">

<script language="JavaScript">
    function check()...{
        var manager = document.form1.manager.value;
        var email = document.form1.email.value;
        var phone = document.form1.phone.value;
        var title = document.form1.title.value;
        var infomation = document.form1.information.value;
       
        if(manager=="")...{
            alert("用戶名不能爲空!");
            document.form1.manager.focus();
            return false;
        }
        if(email=="")...{
            alert("Email不能爲空!");
            document.form1.email.focus();
            return false;
        }
        if(phone=="")...{
            alert("電話不能爲空!");
            document.form1.phone.focus();
            return false;
        }
        if(title=="")...{
            alert("標題不能爲空!");
            document.form1.title.focus();
            return false;
        }
        if(information=="")...{
            alert("留言內容不能爲空!");
            document.form1.information.focus();
            return false;
        }
        return true;
       
        alert("留言發表成功!");
    }
</script>

<%
    request.setCharacterEncoding("gb2312");
    String manager = request.getParameter("manager");
    String email = request.getParameter("eamil");
    String phone = request.getParameter("phone");
    String title = request.getParameter("title");
    String information = request.getParameter("information");
    if(manager == null)...{manager="";}
    if(email == null)...{email="";}
    if(phone == null)...{phone="";}
    if(title == null)...{title="";}
    if(information == null)...{information="";}
%>


<center>   
    <form action="addMessage.jsp" method="post" name="form1">
        <table align='center' width='700px' height='200px' cellspacing='0' cellpadding='1'>
            <tr>
                <td colspan=2 align=center>發表留言</td>
            </tr>
            <tr>
                <td colspan=2 align=right>請填寫留言信息</td>
            </tr>
            <tr>
                <td>發言者:</td>
                <td><input type="text" name="manager" size="40"></input>&nbsp;*</td>
            </tr>
            <tr>
                <td>Email:</td>
                <td><input type="text" name="email" size="40"></input>&nbsp;*</td>
            </tr>
            <tr>
                <td>電話:</td>
                <td><input type="text" name="phone" size="40"></input>&nbsp;*</td>
            </tr>
            <tr>
                <td>標題:</td>
                <td><input type="text" name="title" size="40"></input>&nbsp;*</td>
            </tr>
            <tr>
                <td>留言內容:</td>
                <td><textarea cols=60 rows=8 name="information" style="overflow:auto"></textarea></td>
            </tr>
            <tr>
                <td colspan=2 align=center><input type="submit" value="提交" οnclick="return check()">&nbsp;&nbsp;<input type="reset" value="重寫"></td>
            </tr>
        </table>
    </form>
</center>

</body>
</html>

 

 

 

addMessage.xml中

主要功能:插入數據

 

<%@page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*,java.io.*"%>
<%@page import="com.sun.AddMessage"%>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">

<%request.setCharacterEncoding("gb2312");%>
<jsp:useBean id="addMessage" scope="session" class="com.sun.AddMessage"  />
<jsp:setProperty name="addMessage" property="*"  />

<%
    request.setCharacterEncoding("gb2312");
    String file="E:/message.xml";
   
    String manager = addMessage.getManager();
    String email = addMessage.getEmail();
    String phone = addMessage.getPhone();
    String title = addMessage.getTitle();
    String information = addMessage.getInformation();
   
    try...{
        request.setCharacterEncoding("gb2312");
        //Date date = new Date();
        java.text.SimpleDateFormat DATE = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = DATE.format(new Date());
       
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(new FileInputStream(file));
        Element root = doc.getRootElement();
        List list = root.getChildren();
       
        Element newInfo = new Element("info");//新建一個二級結點
        Element Manager = new Element("manager");//新建該二級結點的子結點
        Element Email = new Element("email");
        Element Date = new Element("date");
        Element Phone = new Element("phone");
        Element Title = new Element("title");
        Element Infomation = new Element("information");
        Element Username = new Element("username");
        Element Message = new Element("message");
       
        newInfo.addContent(Manager);//將子結點添加到二級結點下
        newInfo.addContent(Email);
        newInfo.addContent(Date);
        newInfo.addContent(Phone);
        newInfo.addContent(Title);
        newInfo.addContent(Infomation);
        newInfo.addContent(Username);
        newInfo.addContent(Message);
       
        Manager.setText(manager);//設置該子結點的內容
        Email.setText(email);
        Date.setText(date.toString());
        Phone.setText(phone);
        Title.setText(title);
        Infomation.setText(information);
        Username.setText("admin");
        Message.setText("暫無回覆");
       
        list.add(newInfo);
       
        Format format = Format.getCompactFormat();
        format.setEncoding("gb2312");
        format.setIndent("    ");
       
        boolean newLines = true;//是否爲新的一行
        XMLOutputter outer = new XMLOutputter(format);
        outer.output(doc,new FileOutputStream(file));
       
        //String url = "1;url='view.jsp?Page=1'";
        //response.setHeader("refresh",url);
        response.sendRedirect("main.jsp?Page=3");
       
    }catch(Exception e)...{
        e.printStackTrace();
    }
%>

</body>
</html>
 

 

 

revertMessage.xml中

主要功能:回覆功能 

<%@page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*,java.io.*"%>

<script language="JavaScript">
    function check()...{
        var username = document.form1.username.value;
        var message = document.form1.message.value;
       
        if(username=="")...{
            alert("回覆人不能爲空!");
            document.form1.username.focus();
            return false;
        }
        if(message=="")...{
            alert("回覆內容不能爲空!");
            document.form1.message.focus();
            return false;
        }
        return true;
    }
</script>

<%
    String username = request.getParameter("username");
    String message = request.getParameter("message");
    if(username == null)...{username="";}
    if(message == null)...{message="";}
%>


<%
    request.setCharacterEncoding("gb2312");
    int num = Integer.parseInt(request.getParameter("num"));
    StringBuffer s = new StringBuffer();
   
    String file = "E:/message.xml";
   
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(new FileInputStream(file));
    Element root = doc.getRootElement();
    List list = root.getChildren();
   
    Element info = (Element)list.get(num);
   
    String manager = String.valueOf(info.getChildText("manager"));
    String title = String.valueOf(info.getChildText("title"));
    String date = String.valueOf(info.getChildText("date"));
    String information = String.valueOf(info.getChildText("information"));
   
    s.append("<form action='revertMessage_do.jsp?num=" + num + "' method='post' name='form1'>");
    s.append("<table align='center' width='700px' height='200px' cellspacing='0' cellpadding='1'><tr><td colspan=2 align=center>回覆信息</td></tr><tr><td>發言者:</td><td>" + manager + "</td></tr>");
    s.append("<tr><td>標題:</td><td>" + title + "</td></tr>");
    s.append("<tr><td>日期:</td><td>" + date + "</td></tr>");
    s.append("<tr><td>信息內容:</td><td>" + information + "</td></tr>");
    s.append("<tr><td colspan=2>&nbsp;</td></tr>");
    s.append("<tr><td>回覆人:</td><td><input type='text' name='username' size=40></input>&nbsp;*</td></tr>");
    s.append("<tr><td>回覆內容:</td><td><textarea name='message' rows='8' cols='60'></textarea></td></tr>");
    s.append("<tr><td colspan='2' align=center><input type='submit' value='提交' οnclick='return check()'>&nbsp;&nbsp;<input type='reset' value='重寫'></td></tr></table></form><br>");
   
%>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>回覆信息</title>
</head>
<body bgcolor="#FFFFFF">

<%=s%>

</body>
</html>
 

 

 

revertMessage_do.xml中

主要功能:實現回覆功能

 

<%@page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*,java.io.*"%>
<%@page import="com.sun.RevertMessage"%>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">

<%request.setCharacterEncoding("gb2312");%>
<jsp:useBean id="revert" scope="session" class="com.sun.RevertMessage"  />
<jsp:setProperty name="revert" property="*"  />

<%
    request.setCharacterEncoding("gb2312");
    int num = Integer.parseInt(request.getParameter("num"));
    String username = revert.getUsername();
    String message = revert.getMessage();
   
    StringBuffer s = new StringBuffer();
    String file = "E:/message.xml";
   
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(new FileInputStream(file));
    Element root = doc.getRootElement();
    List list = root.getChildren();
   
    Element info = (Element)list.get(num);//獲得欲修改的二級結點
   
    Element Message = info.getChild("message");
    Element Username = info.getChild("username");
   
    Message.setText(message);
    Username.setText(username);
   
    XMLOutputter outter = new XMLOutputter();
    outter.output(doc,new FileOutputStream(file));
   
    response.sendRedirect("main.jsp?Page=1");
%>

</body>
</html>
 

 

 

delete.xml中

主要功能:實現刪除信息功能

<%@page language="java" contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*,org.jdom.*,org.jdom.input.*,org.jdom.output.*,java.io.*"%>

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Lomboz JSP</title>
</head>
<body bgcolor="#FFFFFF">

<%
    request.setCharacterEncoding("gb2312");
    int num = Integer.parseInt(request.getParameter("num"));
   
    String file = "E:/message.xml";
   
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(new FileInputStream(file));
    Element root = doc.getRootElement();
    List list = root.getChildren();
   
    Element info = (Element)list.get(num);
   
    list.remove(num);
   
    XMLOutputter outter = new XMLOutputter();
    outter.output(doc,new FileOutputStream(file));
   
    response.sendRedirect("main.jsp?Page=3");
%>


</body>
</html>


這可是我辛辛苦苦做出來的,其實之中也有不少的借鑑,第一次做這種類型的項目,希望大家多多指點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章