站長資訊網
        最全最豐富的資訊網站

        struts2+Hibernet實現分頁

        好久沒寫過什么東西了,最近自己在學習Java WEB方面的東西,自己想用JSP和 Struts2 HIBERNATE來寫一個自己工作室的網站練練手,稍微有些收獲今天寫出來,與大家一起分享一下:STRUTS2+HIBERNATE實現分頁是 JAVA WEB最常用的東西了,我在網站上找了很多東西結果都沒有很理想的。由于本人是新手所以寫出來的代碼質量有限。希望與大家一起進步,但是我從沒有放棄過!我接觸JAVA WEB不到一個月的時間,希望大家見諒寫出來的東西部是很理想。望高手多多指教。

        第一步:建立一個SQL數據庫Tb_soft ,數據庫表,software(字段:Tsoftware,fSoftname,fListImage,fVar,fFeilname,fUsedSystem,fUpdateTime,fInf,fClassID,fDownTimes  字段

        類型并不重要自己隨便設置然后直接通過SQL企業管理器直接在表里輸入內容方便測試就是了)

        第二步:建立一個名為productlist JAVA的WEB項目(我用的是NetBeans IDE 6.9,所以在新建項目的時候選擇了Struts2 HIBERNATE框架,新建后會自動生成 hibernate.cfg.xml的配置文件

        )。

        第三步:配置hibernate.cfg.xml文件,主要是對數據庫的鏈接設置以及數據表映射文件的設置

        1、文件名:hibernate.cfg.xml文件代碼:

        <?xml version=”1.0″ encoding=”UTF-8″?>
        <!DOCTYPE hibernate-configuration PUBLIC “-//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
        <hibernate-configuration>
          <session-factory>
            <property name=”hibernate.dialect”>org.hibernate.dialect.SQLServerDialect</property>
            <property name=”hibernate.connection.driver_class”>com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <property name=”hibernate.connection.url”>jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Tb_soft </property>
            <property name=”hibernate.connection.username”>sa</property>
            <property name=”hibernate.connection.password”>123456</property>
            <mapping resource=”soft.hbm.xml”/>
          </session-factory>
        </hibernate-configuration>

        注: <mapping resource=”soft.hbm.xml”/> 元素對數據庫表software 配置文件soft.hbm.xml的映射配置,注意soft.hbm.xml文件的路徑如果和hibernate.cfg.xml文件沒在同一個目錄必須

        加上路徑例如 <mapping resource=”DatatableXML/soft.hbm.xml”/>

        2、新建 名為:soft.hbm.xml 的映射文件,該文件主要是對數據庫表software的映射配置全部代碼如下:

        <?xml version=”1.0″ encoding=”UTF-8″?>

        <!DOCTYPE hibernate-mapping PUBLIC
          “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
          “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

        <hibernate-mapping>
            <class name= “com.bean.soft” table=”Tsoftware”>
                <id name=”id” column=”id” type=”int”>
                    <generator class=”native”/>
                </id>
                <property name=”fSoftname” type=”string” length=”20″>
                    <column name=”fSoftname”/>
                </property>
                <property name=”fListImage” type=”string”  length=”20″>
                    <column name=”fListImage”/>
                </property>
                <property name=”fVar” type=”string” length=”10″>
                    <column name=”fVar”/>
                </property>
                <property name=”fFeilname” type=”string”  length=”30″>
                    <column name=”fFeilname”/>
                </property>
                <property name=”fUsedSystem” type=”string”  length=”30″>
                    <column name=”fUsedSystem”/>
                </property>
                <property name=”fUpdateTime” type=”string”  length=”30″>
                    <column name=”fUpdateTime”/>
                </property>
                <property name=”fInf” type=”string”  length=”2000″>
                    <column name=”fInf”/>
                </property>
                <property name=”fDownTimes” type=”string” length=”10″>
                    <column name=”fDownTimes”/>
                </property>
            </class>
        </hibernate-mapping>

        注: <class name= “com.bean.soft” table=”Tsoftware”>設置了soft屬于一個javabean,關于javabean我就不解釋了。關于這個文件的代碼后面再貼出來。class name=javabean包

        +javabean構成, table=”Tsoftware”,其中Tsoftware就是SQL數據庫表。有關property 元素我這里簡單的說一下 例如下:

               <property name=”fDownTimes” type=”string” length=”10″>
                    <column name=”fDownTimes”/>
                </property>
         name,映射文件構成表的的字段名,這里的name必須與com.bean.soft 中的熟悉對應,千萬記住要設置好type ,這里的type好比SQL的字段類型,具體類型對應關系請查相關資料我就不詳細解

        釋了。

        第四步:在包com.bean 建立JAVAbean soft 代碼如下:

        package com.bean;

        /**
         *
         * @author Even
         */
        public class soft {
            private String fSoftname;
            private int id;
            private String fListImage;
            private String fVar;
            private String fFeilname;
            private String fUsedSystem;
            private String fUpdateTime;
            private String fInf;
            private String fDownTimes;

            /**
             * @return the fSoftname
             */
            public String getfSoftname() {
                return fSoftname;
            }

            /**
             * @param fSoftname the fSoftname to set
             */
            public void setfSoftname(String fSoftname) {
                this.fSoftname = fSoftname;
            }

            /**
             * @return the id
             */
            public int getId() {
                return id;
            }

            /**
             * @param id the id to set
             */
            public void setId(int id) {
                this.id = id;
            }

            /**
             * @return the fListImage
             */
            public String getfListImage() {
                return fListImage;
            }

            /**
             * @param fListImage the fListImage to set
             */
            public void setfListImage(String fListImage) {
                this.fListImage = fListImage;
            }

            /**
             * @return the fVar
             */
            public String getfVar() {
                return fVar;
            }

            /**
             * @param fVar the fVar to set
             */
            public void setfVar(String fVar) {
                this.fVar = fVar;
            }

            /**
             * @return the fFeilname
             */
            public String getfFeilname() {
                return fFeilname;
            }

            /**
             * @param fFeilname the fFeilname to set
             */
            public void setfFeilname(String fFeilname) {
                this.fFeilname = fFeilname;
            }

            /**
             * @return the fUsedSystem
             */
            public String getfUsedSystem() {
                return fUsedSystem;
            }

            /**
             * @param fUsedSystem the fUsedSystem to set
             */
            public void setfUsedSystem(String fUsedSystem) {
                this.fUsedSystem = fUsedSystem;
            }

            /**
             * @return the fUpdateTime
             */
            public String getfUpdateTime() {
                return fUpdateTime;
            }

            /**
             * @param fUpdateTime the fUpdateTime to set
             */
            public void setfUpdateTime(String fUpdateTime) {
                this.fUpdateTime = fUpdateTime;
            }

            /**
             * @return the fInf
             */
            public String getfInf() {
                return fInf;
            }

            /**
             * @param fInf the fInf to set
             */
            public void setfInf(String fInf) {
                this.fInf = fInf;
            }

            /**
             * @return the fDownTimes
             */
            public String getfDownTimes() {
                return fDownTimes;
            }

            /**
             * @param fDownTimes the fDownTimes to set
             */
            public void setfDownTimes(String fDownTimes) {
                this.fDownTimes = fDownTimes;
            }
        }
        關于JAVAbean就不解釋了。

        第五步:在com.Hibernate包建立Hibernate的sessionFactory(文件名:NewHibernateUtil.java)用于獲取Session

        NewHibernateUtil.java 代碼:

        package com.Hibernate;

        import org.hibernate.HibernateException;
        import org.hibernate.Session;
        import org.hibernate.cfg.AnnotationConfiguration;
        import org.hibernate.SessionFactory;
        import org.hibernate.cfg.Configuration;

        /**
         * Hibernate Utility class with a convenient method to get Session Factory object.
         *
         * @author Even
         */
        public class NewHibernateUtil {

            private static SessionFactory sessionFactory = null;
            private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

            static {
                try {
                    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
                } catch (Throwable ex) {
                    // Log the exception.
                    System.err.println(“對不起數據工廠構建失敗.” + ex);
                    throw new ExceptionInInitializerError(ex);
                }
            }

            public static SessionFactory getSessionFactory() {
                return sessionFactory;
            }

            public static Session getsession() throws HibernateException {
                Session session = (Session) threadLocal.get();
                if (session == null || !session.isOpen()) {
                    if (sessionFactory == null) {
                        rebuildsessionFactory();
                    }
                    session = (sessionFactory != null) ? sessionFactory.openSession() : null;
                    threadLocal.set(session);
                }
                return session;
            }

            private static void rebuildsessionFactory() {
                try {
                    Configuration cfg = new Configuration().configure();
                    sessionFactory = cfg.buildSessionFactory();
                } catch (Exception e) {
                    System.out.print(“創建工廠會話失敗!”);
                    e.printStackTrace();
                }
            }

            public static SessionFactory getsessionFactory() {
                return sessionFactory;
            }

            public static void closesessicon() {
                Session session = (Session) threadLocal.get();
                if (session != null) {
                    session.close();
                }
            }
        }

        這里注意session的關閉。

        第六步:在包com.dao包建立整個程序的do層;文件名為:softDao.java

        代碼如下:

        package com.dao;

        /**
         *
         * @author Even
         */
        import com.Hibernate.NewHibernateUtil;
        import com.bean.soft;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.util.ArrayList;
        import java.util.List;
        import org.hibernate.HibernateException;
        import org.hibernate.Query;
        import org.hibernate.Session;

        public class softDao {
            public List<soft> queryByPage(int pageSize, int pageNow, String HQL) {
                Session session = null;
                List sftlist = new ArrayList();
                try {
                    session = NewHibernateUtil.getsession();// 獲得session對象
                    //String hql = “from Employee emp”;// 查詢HQL語句
                    HQL = “from soft sft”;// 條件查詢HQL語句
                    Query q = session.createQuery(HQL);// 執行查詢操作
                    q.setFirstResult(pageSize * (pageNow – 1));
                    q.setMaxResults(pageSize);
                    sftlist = q.list();
                } catch (HibernateException e) {
                    e.printStackTrace();
                    System.out.println(“查詢失敗”);
                } finally {
                    NewHibernateUtil.closesessicon();// 關閉session
                }
                return sftlist;
            }
            //獲得總頁數的方法有時間可能會單獨使用該工程所以將獲得session的過程也單獨寫出來
            public int getpageCount(int pagesize, String HQL) {
                int pageCount;
                int Datacount = 0;
                Session session = null;
                try {
                    session = NewHibernateUtil.getsession();// 獲得session對象
                    HQL = “from soft sft”;//條件查詢HQL語句,這里注意使用的實例查詢方式,soft是我們建立的javabean
                    Query q = session.createQuery(HQL);// 執行查詢操作
                    Datacount = q.list().size();//獲得記錄總數
                } catch (HibernateException e) {
                    e.printStackTrace();
                    System.out.println(“查詢失敗”);
                } finally {
                    NewHibernateUtil.closesessicon();// 關閉session
                }
                if (Datacount % pagesize == 0) {
                    pageCount = Datacount / pagesize;
                } else {
                    pageCount = Datacount / pagesize + 1;
                }
            
                return pageCount;

            }
        }

        時間有點晚了所以這里就不多解釋了。

        第七步:在包com.action 建立分頁的Action文件名為:softlistAction.java

        代碼如下:

        package com.action;

        import com.bean.leavetalk;
        import com.bean.soft;
        import com.dao.Dao;
        import java.util.List;
        import com.opensymphony.xwork2.ActionSupport;

        public class softlistAction extends ActionSupport {

            private List<soft> softs;//用于數據集合對象并非只是軟件
            private List<soft> downcountlist;//用于顯示下載列表的集合。
            private List<leavetalk> leavatalks;//用于顯示用戶留言列表的集合。
            private int pageNow = 1; //初始化為1,默認從第一頁開始顯示
            private int pageSize = 4; //每頁顯示5條記錄
            private int pageCount;//總頁數
            private String doing;//標記Action返回的值
            private Dao pageDAO = new Dao();
            private Dao leivetalkdao = new Dao();
            private int id;
            private String fbadcount;
            private String fgoodcount;

            public List<soft> getSofts() {
                return softs;
            }

            public void setSofts(List<soft> softwares) {
                this.softs = softs;
            }

            public int getPageNow() {
                return pageNow;
            }

            public void setPageNow(int pageNow) {
                this.pageNow = pageNow;
            }

            public int getPageSize() {
                return pageSize;
            }

            public void setPageSize(int pageSize) {
                this.pageSize = pageSize;
            }

            public int getPageCount() {
                Dao sa = new Dao();
                sa.getpageCount(pageSize, “”);
                this.pageCount = sa.getpageCount(pageSize, “”);
                return sa.getpageCount(pageSize, “”);
            }

            /**
             * @param pageCount the pageCount to set
             */
            public void setPageCount() {
                Dao sa = new Dao();
                sa.getpageCount(pageSize, “”);
                this.pageCount = sa.getpageCount(pageSize, “”);
            }

            /**
             * @return the doing
             */
            public String getDoing() {
                return doing;
            }

            /**
             * @param doing the doing to set
             */
            public void setDoing(String doing) {
                this.doing = doing;
            }

            //主方法
            public String execute() throws Exception {
                String returnstr = “erro”;
                String HQLstr = “”;
                // softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
                if (doing.equals(“productlist”)) {
                    returnstr = “productlist”;
                    HQLstr = “from soft sft”;
                    this.setPageSize(4);
                    this.leavatalks = leivetalkdao.getleavetalks(“from leavetalk lt order by lt.id desc”);
                    this.softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);

                } else if (doing.equals(“productshow”)) {
                    returnstr = “productshow”;
                    HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
                    downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);

                } else if (doing.equals(“index”)) {
                    returnstr = “index”;
                    HQLstr = ” from soft sft where sft.ftype=’T’order by sft.id asc”;
                    this.setPageSize(5);
                } else if (doing.equals(“web”)) {
                    returnstr = “web”;
                    HQLstr = ” from soft sft where sft.ftype=’T’order by sft.id asc”;
                    this.setPageSize(5);
                } else if (doing.equals(“service”)) {
                    returnstr = “service”;
                    //HQLstr = ” from service sr where order by sr.id asc”;
                    // this.setPageSize(1);
                } else if (doing.equals(“Updatefgood”)) {
                    returnstr = “Updatefgood”;
                    HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
                    downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);
                    pageDAO.UpdatefgoodAndfbad(getId(), “updategood”, fgoodcount);
                } else if (doing.equals(“Updatefbad”)) {
                    returnstr = “Updatefgood”;
                    HQLstr = “from soft sft where sft.id='” + getId() + “‘ order by sft.id asc”;
                    downcountlist = pageDAO.queryByPage(10, pageNow, “from soft sft order by sft.fDownTimes desc”);
                    pageDAO.UpdatefgoodAndfbad(getId(), “updatebad”, fbadcount);
                } else {
                    returnstr = “erro”;
                }
                softs = pageDAO.queryByPage(pageSize, pageNow, HQLstr);
              
                System.out.println(softs.size());
                 return returnstr;
            }

            /**
             * @return the id
             */
            public int getId() {
                return id;
            }

            /**
             * @param id the id to set
             */
            public void setId(int id) {
                this.id = id;
            }

            /**
             * @return the downcountlist
             */
            public List<soft> getDowncountlist() {
                return downcountlist;
            }

            /**
             * @param downcountlist the downcountlist to set
             */
            public void setDowncountlist(List<soft> downcountlist) {
                this.downcountlist = downcountlist;
            }

            /**
             * @return the fbadcount
             */
            public String getFbadcount() {
                return fbadcount;
            }

            /**
             * @param fbadcount the fbadcount to set
             */
            public void setFbadcount(String fbadcount) {
                Integer b = Integer.valueOf(fbadcount) + 1;
                this.fbadcount = b.toString();

            }

            /**
             * @return the fgoodcount
             */
            public String getFgoodcount() {
                return fgoodcount;
            }

            /**
             * @param fgoodcount the fgoodcount to set
             */
            public void setFgoodcount(String fgoodcount) {
                Integer b = Integer.valueOf(fgoodcount) + 1;
                this.fgoodcount = b.toString();
            }

            /**
             * @return the leavatalks
             */
            public List<leavetalk> getLeavatalks() {
                return leavatalks;
            }

            /**
             * @param leavatalks the leavatalks to set
             */
            public void setLeavatalks(List<leavetalk> leavatalks) {
                this.leavatalks = leavatalks;
            }
        }

        第八步:配置ACTION 文件STRUTS.xml的代碼如下:

        <!DOCTYPE struts PUBLIC
        “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
        “http://struts.apache.org/dtds/struts-2.0.dtd”>

        <struts>
            <include file=”example.xml”/>
            <!– Configuration for the default package. –>
            <package name=”default” extends=”struts-default”>
                <action name=”softlist” class=”com.action.softlistAction”>
                    <result name=”SUCCESS”>test.jsp</result>
                    <result name=”error”>error.jsp</result>
                </action>
            </package>
        </struts>

        第九步:建立JSP文件 來享受結果了

        test.jsp代碼如下:
        < import=”java.sql.ResultSet”%>
        < import=”java.util.List”%>
        < contentType=”text/html”%>
        < import=”org.apache.struts2.ServletActionContext”%>
        <%@ page language=”java” pageEncoding=”UTF-8″%>
        <%@ taglib uri=”/struts-tags” prefix=”s”%>
        <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
           “http://www.w3.org/TR/html4/loose.dtd”>
        <script language=”javascript” type=”text/javascript”>
                <%
                            String PageNow = request.getAttribute(“pageNow”).toString();
                            String pageCount = request.getAttribute(“pageCount”).toString();
                %>
                  
            </script>
        <html>
            <head>
                <meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
                <title>分頁測試</title>
            </head>

            <table style=” border: 2px”>
                <s:iterator value=”softs”>
                    <td><s:property value=”fSoftname”/></td>
                    <td><s:property value=”fUsedSystem”/></td>
                    <td><s:property value=”fUpdateTime”/></td>
                </s:iterator>
            </table>
            <div>
                                <ul><li><a href=’softlist.action?pageNow=1′>首頁</a></li>
                                    <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow-1}”/>’> 上一頁</a></li>
                                    <li><a href=’softlist.action?pageNow=<s:property value=”%{PageNow+1}”/>’>下一頁</a></li>
                                    <li><a href=’softlist.action?pageNow=<%=pageCount%>’>末頁</a></li>
                                    <li><span class=”pageinfo”>第<strong><s:property value=”#request.pageNow”/></strong>頁</span></li>
                                    <li><span class=”pageinfo”>共<strong><s:property value=”#request.pageCount”/></strong>頁</span></li>
                                </ul></div>
            <body>
             
            </body>
        </html>
        第十步:建立link.jsp
        代碼如下:
        <%–
            Document   : link
            Created on : 2011-1-24, 18:42:14
            Author     : Even
        –%>

        < contentType=”text/html” pageEncoding=”GBK”%>
        <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
           “http://www.w3.org/TR/html4/loose.dtd”>

        <html>
            <head>
                <meta http-equiv=”Content-Type” content=”text/html; charset=GBK”>
                <title>JSP Page</title>
            </head>
            <body>
                <h1><a href=”softlist.action”>單擊瀏覽效果</a></h1>
            </body>
        </html>

        注意:后面的演示我是重新制作的頁面不是我的網站頁面效果所以只是完成了一個原理而已,請高人高抬貴手 本人剛入門不到一個月的時間,利用這篇文章來回顧我自己學的東西同事也分享給大家,網上很多 STRUTS2的分頁文章沒有一個完整的。這里面的分頁原理用的是 session里面的記錄集查詢中的 setFirstResult和setMaxResults,關于算法大家自己去揣摩就是了很簡單。我正在寫一個工作室的網站雖然用asp.net來寫很快但是我覺得用熟悉JAVA的話會更快,呵呵。以后我會多寫一些東西的。

         

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品久操视频| 国产精品99久久久久久www| 国产精品久久久久久福利漫画| 精品成人一区二区三区四区| 97久久精品无码一区二区| 亚洲精品视频久久久| 国产精品伦理久久久久久| 国产精品怡红院永久免费| 久久精品国产亚洲精品2020| 亚洲精品无码成人片在线观看| 国产精品无码国模私拍视频| 精品成人免费自拍视频| 国产麻豆精品一区二区三区v视界| 亚洲精品乱码久久久久久不卡| 国产区精品福利在线观看精品| 亚洲精品理论电影在线观看| 国产成人精品日本亚洲18图| 久久99精品久久只有精品| 亚洲AV永久无码精品成人| 亚洲人午夜射精精品日韩| 热综合一本伊人久久精品| 老司机午夜网站国内精品久久久久久久久| 久久国产乱子精品免费女| 国产精品日韩AV在线播放| 亚洲AV无码成人精品区在线观看| 久久五月精品中文字幕| 狠狠精品干练久久久无码中文字幕| 在线欧美v日韩v国产精品v| 性色精品视频网站在线观看| 久久久久夜夜夜精品国产| 精品久久久久久综合日本| 国产成人精品福利网站在线| 国产精品成人A区在线观看| 久久99精品久久久久婷婷| 日韩精品一区二区三区中文| 日韩精品无码久久久久久 | 9久热这里只有精品| 久久精品国产一区二区三区日韩| 国产日韩欧美精品| 青青草国产精品久久| 国产精品白丝jkav网站|