前几天想好基本框架,今天“形势与政治”课上把类的结构写好了。相信几天之内就可以做出。我先写JSP版本的,然后再写PHP版本。因为JSP代码相对PHP代码更好控制。
我将尽量把该留言本做得结构简单,开放,容易复用。然后别人通过使用CSS生成不同的版本。我希望它成为最流行的留言本,无论是用来学习JSP/PHP还是实际应用。
一条留言的结构是这样:
Message: int id; int status;//我定义status越大,权限越开放。 String time; String ip; String name; String address; String msg; String reply;
留言本的使用者有游客(Visitor)和管理员(Admin),游客的方法有:
Visitor: Message read(int id); Message[] read(int from, int size); int write(Message msg);
管理员的方法有:
Admin: Message read(int id); Message[] read(int from, int size); int write(Message msg); int delete(int id); int delete(int[] ids); int reply(int id, String reply);
虽然Visitor和Admin的方法有重复,不过我还是将它们分得很清晰。如果Admin想管理,那么他就应该到后台。只要在前台,所有人都是Visitor,而不是生成Visitor的前台和Admin的前台。
Visitor和Admin不直接运行SQL语句,而是调用一个DatabaseManager的方法。
DatabaseManager: Message getMsg(int id); Message[] getMsgArray(int from, int size, int minstatus);//这里的status是一个下界 int getMsgCount(int minstatus); boolean saveMsg(Message msg); boolean addReply(String reply); boolean deleteMsg(int id); int deleteMsgOf(int[] ids); void close();
每使用DatabaseManager一次,用户必须手动运行close()。这样做而不是在getMsgArray()中关闭数据库的连接是因为创建连接的花销非常大。
还将建立一个Authority类进行权限管理,目前所知,这个类的功能将很简单,就是基于IP的anti spam。
Authority: int getReadMod(String ip); int getWriteMod(String ip);
到这里,一个留言本已经能工作了。为了处理格式化文本和防止恶意留言,增加两个类MsgFilter和MsgFormater。
MsgFilter: String filterName(String name); String filterAddress(String addr) String filterMsg(String msg); String filterReply(String reply); String filter(String text);//如果是恶意内容,返回null MsgFormater: String formatMsg(String msg); String formatReply(String reply);
因为留言的保存是间歇性的,所以即使我们把MsgFilter和MsgFormater写得复杂也不会影响速度。保存在数据库中的内容都是格式化好的HTML代码,所以浏览留言的速度应该非常快。
2006-05-13,以后将补充。
2006-05-15,已经写好,剩下的只有排版了。
2006-05-17,已经在 http://www.ideawu.net/person/ideabook/ 测试!