微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一个jsp+AJAX评论系统第1/2页

这是一个简单的评论系统,使用了JDOM(这边使用Jdom-b9),实例使用JSP作为视图,结合使用AJAX(用到prototype-1.4),Servlet和JavaBean作为后台处理,使用xml文件存储数据。

1.应用目录结构如下:

data

  |--comment.xml

js

  |--prototype.js

  |--ufo.js(UTF-8格式)                                                                     

css

  |--ufo.css

images

  |--loading.gif

ufo.jsp(UTF-8格式)

WEB-INF

  |-lib

      |-jdom.jar    

  |-classes

     ...

  |-web.xml

/*********************************************

*Author:Java619

*Time:2007-02-14

**********************************************/

2.后台JavaBean  CommentBean.java

/** *//**

 * 外星人是否存在评论系统

 * @author ceun

 * 联系作者:

 *    ceun

 * @version 1.0 2007-01-30 实现基本功能

 * CommentBean.java

 * Created on Jan 30, 2007 9:39:19 AM

 */

package com.ceun.bean;

import java.io.FileWriter;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Random;

import org.jdom.CDATA;

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.JDOMException;

import org.jdom.Text;

import org.jdom.input.SAXBuilder;

import org.jdom.output.XMLOutputter;

/** *//**

 * 封装对XML的操作

 * @author ceun

 * 联系作者:

 *    ceun

 * @version 1.0 2007-01-30 实现基本功能

 */

public class CommentBean ...{

    private String filepath;

    private SAXBuilder builder = null;

    private Document doc = null;

    public CommentBean() ...{

    }

/** *//**

 * 初始化XML文件路径,加载文件

 * */

    public CommentBean(String path) ...{

        this.filepath = path;

        builder = new SAXBuilder();

        try ...{

            doc = builder.build(filepath);

        } catch (JDOMException e) ...{

            System.out.print("找不到指定的XML文件");

            e.printstacktrace();

        } catch (IOException e) ...{

            System.out.print("找不到指定的文件");

            e.printstacktrace();

        }

    }

 /** *//**

  * 添加评论

  * @param nikename 评论者昵称

  * @param comment 评论内容

  * @param attitude 评论者的结论(yes-存在,no-不存在)

  * */

    public String addComment(String nikename, String comment, String attitude) ...{

        Element root = doc.getRootElement();

        Element el = new Element("comment");

        Random rand = new Random();

        int id = rand.nextInt(10000);

        el.setAttribute("id", "comment_" + id);

        el.setAttribute("attitude", attitude);

        Element name = new Element("nikename");

        CDATA cname = new CDATA(nikename);

        name.addContent(cname);

        Element data = new Element("data");

        CDATA ctext = new CDATA(comment);

        data.addContent(ctext);

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date date = new Date();

        Text tdate = new Text(format.format(date));

        Element pubdate = new Element("pubdate");

        pubdate.addContent(tdate);

        el.addContent(name);

        el.addContent(data);

        el.addContent(pubdate);

        root.addContent(el);

        XMLOutputter outputter = new XMLOutputter("  ", true, "GB2312");

        // 清除comment元素间的空格

        outputter.setTrimAllWhite(true);

        try ...{

            outputter.output(doc, new FileWriter(filepath));

        } catch (IOException e) ...{

            System.out.println("指定路径有错");

            e.printstacktrace();

        }

        return tdate.getText();

    }

/** *//**

 * 删除指定ID的评论

 * @param commentId 评论ID

 * @return 返回操作结果字符串(成功或失败)

 * */

    public String removeComment(String commentId) ...{

        Element root = doc.getRootElement();

        List comments = root.getChildren();

        int size = comments.size();

        Element dist = null;

        for (int i = 0; i             Element comment = (Element) comments.get(i);

            String id = comment.getAttributeValue("id");

            if (id.equals(commentId)) ...{

                dist = comment;

                break;

            }

        }

        if (dist != null) ...{

            root.removeContent(dist);

            XMLOutputter outputter = new XMLOutputter("  ", true, "GB2312");

            // 清除comment元素间的空格

            outputter.setTrimAllWhite(true);

            try ...{

                outputter.output(doc, new FileWriter(filepath));

            } catch (IOException e) ...{

                System.out.println("重写文件有出错");

                e.printstacktrace();

            }

            return "成功删除指定元素!";

        } else

            return "指定元素不存在!";

    }

/** *//**

 * 批量删除评论

 * @param commentIdArgs 评论ID数组

 * @return 返回操作结果字符串(成功或失败)

 * */

    public String removeComments(String[] commentIdArgs) ...{

        Element root = doc.getRootElement();

        List comments = root.getChildren();

        int size = comments.size();

        int len = commentIdArgs.length;

        List dist = new ArrayList();

        outer:for (int i = 0; i             Element comment = (Element) comments.get(i);

            String id = comment.getAttributeValue("id");

            for (int j = 0; j                 if (id.equals(commentIdArgs[j])) ...{

                    dist.add(comment);

                    continue outer;

                }

        }

        int dist_size=dist.size();

        if (dist_size != 0) ...{

            for (int i = 0; i                 root.removeContent(dist.get(i));

            XMLOutputter outputter = new XMLOutputter("  ", true, "GB2312");

            // 清除comment元素间的空格

            outputter.setTrimAllWhite(true);

            try ...{

                outputter.output(doc, new FileWriter(filepath));

            } catch (IOException e) ...{

                System.out.println("重写文件有出错");

                e.printstacktrace();

            }

            return "成功删除指定的元素集合!";

        } else

            return "指定元素集合的不存在!";

    }

    /** *//**

     * @return the filepath

     */

    public String getFilepath() ...{

        return filepath;

    }

    /** *//**

     * @param filepath

     *            the filepath to set

     */

    public void setFilepath(String filepath) ...{

        this.filepath = filepath;

    }

    /** *//**

     * @return the builder

     */

    public SAXBuilder getBuilder() ...{

        return builder;

    }

    /** *//**

     * @param builder

     *            the builder to set

     */

    public void setBuilder(SAXBuilder builder) ...{

        this.builder = builder;

    }

}

3.处理AJAX请求的Servlet  AddCommentServlet.java

package com.ceun.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.servletexception;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.ceun.bean.CommentBean;

/** *//**

 * 后台处理Servlet

 *2007-01-30

 * * @author ceun

 * 联系作者:

 *    ceun

 * @version 1.0 2007-01-30 实现基本功能

 * */

public class AddCommentServlet extends HttpServlet ...{

    /** *//**

     * serialVersionUID long

     */

    private static final long serialVersionUID = 1L;

    /** *//**

     * The doGet method of the servlet. 

     * 

     * This method is called when a form has its tag value method equals to get.

     * 

     * @param request

     *            the request send by the client to the server

     * @param response

     *            the response send by the server to the client

     * @throws servletexception

     *             if an error occurred

     * @throws IOException

     *             if an error occurred

     */

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws servletexception, IOException ...{

        request.setCharacterEncoding("UTF-8");

        response.setContentType("text/html;charset=UTF-8");

        response.setHeader("Cache-Control", "no-cache");

        PrintWriter out = response.getWriter();

        String nikename = request.getParameter("nn");

        String comment = request.getParameter("rsn");

        String attitude = request.getParameter("atti");

        String filepath = request.getSession().getServletContext().getRealPath(

                "data/comment.xml");

        CommentBean bean = new CommentBean(filepath);

        String str = bean.addComment(nikename, comment, attitude);

        out.println(str);

    }

    /** *//**

     * The doPost method of the servlet. 

     * 

     * This method is called when a form has its tag value method equals to

     * post.

     * 

     * @param request

     *            the request send by the client to the server

     * @param response

     *            the response send by the server to the client

     * @throws servletexception

     *             if an error occurred

     * @throws IOException

     *             if an error occurred

     */

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws servletexception, IOException ...{

        doGet(request, response);

    }

}

12下一页阅读全文

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐