JSP+Hibernate入门级实例--留言系统

本文介绍了一个基于JSP和Hibernate技术实现的简单留言系统。系统采用准三层架构,通过Hibernate进行数据持久化,并利用MyEclipse和MySQL完成开发部署。文章详细展示了系统的目录结构及核心代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是个用JSP+Hibernate编写的非常简单的留言系统例子,是个准三层结构(因为为了节省时间着重介绍hibernate部分,省去的 service层,转而使用jsp页面进行业务处理,但并不是在jsp页面上过多的编写java代码,而是使用专门的jsp作为业务处理层)

开发工具:MyEclipse+Mysql

目录结构如下:

config(配置类)

BeanConfig.java
MessageConfig.java

constants(常量类)

Constants.java

dao(数据访问类)

hibernate
MessageDAO.java
UserDAO.java
IMessageDAO.java
IUserDAO.java

exception(异常类)
MessageAuthorityException.java
MessageDAOException.java
MessageException.java

model(模型类)
Message.hbm.xml
Message.java
User.hbm.xml
User.java

sql (数据库脚本)
scrip.sql

util(工具类)
DaoFactory.java
HibernateDAO.java
HibernateFilter.java
HibernateUtil.java

BeanConfig.java

packagecn.hxex.message.config;

importorg.apache.commons.lang.builder.ReflectionToStringBuilder;

importcn.hxex.message.exception.MessageException;

publicclassBeanConfig
...{
privateStringid;
privateStringtype;

publicStringgetId()...{
returnid;
}

publicvoidsetId(Stringid)...{
this.id=id;
}


publicStringgetType()...{
returntype;
}

publicvoidsetType(Stringtype)...{
this.type=type;
}


privateObjectinstance;
publicObjectgetInstance()
...{
if(null!=instance)returninstance;

try
...{
Classcls
=Class.forName(getType());
instance
=cls.newInstance();
returninstance;
}

catch(Exceptionex)
...{
thrownewMessageException("Couldn'tfindclass:"+getType());
}

}


publicStringtoString()
...{
returnReflectionToStringBuilder.toString(this);
}

}

MessageConfig

packagecn.hxex.message.config;

importjava.util.Hashtable;

importorg.apache.commons.lang.builder.ReflectionToStringBuilder;

importcn.hxex.message.exception.MessageException;

/***//**
*系统配置信息类
*/

publicclassMessageConfig
...{
publicstaticHashtablebeans;

/***//**
*构造函数
*/

publicMessageConfig()
...{
beans
=newHashtable();
}


/***//**
*增加一个BeanConfig对象
*
@parambean
*/

publicvoidaddBean(BeanConfigbean)
...{
beans.put(bean.getId(),bean);
}


/***//**
*得到一个DAO接口对象的实例
*
@paramnameDAO接口对象的名称
*
@return指定DAO接口的实现类的实例
*/

publicObjectgetBean(Stringname)
...{
BeanConfigconfig
=(BeanConfig)beans.get(name);

if(config==null)
...{
thrownewMessageException("Couldn'tfindthebean:"+name);
}


returnconfig.getInstance();
}


publicStringtoString()
...{
returnReflectionToStringBuilder.toString(this);
}

}

Constants

packagecn.hxex.message.constants;

publicclassConstants...{
publicstaticfinalStringSESSION_USER="cn.hxex.message.user";
}

IMessageDAO

packagecn.hxex.message.dao;

importjava.util.List;

importcn.hxex.message.model.Message;

publicinterfaceIMessageDAO
...{
publicvoidsaveMessage(Messagemessage);
publicvoidupdateMessage(Messagemessage);
publicListgetMessages();
publicvoiddeleteMessage(Stringid,StringuserId);
publicMessagegetMessage(Stringid);
}

IUserDAO

packagecn.hxex.message.dao;

importcn.hxex.message.model.User;

publicinterfaceIUserDAO
...{
publicvoidsaveUser(Useruser);
publicUsergetUser(Stringusername);
publicUsergetUserById(Stringid);
}

MessageDAO

packagecn.hxex.message.dao.hibernate;

importjava.util.List;

importcn.hxex.message.dao.IMessageDAO;
importcn.hxex.message.exception.MessageDAOException;
importcn.hxex.message.model.Message;
importcn.hxex.message.util.HibernateDAO;

/***//**
*IMessageDAO接口的Hibernate实现
*/

publicclassMessageDAOextendsHibernateDAOimplementsIMessageDAO
...{

/***//**
*保存留言信息
*
*
@parammessage
*被保存的留言对象
*/

publicvoidsaveMessage(Messagemessage)
...{
super.saveObject(message);
}


/***//**
*得到所有的留言信息
*
*
@return返回所有的留言信息
*/

publicListgetMessages()
...{
Stringhsql
="fromMessage";
returnsuper.getObjects(hsql);
}


/***//**
*删除留言信息
*
*
@paramid
*要删除的留言信息的ID值
*
@paramuserId
*执行删除操作的用户ID
*/

publicvoiddeleteMessage(Stringid,StringuserId)
...{
Messagemsg
=getMessage(id);
if(msg==null)
...{
thrownewMessageDAOException("找不到你所要删除的留言!");
}


if(!msg.getUser().getId().equals(userId))
...{
thrownewMessageDAOException("你不能删除别人的留言!");
}


deleteObject(msg);
}


/***//**
*得到留言信息
*
*
@paramid
*留言的ID值
*
@return指定ID值得留言对象
*/

publicMessagegetMessage(Stringid)
...{
return(Message)getObject(Message.class,id);
}


/***//**
*更新留言信息
*
*
@parammessage
*欲更新的留言对象
*/

publicvoidupdateMessage(Messagemessage)
...{
updateObject(message);
}


}


UserDAO
packagecn.hxex.message.dao.hibernate;

importcn.hxex.message.dao.IUserDAO;
importcn.hxex.message.exception.MessageDAOException;
importcn.hxex.message.model.User;
importcn.hxex.message.util.HibernateDAO;

/***//**
*IUserDAO接口的Hibernate实现
*/

publicclassUserDAOextendsHibernateDAOimplementsIUserDAO
...{

/***//**
*保存用户信息到数据库
*
@paramuser被保存的用户对象
*/

publicvoidsaveUser(Useruser)
...{
if(user==null)
return;

Useru
=getUser(user.getName());
if(u!=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值