`
aa00aa00
  • 浏览: 331394 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

SSH分页小结

阅读更多

DAO:spring hibernateTemplate

been的xml
<?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">
<!--
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<!-- 此处的catalog="test"属性要删掉,不然会报sql语法错误 -->
    <class name="com.forlink.been.User" table="user" >
        <id name="id" type="integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="userName" type="string">
            <column name="userName" length="50" not-null="true"/>
        </property>
        <property name="passWord" type="string">
            <column name="passWord" length="50" />
        </property>
         <property name="email" type="string">
            <column name="email" length="50"  />
        </property>
         <property name="address" type="string">
            <column name="address" length="50"  />
        </property>
         <property name="cellPhone" type="string">
            <column name="cellPhone" length="50"  />
        </property>
    </class>
</hibernate-mapping>

 

 

hibernate.cfg.xml

<?xml version="1.0"?>
<!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="show_sql">true</property>
 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="connection.url">jdbc:mysql://localhost:3306/ww</property>
 <property name="connection.username">root</property>
 <property name="connection.password">***</property>
 <property name="connection.isolation">2</property>
 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
 <!--  <property name="hibernate.hbm2ddl.auto">create</property> -->

 
 
 
 
<property name="connection.autocommit">true</property>
 <property name="myeclipse.connection.profile">
  com.mysql.jdbc.Driver
 </property>

 <mapping resource="com/been/user.hbm.xml" />

</session-factory>
</hibernate-configuration>

 

 

 

public class DaoImpl extends HibernateDaoSupport implements Dao
{public List findPageByQuery(final String queryString,
   final Object[] parameters, final PageInfo pageInfo)
 {
  return (List) getHibernateTemplate().execute(new HibernateCallback()//这里使用了匿名内部类
  {
   public Object doInHibernate(Session session)//Spring进行事务维护 省去每次创建session和关闭session
     throws HibernateException
   {
    Query query = session.createQuery(queryString);
    if (parameters != null)
    {
     for (int i = 0; i < parameters.length; i++)
     {
      query.setParameter(i, parameters[i]);
     }
    }
    ScrollableResults sr = query.scroll();
    sr.last();
    int totalCount = sr.getRowNumber();
    int startIndex = (pageInfo.getPageIndex() - 1)
      * pageInfo.getPageSize();
    query.setMaxResults(pageInfo.getPageSize());
    query.setFirstResult(startIndex);
    int totalRec = totalCount + 1;
    pageInfo.setTotalRec(totalRec);
    int totalPage = (totalRec % pageInfo.getPageSize() == 0) ? (totalRec / pageInfo
      .getPageSize())
      : (totalRec / pageInfo.getPageSize()) + 1;
    int[] pageNumbers = new int[totalPage];
    for (int i = 0; i < totalPage; i++)
    {
     pageNumbers[i] = (i + 1);
    }
    pageInfo.setPageNumbers(pageNumbers);
    pageInfo.setTotalPage(totalPage);
    pageInfo.setPageSize(pageInfo.getPageSize());
    pageInfo.setPageIndex(pageInfo.getPageIndex());
    pageInfo.setPrePage(pageInfo.getPageIndex() - 1);
    pageInfo.setNextPage(pageInfo.getPageIndex() + 1);
    return query.list();
   }
  }, true);
 }
 
 
 }
 
 使用参数说明:
 
final String queryString 查询的语句 from aaa as y where y.id=?

final Object[] parameters 参数数组

final PageInfo pageInfo 这个是分页的类

比如: from AAA as t where t.id=? and t.name=?

object[]a={1,haha}

 //Object[] a ={s};
  List li = new ArrayList();
  li = di.findPageByQuery("from User as user", null, fi);
  // li = di.findPageByQuery("from User a", a, fi);
  
  
  
  
  
  
 service:spring依赖注入
 
spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 <bean id="mySessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="configLocation"
   value="classpath:hibernate.cfg.xml" />
 </bean>

 <bean id="myTransactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref bean="mySessionFactory" />
  </property>
 </bean>
 <bean id="userDao" class="com.forlink.dao.UserDaoImpl">
  <property name="sessionFactory">
   <ref bean="mySessionFactory" />
  </property>
 </bean>
 <bean id="dao" class="com.forlink.dao.DaoImpl">
  <property name="sessionFactory">
   <ref bean="mySessionFactory" />
  </property>
 </bean>


 <bean id="userService" class="com.forlink.services.UserServiceImpl"
  abstract="false" lazy-init="default" autowire="default"
  dependency-check="default">
  <property name="userDaoImpl">
   <ref bean="userDao" />
  </property>
 </bean>
 
 <bean id="PageService" class="com.forlink.services.PageService"
  abstract="false" lazy-init="default" autowire="default"
  dependency-check="default">
  <property name="dao">
   <ref bean="dao" />
  </property>
 </bean>

 <bean name="/login" class="com.forlink.struts.UserLogin">
  <property name="userServiceImpl">
   <ref bean="userService" />
  </property>
 </bean>
 
  <bean name="/page" class="com.forlink.struts.PageAction">
  <property name="ps">
   <ref bean="PageService" />
  </property>
 </bean>

 
 <!--<bean id="userService2"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager">
   <ref bean="myTransactionManager" />
  </property>
  <property name="target">
   <ref bean="userService" />
  </property>
  <property name="transactionAttributes">
   <props>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>
-->

</beans>
 
public class PageService
{

 public Dao dao;

 /*
  * public List getUU(String mobile, PageInfo pageInfo) throws Exception {
  * List list = null; if (pageInfo == null) pageInfo = new PageInfo(); try {
  * list = dao .findPageByQuery( "from uuuu u where c.mobile=? and
  * c.sendtype=1 and c.groupType=1 order by c.sendTime desc", new Object[] {
  * mobile }, pageInfo); } catch (DataAccessException ex) {
  * ex.printStackTrace(); } return list;
  */
 public List getUU(PageInfo pageInfo) throws Exception
 {
  /*ApplicationContext context = new ClassPathXmlApplicationContext(
    "applicationContext.xml");
  dao = (DaoImpl) context.getBean("Dao");
  System.out.print(dao);*/  //自己测试时候可以使用
  List list = null;
  if (pageInfo == null)
   pageInfo = new PageInfo();
  try
  {
   list = dao.findPageByQuery("from User u", null, pageInfo);
  } catch (DataAccessException ex)
  {
   ex.printStackTrace();
  }
  return list;
 }


struts :action

public class PageAction extends Action

{
 public PageService ps;

 public PageInfo pageInfo=new PageInfo();

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response){
  System.out.println("listlistlist");
  List list = new ArrayList();
  try
  {
  //pageInfo = (PageInfo) request.getAttribute("pageInfo");
  
   String page=request.getParameter("page");
  if(page==null)
  {page="1";
  }
  
  
  System.out.println("action...........................");
  pageInfo.setPageIndex(Integer.parseInt(page)); 
  
  // pageInfo.setPageIndex(Integer.parseInt(request.getParameter("Index")));
  
  list = ps.getUU(pageInfo);
  if(list.size()!=0)
  {
  request.setAttribute("list", list);
  request.setAttribute("pageInfo", pageInfo);
  }
  }catch
  (Exception ex)
  {
   ex.printStackTrace();
  }
  return mapping.findForward("page");

 }

 public PageInfo getPageInfo()
 {
  return pageInfo;
 }

 public void setPageInfo(PageInfo pageInfo)
 {
  this.pageInfo = pageInfo;
 }

 public PageService getPs()
 {
  return ps;
 }

 public void setPs(PageService ps)
 {
  this.ps = ps;
 }

}

你可以自己写个类 把PageInfo封装进去 我做测试 懒得依赖注入

struts配置文件


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
 <data-sources />
 <form-beans>
  <form-bean name="loginForm" type="com.forlink.struts.UserForm" />

 </form-beans>

 <global-exceptions />
 <global-forwards />
 <action-mappings>
  <action path="/login" input="/login.jsp" attribute="loginForm"
   name="loginForm" scope="request" validate="true">
   <set-property property="cancellable" value="true" />
   <forward name="main" path="/main.jsp" />
  </action>
  <action path="/findLog" type="com.forlink.struts.LogAction"
   scope="request" parameter="findLog">
   <forward name="success" path="/index.jsp"></forward>
  </action>

  <action path="/page" type="com.forlink.struts.PageAction"
   scope="request" >
   <forward name="page" path="/page.jsp"></forward>
  </action>

 </action-mappings>


 <controller
  processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />

 <message-resources
  parameter="com.forlink.struts.ApplicationResources" />

 <plug-in
  className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation"
   value="/WEB-INF/applicationContext.xml" />
 </plug-in>

</struts-config>

 

 


xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

 

view:用了el


<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="java.util.*" %>
<%@ page import="com.been.User" %>
<jsp:directive.page import="com.dao.PageInfo;"/>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<%

  String nowPage ;
  int total;
  
  nowPage=request.getParameter("page");
  if(nowPage==null)
  {nowPage="1";
  }
  int curPage=Integer.parseInt(nowPage);
  if((PageInfo)request.getAttribute("pageInfo") == null){
   total = 1;
  } else {
   total = ((PageInfo)request.getAttribute("pageInfo")).getTotalPage();
  }
 
 %>

 <c:forEach var="user" items="${requestScope.list}">
     <tr>
      <td></td>
    
      <td>${user.userName }</td>
      
     </tr>
    </c:forEach>
   
    
    
     <a href="${pageContext.request.contextPath }/page.do?page=1">首页</a>&nbsp;&nbsp;|
    <a href="${pageContext.request.contextPath }/page.do?page=<%=curPage-1<0?1:curPage-1%>">上一页</a> |
    <a href="${pageContext.request.contextPath }/page.do?page=<%=(curPage)>total?total:curPage+1%>">下一页</a> |
    <a href="${pageContext.request.contextPath }/page.do?page=<%=total %>">末页</a>
    当前第<%=curPage %>页 转到第 <select id="page" onchange="window.location.href='${pageContext.request.contextPath }/page.do?page='+document.getElementById('page').value;">          <%
           for(int toPage = 1; toPage<=total; toPage++) {
          %>
            <option value = <%=toPage%>
             <%if(toPage==curPage){ %>
              selected
             <%} %>
            >
             <%=toPage %>
            </option>
          <%
           }
          %>
         </select> 页
    共<%=total%>页 ssss${pageInfo.pageIndex}     
 </body>
</html>

还有pageInfo类

 

public class PageInfo
{
private int totalPage = 1;

/**
* 前一页
*/
private int prePage = 1;

/**
* 下一页
*/
private int nextPage = 1;

/**
* 总记录数
*/
private int totalRec = 0;

/**
* 默认每页记录数
*/
private final int defaultPageSize = 10;

/**
* 每页记录数
*/
private int pageSize = defaultPageSize;

/**
* 当前页码
*/
private int pageIndex = 1;

/**
* 全部页码,从1开始
*/
private int[] pageNumbers;

public int getPageIndex() {
return pageIndex;
}

public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex > 0 ? pageIndex : 1;
}

public int getNextPage() {
return nextPage;
}

public void setNextPage(int nextPage) {
this.nextPage = nextPage > this.totalPage ? this.totalPage : nextPage;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize > 0 ? pageSize : 10;
}

public int getPrePage() {
return prePage;
}

public void setPrePage(int prePage) {
this.prePage = prePage < 1 ? 1 : prePage;
}

public int getTotalPage() {
return totalPage;
}

public void setTotalPage(int totalPage) {
this.totalPage = totalPage > 0 ? totalPage : 1;
}

public int getTotalRec() {
return totalRec;
}

public void setTotalRec(int totalRec) {
this.totalRec = totalRec > -1 ? totalRec : 0;
}

public int[] getPageNumbers() {
return pageNumbers;
}

public void setPageNumbers(int[] pageNumbers) {
this.pageNumbers = pageNumbers;
}
}
虽然分页是很基础的 但自己写一遍还是需要细心 不然会很多BUG

起码需要你把环境搭建  自己没有利用pageinfo的total这些 属性 就是想页面自己写写
总结over

分享到:
评论

相关推荐

    SSH通用分页组件 SSH分页

    SSH分页 分页 通用分页 struts2分页

    很好的一个SSH分页小例子

    在这个“很好的SSH分页小例子”中,我们将深入探讨SSH框架如何实现数据的分页显示,这对于处理大数据量的展示至关重要。 首先,让我们了解SSH框架的各自角色: 1. **Struts2**:这是一个MVC(Model-View-...

    SSH 通用分页插件

    SSH分页插件的核心功能是将数据库查询结果按照一定的页码和每页记录数进行切割,使得用户可以逐页浏览,提高用户体验并减轻服务器负担。这个插件通常会集成到SSH框架中,通过简单的配置和调用,就能实现复杂的数据...

    强大ssh分页实现

    好强大的ssh分页,封装的很好,适合初学者研究下,可以更快帮助初学者掌握分页机制,学起来不是很容易,但是当你学会了就豁然开朗,其他的分页直接可以藐视了,哈。。。我就是这样学过来的 有相关教程:...

    struts hibernate spring 分页ssh分页

    SSH分页则是指在使用这三个框架开发应用程序时,实现数据展示分页的一种技术手段。 **Struts** 是一个基于MVC设计模式的Web应用框架,主要用于控制视图与模型之间的交互。它提供了一种组织应用逻辑的方式,使得...

    SSH分页_完整例子

    在这个"SSH分页_完整例子"中,我们将深入探讨如何在SSH框架下实现数据的分页显示。 分页是Web应用程序中常见的功能,它能帮助用户更有效地浏览和处理大量数据。SSH框架通过整合Spring的事务管理和Hibernate的ORM...

    SSH分页技术详解与实例

    SSH分页技术是Java Web开发中一种常见的数据处理方法,主要应用于大数据量的展示场景,如用户在浏览商品列表或论坛帖子时,通过分页来避免一次性加载所有数据导致的性能问题和用户体验下降。SSH指的是Spring、Struts...

    ssh分页经典代码

    在SSH框架中实现分页功能是一项常见的任务,尤其是在处理大量数据时,分页能有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。以下将详细介绍如何在SSH框架下创建分页程序,并探讨其优缺点。 首先,理解...

    SSH分页完整实例

    在本实例中,我们将深入探讨SSH框架下的分页功能实现。 首先,让我们从Struts开始,它是SSH中的用户界面层,负责处理HTTP请求并返回相应的视图。在Struts中,我们可以创建一个Action类来处理分页请求。这个Action类...

    ssh 分页 控件 (分页插件)

    总的来说,"ssh 分页 控件 (分页插件)"是一个便捷的工具,能够帮助SSH框架的开发者在JSP页面中轻松实现数据分页功能,提升项目开发效率和用户体验。通过对分页插件的配置和使用,我们可以更专注于业务逻辑,而不用...

    SSH+Mysql无刷新分页实例

    在这个"SSH+Mysql无刷新分页实例"中,我们将探讨如何利用SSH框架与MySQL数据库实现网页的无刷新分页功能,从而提高用户体验。 首先,SSH框架中的Spring负责控制层,它提供依赖注入(Dependency Injection,DI)和...

    SSH分页组件

    在这个场景中,"SSH分页组件"指的是在SSH框架下实现数据分页功能的组件。 分页是Web应用中常见的需求,特别是在处理大数据量时,为了提高用户体验和系统性能,需要将结果集分割成多个小部分(页)进行显示。SSH分页...

    SSH分页(很实用)

    SSH分页技术是Java开发中一个非常实用的功能,尤其在处理大数据量的Web应用时,它能够有效地提高用户体验,避免一次性加载过多数据导致的性能问题。SSH是指Spring、Struts和Hibernate这三大开源框架的组合,它们在...

    SSH分页查询方法

    "SSH分页查询方法"是指在使用Struts2、Hibernate和Spring三大Java开发框架集成开发时实现的分页功能。 首先,Struts2是一个MVC(Model-View-Controller)框架,它负责处理用户请求并将其转发到相应的控制器,进而...

    ssh分页显示实例代码

    这个一个关于String+Spring+Hibernate框架,可以分页显示的实例代码.

    ssh分页完整实例数据库mysql

    总结起来,这个压缩包提供的SSH分页实例数据库MySQL连接,旨在帮助初学者掌握SSH框架在实际项目中的应用,尤其是如何利用SSH实现数据的CRUD操作和分页功能,对于提升Java Web开发技能具有很大价值。通过实践这个实例...

    SSH分页技术

    按照 文档中的的内容轻松实现SSH分页,文档中包含 了 分页bean。直接复制即可使用。有详细的类和方法说明。

    ssh 分页组件,含使用示例

    在这个特定的上下文中,"ssh 分页组件"指的是在SSH框架中实现数据分页的功能。数据分页在大型应用中尤为重要,因为它能有效地管理大量数据,避免一次性加载过多数据导致性能下降。 分页组件通常由两部分组成:前端...

    SSH+ExtJs分页小例子

    在这个"SSH+ExtJs分页小例子"中,我们将探讨如何将这两种技术结合实现数据分页显示。 首先,我们来看NewsDAO.java文件。这个文件包含了两个关键方法:`findPageAll`和`totalRecord`。`findPageAll`方法实现了分页...

    ssh.zip_SSH 数据分页_ssh分页实现

    在这个名为"ssh.zip_SSH 数据分页_ssh分页实现"的压缩包中,我们可以看到一个关键的实践案例——如何在SSH框架下实现数据分页功能。数据分页在Web应用中极为重要,因为它能够帮助用户更有效地浏览大量信息,提高用户...

Global site tag (gtag.js) - Google Analytics