php ajax评论系统,一个jsp+AJAX评论系统

这是一个使用JSP、AJAX、Servlet和JavaBean的简单评论系统,通过XML存储数据。用户通过AJAX提交评论,后台通过Servlet处理并更新XML文件,实现了无刷新的评论添加和删除功能。
摘要由CSDN通过智能技术生成

一个jsp+AJAX评论系统

发布时间:2016-09-14 来源: 点击:

这是一个简单的评论系统,使用了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);

}

}

当前1/2页 12下一页阅读全文

这就是微学网-程序员之家为你提供的"一个jsp+AJAX评论系统"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/5224.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值