easyui用来做后台管理还是很方便的,这两天又添加了几个小功能其中一个是添加公告。可以包括前台的公告。还有后台给管理员看的公告。后端实现的还是很粗糙的。实际项目中,公告具体出现的位置还有时机都应该是固定的。所以可以事先为这些公告定义标示,创建表结构中指定主键唯一标示这些公告。到时候通过主键获取公告。但是由于我现在需求还是不清晰。并不知道需要多少公告。所以添加公告时需要管理员为公告指定主键。等项目完成,添加公告时就不能再让管理员主键了,毕竟他不是程序员。
public class BaseDao {
public SessionFactory sessionFactory;
private Session session=null;
/**
* @param obj
* @return
*/
public void CloseSession()
{
if(session!=null)
{
//�ر�session
session.close();
}
}
public BaseDao()
{
}
public BaseDao(SessionFactory sf)
{
sessionFactory = sf;
HibernateUtil.SetSessionFactory(sessionFactory);
}
public boolean add(Object obj)
{
Transaction tran=null;
boolean result=false;
try
{
Session session= sessionFactory.openSession();
tran=session.beginTransaction();
session.save(obj);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//����ع�
tran.rollback();
}
}
finally
{
if(session!=null)
{
session.close();
}
}
return result;
}
/**
* @return �������
* ����Ϊ�ĵ�����id����
*/
public boolean update(Object object)
{
// Session session=null;
Transaction tran=null;
boolean result=false;
try
{
Session session= sessionFactory.openSession();
tran=session.beginTransaction();
session.update(object);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//����ع�
tran.rollback();
}
}
finally
{
if(session!=null)
{
//�ر�session
session.close();
}
}
return result;
}
/**
* @param c
* @param id ��ѯһ����ݸ�������id��
* @return
*/
public Object get(Class c,int id)
{
//Session session=null;
Object object=null;
try
{
Session session= sessionFactory.openSession();
object=session.get(c,id);
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
//�ر�session
session.close();
}
}
return object;
}
/**
* @param obj
* @return ɾ�����
*/
public boolean delete(Object obj)
{
// Session session=null;
Transaction tran=null;
boolean result=false;
try
{
Session session= sessionFactory.openSession();
tran=session.beginTransaction();
session.delete(obj);
tran.commit();
result=true;
}
catch (Exception e)
{
if(tran!=null)
{
//����ع�
tran.rollback();
}
}
finally
{
if(session!=null)
{
//�ر�session
session.close();
}
}
return result;
}
/**
* @param ��ѯ������¼
* @param sql sql���
* @param param ��������
* @return
*/
@SuppressWarnings("unchecked")
public List query(String sql,Object[] param)
{
List list=new ArrayList();
//Session session=null;
try
{
Session session= sessionFactory.openSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i= 0;i
*这个函数有问题
* @param sql
* @param param ��ѯ������¼
* @return
*/
public Object queryOne(String sql,Object[] param)
{
Object object=null;
// Session session=null;
try
{
Session session= sessionFactory.openSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i=0 ;i
* @param sql
* @param param
* @param page
* @param size
* @return ʵ�ַ�ҳ��ѯ
*/
@SuppressWarnings("unchecked")
public List queryByPage(String sql,String[] param,int page,int size)
{
List list=new ArrayList();
try
{
Session session= sessionFactory.openSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i= 0;ipublic int getCount(String hql, String[] pras) {
int resu = 0 ;
// Session s = null;
try {
Session session=sessionFactory.openSession();
Query q = session.createQuery(hql);
if (pras != null) {
for (int i =0 ; i < pras.length; i++) {
q.setString(i, pras[i]);
}
}
resu = q.list().size();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null)
{
session.close();
}
}
return resu;
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
public static void main(String[] args) {
/* new BaseDao(HibernateUtil.getSessionFactory());
Category ca = (Category) queryOne("from Category ca where ca.category_id = 3", null);
System.out.println(ca.getCategory_remark()); */
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
这个类我是从网上down的,已经找不到作者,特此感谢,帮了我很大的忙,也为他头疼不已,因为一开始不会hibernate,就down了它,然后项目中大量使用这个类,包括一个util类这个类是读取xml文件初始化hibernate用的,然后后期添加spring功能时,没少改动,把所有的初始化hibernate的部分全都改了,而且需要用spring对hibernate进行事物管理,还有会话管理。这两个整的我焦头烂额。最近稍稍摸索点头绪,确实承认hibernate为我们提供的对话关系映射很强大。(很方便,以后要买一本hibernate的书,作为支持下,听说现在不行了。)
public void AddNotice()
{
noticeService.addNotice(notice, title, content,description);
System.out.println("title"+title+"notice:"+notice+"content:"+content);
JSONObject jsonObject = JSONUtil.NewJSonObject();
msg = "改公告已经保存";
jsonObject.put("msg", msg);
try {
JSONUtil.ResponsePrint(jsonObject);
} catch (IOException e) {
e.printStackTrace();
}
}
<%-- --%>
前端代码。JS代码和之前的博客不同的不多,这是验证用户第一次点击文本框时,让提示文字消失的代码
var titleval = '请输入标题';
var contentval = '请输入内容';
var noticeval = '请输入公告的名字,名字用于程序员从后台通过该字段获取公告';
var descriptionval = '请输入对公告的描述';
$('#title').text(titleval);
$('#content').text(contentval);
$('#notice').text(noticeval);
$('#description').text(descriptionval);
$('#description').click(function(){
if($('#description').val().replace(/\s+/g,"")==descriptionval)
{
$('#description').text("");
}
});
$('#title').click(function(){
if($('#title').val().replace(/\s+/g,"")==titleval)
{
$('#title').text("");
}
});
/*
$('#content').click(function(){
});
*/
$('#notice').click(function(e){
if($(this).val().replace(/\s+/g,"")==noticeval)
{
$(this).text("");
}
});
function deletetext()
{
if($('#content').val().replace(/\s+/g,"")==contentval)
{
CKEDITOR.instances.content.setData('');
}
}
CKEDITOR.instances["content"].on("instanceReady", function () {
//set keyup event
/* this.document.on("keyup", deletetext); */
//and click event
this.document.on("click", deletetext);
//and select event
/* this.document.on("select", deletetext); */
});
这就是添加公告这块
3.更新公告
这里稍稍复杂些。编辑和新加公告在前段上区别不大,我们需要做的就是当用户点击编辑按钮时,获取相应的公告ID,将它传回后台,然后后台将程序转移到编辑公告界面,同时在session中添加公告的相应信息,在前段获取,在合适位置显示。同时sava按钮的请求应变为更新请求。传到UpdateNoticeAction中。然后更新成功后,将界面转到公告列表中。
4删除公告
获取到相应公告iD,然后删除,上一篇博客有
结束语。easyui实现后台管理可以很优雅,利用jquery强大的功能,可以把网站做的和桌面应用一样漂亮,甚至更漂亮。我该好好学设计模式了,天天这么看前端,感觉自己都想做前端了!后续可能还会加一些easyui的博客