在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这是一个简单的评论系统,使用了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 /** *//** * <P>外星人是否存在评论系统</p> * @author ceun * 联系作者:<br> * <a href="mailto:[email protected]">ceun</a><br> * @version 1.0 2007-01-30 实现基本功能<br> * 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; /** *//** *<p> 封装对XML的操作</p> * @author ceun * 联系作者:<br> * <a href="mailto:[email protected]">ceun</a><br> * @version 1.0 2007-01-30 实现基本功能<br> */ 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 < size; 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<Element> dist = new ArrayList<Element>(); outer:for (int i = 0; i < size; i++) ...{ Element comment = (Element) comments.get(i); String id = comment.getAttributeValue("id"); for (int j = 0; j < len; 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 < dist_size; 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; /** *//** * <p>后台处理Servlet</p> *2007-01-30 * * @author ceun * 联系作者:<br> * <a href="mailto:[email protected]">ceun</a><br> * @version 1.0 2007-01-30 实现基本功能<br> * */ public class AddCommentServlet extends HttpServlet ...{ /** *//** * serialVersionUID long */ private static final long serialVersionUID = 1L; /** *//** * The doGet method of the servlet. <br> * * 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. <br> * * 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); } } |
请发表评论