五、java文件
1、包hibernate
HibernateOperation.java文件:
package hibernate; import org.hibernate.*; import org.hibernate.cfg.*; public class HibernateOperation{ public static final SessionFactory sessionFactory; //静态变量,用于产生Session作为数据库连接 static { try { sessionFactory = new Configuration().configure().buildSessionFactory(); //从hibernate.cfg.xml创建全局SessionFactory } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); //创建SessionFactory失败,抛出异常 } } //静态初始化过程,产生全局SessionFactory(相当于产生数据库连接的工厂),该静态初始化过程仅当JVM加载该类时执行一次 public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException { Session s = (Session) session.get(); // 打开一个新的 Session if (s == null) { s = sessionFactory.openSession(); session.set(s); } return s; } public static void closeSession() throws HibernateException { Session s = (Session) session.get(); if (s != null) s.close(); //关闭session session.set(null); } }2、包page
Page.java文件:
package page; import java.math.*; public class Page{ private int totalRows; //总行数 private int pageSize = 5; //每页显示的行数 private int currentPage=1; //当前页号 private int totalPages; //总页数 private int startRow=0; //当前页在数据库中的起始行0,pageSize,pageSize*2,pageSize*3... public Page() { } public Page(int totalRows) { this.totalRows =totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } currentPage = 1; startRow = 0; } //为了在完成删除或修改后能显示当前页 public Page(int totalRows,int currentPage,int startRow) { this.totalRows =totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } this.currentPage=currentPage; this.startRow=startRow; } public Page(int totalRows,int currentPage) { this.totalRows =totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } if(currentPage<=0) currentPage =1; if(currentPage>totalPages) currentPage=totalPages; this.currentPage =currentPage; startRow = (currentPage - 1)*pageSize; } //总行数 public void setTotalRows(int totalRows) { this.totalRows = totalRows; } public int getTotalRows() { return totalRows; } //每页显示的行数 public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageSize() { return pageSize; } //当前页号 public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getCurrentPage() { return currentPage; } //总页数 public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public int getTotalPages() { return totalPages; } //当前页在数据库中的起始行 public void setStartRow(int startRow) { this.startRow = startRow; } public int getStartRow() { return startRow; } }3、包user里的文件:
(1)、User.java文件:
package user; public class User implements java.io.Serializable { private int id; private String name; private String password; public User() { } public User(int id) { this.id = id; } public User(int id, String name, String password) { this.id = id; this.name = name; this.password = password; } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }(2)、UserDAO.java文件(关于数据库的操作):
package user; import java.util.ArrayList; import java.util.Iterator; import org.hibernate.Session; import org.hibernate.Transaction; import java.util.List; import org.hibernate.Query; import hibernate.*; public class UserDAO{ private Session session=null; private Transaction tx=null; public boolean isLogin(String name,String password){ boolean flag = false; try{ session=HibernateOperation.currentSession(); String hql = "FROM User AS u WHERE u.name='"+name+"' AND u.password='"+password+"'"; tx= session.beginTransaction(); Query q=(Query)session.createQuery(hql); Iterator iter = q.list().iterator(); if (iter.hasNext()) { flag = true; } tx.commit(); session.close(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); session.close(); throw e; } return flag; } public ArrayList getUserList(){ List list=new ArrayList(); session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); String hql = "FROM User AS u ORDER BY u.id"; Query q = session.createQuery(hql); list=q.list(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return (ArrayList) list; } public int getRows(String hql){ int totalRows = 0; session=HibernateOperation.currentSession(); try { tx = session.beginTransaction(); //String hql = "SELECT COUNT(*) FROM User"; Query q = session.createQuery(hql); List L=q.list(); totalRows=((Integer)(L.get(0))).intValue(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return totalRows; } //得到一页用户列表 public ArrayList getUserList(int pageSize, int startRow,String hql){ List list=new ArrayList(); session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); //String hql = "FROM User AS u ORDER BY u.id"; Query q = session.createQuery(hql); q.setFirstResult(startRow);//0,5,10.... q.setMaxResults(pageSize); list=q.list(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return (ArrayList) list; } //显示查询 public String Searchuser(String keyword,String cat){ String hql=null; String s=null;//取得列名 if(keyword==null){ hql="FROM User"; } else{ if(cat.equals("00")) s="name"; else{ s="password"; } hql="FROM User AS u WHERE "+s+" like '%"+keyword+"%'"; } return hql; } //删除用户 public void Deluser(int id){ boolean flag = false; session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); User user=(User)session.get(User.class,id); session.delete(user); session.flush(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } } }(3)、UserListAction.java文件:
package user; import java.util.ArrayList; import java.util.Iterator; import org.hibernate.Session; import org.hibernate.Transaction; import java.util.List; import org.hibernate.Query; import hibernate.*; public class UserDAO{ private Session session=null; private Transaction tx=null; public boolean isLogin(String name,String password){ boolean flag = false; try{ session=HibernateOperation.currentSession(); String hql = "FROM User AS u WHERE u.name='"+name+"' AND u.password='"+password+"'"; tx= session.beginTransaction(); Query q=(Query)session.createQuery(hql); Iterator iter = q.list().iterator(); if (iter.hasNext()) { flag = true; } tx.commit(); session.close(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); session.close(); throw e; } return flag; } public ArrayList getUserList(){ List list=new ArrayList(); session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); String hql = "FROM User AS u ORDER BY u.id"; Query q = session.createQuery(hql); list=q.list(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return (ArrayList) list; } public int getRows(String hql){ int totalRows = 0; session=HibernateOperation.currentSession(); try { tx = session.beginTransaction(); //String hql = "SELECT COUNT(*) FROM User"; Query q = session.createQuery(hql); List L=q.list(); totalRows=((Integer)(L.get(0))).intValue(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return totalRows; } //得到一页用户列表 public ArrayList getUserList(int pageSize, int startRow,String hql){ List list=new ArrayList(); session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); //String hql = "FROM User AS u ORDER BY u.id"; Query q = session.createQuery(hql); q.setFirstResult(startRow);//0,5,10.... q.setMaxResults(pageSize); list=q.list(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } return (ArrayList) list; } //显示查询 public String Searchuser(String keyword,String cat){ String hql=null; String s=null;//取得列名 if(keyword==null){ hql="FROM User"; } else{ if(cat.equals("00")) s="name"; else{ s="password"; } hql="FROM User AS u WHERE "+s+" like '%"+keyword+"%'"; } return hql; } //删除用户 public void Deluser(int id){ boolean flag = false; session=HibernateOperation.currentSession(); try{ tx= session.beginTransaction(); User user=(User)session.get(User.class,id); session.delete(user); session.flush(); tx.commit(); } catch(RuntimeException e){ if(tx!=null) tx.rollback(); throw e; } finally { HibernateOperation.closeSession(); } } }(4)、UserWidgetAction.java文件:
package user; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ActionContext; import java.util.ArrayList; import java.util.List; import java.util.Map; import page.*; public class UserWidgetAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private List userList; protected String currentPage; private Page page; public String execute() throws Exception { UserDAO dao=new UserDAO(); ActionContext ctx = ActionContext.getContext(); Map m=ctx.getSession(); String keyword=(String) m.get("search_keyword"); String cat=(String) m.get("search_cat"); String hql_1=dao.Searchuser(keyword,cat); String hql_2="select count(*) "+hql_1; int totalRows=dao.getRows(hql_2); int _currentPage=Integer.parseInt(currentPage); page=