你是鬼,我很早就发现了,你不是鬼怎么那么晚睡觉那么早就起来了!!!!!
要解决你的问题,首先要从你的设计结构出发。
我不知道你的数据库中关于留言记录是怎么设定的。假设你的设计是这样:
用户表:USER
ID(用户编号) USERNAME(帐号-UNIQUE) PASSWORD(密码) TYPE(用户类型-有ROOT、USER和GUEST)
帖子表:MESSAGE
ID(帖子编号) TITLE(帖子标题) USER_ID(发帖者编号) CONTEXT(内容) DATE(日期)
评论表:COMMENT
ID(评论编号) MESSAGE_ID(帖子编号-表明这个评论是那个帖子的) USER_ID(发表评论的用户编号) CONTEXT(内容) DATE(日期)
好,现在我们开始编写程序
首先要定义USER类
public class User {
Integer id;
String username;
String password;
String type;
}
public class Root extends User{
}
public class Guest extends User{
}
public class Message {
Integer id;
String title;
Integer userId;
String context;
java.sql.Date date;
}
public class Comment {
Integer id;
Integer messageId;
Integer userId;
String context;
java.sql.Date date;
}
登录程序就不用再多说了,相信你也会写 ,但是关键的是如何把已经成功登录的用户信息保存到session中去。
比如说,我们有个用户成功登录了
在LoginAction类中:
//这里,UserDao就是操作数据库的相关类。这个叫DAO模式,对WEB+数据库编程非常有用,建议你去看看
User user = UserDao.get(loginForm().getUsername(),loginForm().getPassword());
//把成功登录的用户信息保存到session中的user属性去
if(user!=null) request.getSession().setAttribute("user",user);
下面再给出个ROOT成功登录的操作看看
User root = UserDao.get(loginForm().getUsername(),loginForm().getPassword(),loginForm().getUserType());
if(root!=null) request.getSession().setAttribute("user",root);
比较下,上面两个对登录用户进行验证的过程有什么区别。不求马上理解得了的。特别是DAO模式,DAO就是这类设计的核心思想和精华所在。这样,你在JSP中写那些难看的JAVA的时代结束了。
说真的,我还从来没有用过JAVABEAN....更加别说<%=%> 消除<%%>代码块最好用JSTL标签。
用户删除帖子操作。你不是在学STRUTS么。那么我们就应该把删除帖子、发表帖子这类的操作放入Action中去执行
在DeleteAction类中:
//在这里验证用户有无删除本帖子的权限
//通过帖子编号获取要删除的帖子
Message message = MessageDao.get(deleteMessageForm().getId());
//从session中获取用户权限信息
//首先是获取ROOT权限的信息,这里假设一个留言板只有一个管理员
User user = (User)request.getSession().getAttribute("user");
if( user.getType().equale("ROOT") || user.getId()==message.getUserId())//验证是否有权限删除帖子,管理员和发起这个帖子的人可以删除
//执行删除操作
MessageDao.delete(message.getId());
还有很多安全和实现的细节我还没说,等你先入门了再提。
不求你马上理解,慢慢品味吧。
[此贴子已经被作者于2006-7-21 8:33:15编辑过]