`

将获取到的List分页显示

    博客分类:
  • SSH
阅读更多

获取用户信息并分页显示

UserInfo.java

package cn.ict.mp.bean;

public class UserInfo {
	private Long id;
	private String userId;
	private String userName;
	private Integer type;
	private String email;
	private String client = "AndroidpnClient";
	private String clientIp = "10.21.1.55";
	private String createddate;
	private Integer appType;
	public String getUserId() {
		return userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public Integer getType() {
		return type;
	}
	public void setType(Integer type) {
		this.type = type;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getClient() {
		return client;
	}
	public void setClient(String client) {
		this.client = client;
	}
	public String getClientIp() {
		return clientIp;
	}
	public void setClientIp(String clientIp) {
		this.clientIp = clientIp;
	}
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public Integer getAppType() {
		return appType;
	}
	public void setAppType(Integer appType) {
		this.appType = appType;
	}
	public String getCreateddate() {
		return createddate;
	}
	public void setCreateddate(String createddate) {
		this.createddate = createddate;
	}
	

}

 UserInfo.hbm.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">
    
 <hibernate-mapping package="cn.ict.mp.bean">
 	<class name="UserInfo" table="apn_user" lazy="false">
 		<id name="id" column="id" type="long">
 			<generator class="identity" />
 		</id>
 		
 		<property name="userId" type="string">
			<column name="username" sql-type="varchar" />
		</property>
		
		<property name="userName" type="string">
			<column name="name" sql-type="varchar" />
		</property>
		
		<property name="type" type="integer">
			<column name="type" sql-type="int" />
		</property>
		
		<property name="email" type="string">
			<column name="email" sql-type="varchar" />
		</property>
		
		<property name="createddate" type="string">
			<column name="created_date" sql-type="datetime" />
		</property>
		
		<property name="appType" type="integer">
			<column name="apptype" sql-type="int" />
		</property>
		
		
		
 	</class>
 </hibernate-mapping>

 UserInfoDaoImp.java

package cn.ict.mp.dao.imp;

import java.util.ArrayList;
import java.util.List;


import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;

import cn.ict.mp.bean.UserInfo;
import cn.ict.mp.dao.UserInfoDao;

public class UserInfoDaoImp implements UserInfoDao {

	private HibernateTemplate hibernateTemplate;
	
	
	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}


	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}

	/**
	 * get the list of current page's user information 
	 * @param String hql
	 * @param Integer pageNo
	 * @param Integer pageSize
	 * @return List<UserInfo>
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<UserInfo> findUserInfo(String hql,Integer pageNo, Integer pageSize) {
		// TODO Auto-generated method stub
		List<UserInfo> userList = new ArrayList<UserInfo>();
		Session s = hibernateTemplate.getSessionFactory().openSession();
		Query query  = s.createQuery(hql);
		
		//设置当前页显示的第一条记录
		query.setFirstResult((pageNo - 1) * pageSize);
		
		//设置每页最多显示记录条数
		query.setMaxResults(pageSize);
		
		userList = query.list();
		s.close();
		return userList;
	}
	/**
	 * get the size of user list
	 * @param String hql
	  * @return Integer
	 */
	@SuppressWarnings("unchecked")
	@Override
	public Integer findUserListSize(String hql) {
		// TODO Auto-generated method stub
		List<UserInfo> userList = new ArrayList<UserInfo>();
		Session s = hibernateTemplate.getSessionFactory().openSession();
		Query query  = s.createQuery(hql);
		
		userList = query.list();
		Integer totalSize = userList.size();
		s.close();
		return totalSize;
	}

}

 applicationContext-beans.xml

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>

		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.generate_statistics">true</prop>
				<prop key="hibernate.connection.release_mode">auto</prop>
				<prop key="hibernate.autoReconnect">true</prop>
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
			</props>
		</property>

		<!-- 配置映射文件 -->
		<property name="mappingResources">
			<list>
				<value>cn/ict/mp/bean/Login.hbm.xml</value>
				<value>cn/ict/mp/bean/UserInfo.hbm.xml</value>
				
			</list>
		</property>
	</bean>

	<!-- 2把Session工厂注入给hibernateTemplate -->
	<!-- 解释一下hibernateTemplate:hibernateTemplate提供了很多方便的方法,在执行时自动建立 HibernateCallback 对象,例如:load()、get()、save、delete()等方法。 -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 3创建hibernate的事务管理器 Spring AOP 注入sessionFactory -->
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<!-- 4配置通知 将该通知关联到hibernate事务管理器 -->
	<tx:advice id="advice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" />
			<tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true" />
			<tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" />
			<tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- 5配置切入点Spring AOP,将切入点和通知关联起来 -->
	<aop:config>
		<aop:pointcut id="perform" expression="execution(* cn.ict.mp.dao..*.*(..))" />
		<aop:advisor advice-ref="advice" pointcut-ref="perform" />
	</aop:config>

	<!-- 6配置dao层 -->
	<bean id="loginDao" class="cn.ict.mp.dao.imp.LoginDaoImp">
		<property name="hibernateTemplate" ref="hibernateTemplate" />
	</bean>
	
	<bean id="userInfoDao" class="cn.ict.mp.dao.imp.UserInfoDaoImp">
		<property name="hibernateTemplate" ref="hibernateTemplate" />
	</bean>

 

DataManage.java

 

package cn.ict.mp.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.ict.mp.bean.Login;
import cn.ict.mp.bean.UserInfo;
import cn.ict.mp.dao.LoginDao;
import cn.ict.mp.dao.UserInfoDao;


public class DataManage {
	private static ApplicationContext instance = null;
	
	/**
	 * new a XmlApplicationContext object and make it be singleton
	 * 
	 * @return instance
	 */
	private static ApplicationContext getXML() {
		if (instance == null) {
			instance = new ClassPathXmlApplicationContext(
					"applicationContext-beans.xml");
		}
		return instance;
	}
	
	/**
	 * get the list of the current page's user information
	 * @param pageNo 
	 * @param pageSize 
	 * @return List<UserInfo>
	 */
	public static List<UserInfo> getUserList(Integer pageNo, Integer pageSize) {
		List<UserInfo> list = new ArrayList<UserInfo>();
		ApplicationContext actx = getXML();
		UserInfoDao ud = (UserInfoDao) actx.getBean("userInfoDao");

		String query = "from UserInfo u order by u.id desc";

		list = ud.findUserInfo(query, pageNo, pageSize);
		return list;
	}
	
	/**
	 * get the total size of user list
	 * @return Integer
	 */
	public static Integer getUserListSize() {
		
		ApplicationContext actx = getXML();
		UserInfoDao ud = (UserInfoDao) actx.getBean("userInfoDao");

		String query = "from UserInfo u order by u.id desc";

		Integer total = ud.findUserListSize(query);
		return total;
	}
	
	
	/**
	 * get the list of the login information
	 *
	 * @return List<UserInfo>
	 */
	public static List<Login> getLoginList() {
		List<Login> list = new ArrayList<Login>();
		ApplicationContext actx = getXML();
		LoginDao ld = (LoginDao) actx.getBean("loginDao");

		String query = "from Login l order by l.id desc";

		list = ld.findLoginList(query);
		return list;
	}

	/**
	 * judge the username and password is valid or not
	 *
	 * @return String
	 */
	public static String isValid(String userName, String password) {
		//flag=2表示用户名不存在
		String flag = "2";
        List<Login> loginList = getLoginList();
    	
        //flag = 1表示用户名或密码为空
        if(userName == null||password == null||userName.equals("")||password.equals(""))
        {
        	flag = "1";
        }
        else
        {
        	for(int i = 0;i < loginList.size();i++)
        	{
        		Login l = loginList.get(i);
        		//若用户输入的用户名存在,再判断输入的密码是否与该用户名匹配
        		if(userName.equals(l.getUserName()))
        		{
        			if(password.equals(l.getPassword())){
        				//flag = 0表示用户名和密码匹配
            			flag = "0";
            		}
        			else{
        				//flag = 3表示用户名正确,但和密码不匹配
            			flag = "3";
            		}
        			break;	
        		}
        	}
        }
    	return flag;
	}
}

 ActionUserList.java

package cn.ict.mp.webservice;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.struts2.ServletActionContext;


import cn.ict.mp.bean.UserInfo;
import cn.ict.mp.service.DataManage;

import com.opensymphony.xwork2.ActionSupport;

public class ActionUserList extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6652169340293756648L;

	private Map<String, Object> dataMap = new HashMap<String, Object>();

	public Map<String, Object> getDataMap() {
		return dataMap;
	}

	private Integer pageNo;
	private Integer totalSize;
	private Integer totalPage;
    private Integer pageSize = 5;
	
    public Integer getTotalPage() {
		return totalPage;
	}

    public Integer getPageNo() {
		return pageNo;
	}

    public void setPageNo(Integer pageNo) {
		this.pageNo = pageNo;
	}
    
    public String execute() throws Exception {

		/**
		 * 定义action返回格式
		 */
		ServletActionContext.getResponse().setContentType("application/json;charset=UTF-8");
		ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
        
		//分页显示用户信息列表
		List<UserInfo> dataList = DataManage.getUserList(pageNo, pageSize);
		totalSize = DataManage.getUserListSize();
		
		//总页数向上取整
		totalPage = (int)Math.ceil((double)totalSize/pageSize);
		
		this.dataMap.put("userList", dataList);
		return SUCCESS;
	}
}

 user.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="resources/css/user.css" />
<title>用户信息列表</title>

</head>

<body>
<div class="pages">
  <div class="header">
    	<div id="title"></div>
        <div class="mes-1"></div>
        <!-- 点击“推送消息”图标时跳转至推送消息页面 -->
        <div><a href = "http://localhost:8082/Message/sendMessageindex" class="mes-2"></a></div>
        <div class="mes-3"></div>
        <div class="mes-4"></div>
        <div class="img-h"></div>
  </div>
  
  <div id="userlist-t">
  	<div id="state"></div>
    <div id="userID"></div>
    <div id="name"></div>
    <div id="posi"></div>
    <div id="email"></div>
    <div id="client"></div>
    <div id="ip"></div>
    <div id="time"></div>
  </div>
  
  <div id="userlist-b"></div>
   <table border="1" width="50%" cellpadding="0" cellspacing="0" style="margin:10% 0 0 20%">  
        <tr style="background-color: yellow"> 
             
            <td>appType</td>
            <td>userId</td>  
            <td>userName</td>  
            <td>type</td>  
            <td>email</td> 
            <td>client</td>  
            <td>clientIp</td>  
            <td>createddate</td>  
        </tr> 
        <!-- 遍历userlist获取当前页用户信息列表 (其中dataMap是ActionUserList返回的HashMap对象)--> 
        <s:iterator value="dataMap" id="column">  
            <s:set var="total" name="total" value="#column.value.size"/>  
            <s:iterator value="#column.value" id="col" status="st">  
            <tr>  
                <s:if test="#st.first"></s:if> 
                <td><s:property value="appType"/></td>  
                <td><s:property value="userId"/></td>  
                <td><s:property value="userName"/></td>  
                <td><s:property value="type"/></td>  
                <td><s:property value="email"/></td>  
                <td><s:property value="client"/></td>  
                <td><s:property value="clientIp"/></td>  
                <td><s:property value="createddate"/></td> 
            </tr>  
            </s:iterator>  
        </s:iterator>  
      </table> 
      
      <!-- 页码跳转实现 -->
     <script type="text/javascript">
     //用户信息总页数
     var size=parseInt(<s:property value="totalPage"/>);
     //第一页
     function goFirst(){
         goPage(1);
    }
   //上一页
     function goPrevious(){
     goPage(parseInt(document.all.item("pagenumber").value)-1);
     }
    //下一页
    function goNext(){
    	goPage(parseInt(document.all.item("pagenumber").value)+1);
    }
    //最后一页
    function goLast(){
    	goPage(size);
	}
 
    //进入页号为pageNumber的页面
    function goPage(pagenumber){
    	if(pagenumber<1) {alert("到了首页");return;}
        if(pagenumber>size) {alert("到了最后一页");return;}
        window.location.href="http://localhost:8082/Message/userList?pageNo="+pagenumber;
   }
   </script>
   
   <!-- 这里设置一个隐藏标签,其值为“当前页数 ”-->
   <input type="hidden" name="pagenumber" value="<s:property value="pageNo"/>"/>
   
   <!-- 页码跳转链接 -->
   <div class="page">
   <a  href="javascript:goFirst()">第一页</a>
   <a  href="javascript:goPrevious()">上一页</a>
       第<s:property value="pageNo"/>页
    <a href="javascript:goNext()">下一页</a>
    <a  href="javascript:goLast()">最后一页</a>
    </div>
    
    <div id="foot">
    联系我们: 010-62600237@@liangchen@ict.ac.cn
  </div>
</div>
</body>
</html>

 struts.xml

<action name="userList" class="cn.ict.mp.webservice.ActionUserList" method="execute">
			<result name="success">/user.jsp</result>
		</action>

 

分享到:
评论

相关推荐

    实现对List的分页

    本示例主要讲解如何利用List接口的获取子List方法来实现对List的分页功能。这个过程涉及到Java集合框架的理解、数据范围的计算以及如何构建分页模型。 首先,我们需要理解Java中的List接口。List是Java集合框架的一...

    html前端动态获取后端数据显示到表格,实现分页显示

    html前端获取后端js的数据,实现到html表格,并且实现表格分页显示,分页显示原理是要显示那一页数据就从后端获取需要显示页的数据,不会一次性获取全部数据,减小流前端的压力。后端使用js+express,读取csv文件...

    list 假分页的demo

    "假分页"(也称为虚拟分页)是一种优化策略,它并不真正地从数据库或其他数据源获取每一页的数据,而是将整个数据集一次性加载到内存中,然后在客户端进行分页操作。这种方法在数据量较小且可以一次性加载的情况下...

    MFC的ListControl控件分页程序

    如果需要,从数据源中获取下一页的数据并添加到ListControl中。 4. 事件处理:处理LVN_SCROLL消息,以检测用户的滚动操作。同时,需要监听WM_VSCROLL和WM_HSCROLL消息,以便在用户滚动时触发分页逻辑。 5. 添加、...

    Android-List分页加载

    本篇将深入探讨Android中实现List分页加载的技术原理、常见方法以及最佳实践。 一、分页加载基础概念 分页加载,也称为增量加载或惰性加载,是指在用户滚动列表到接近底部时,动态加载更多的数据。这样避免了首次...

    分页插件list版

    下面将详细介绍这个分页插件的工作原理、使用方法以及可能涉及到的技术点。 一、工作原理 分页插件的核心思想是通过计算总页数,然后为每一页的数据生成相应的链接或者按钮,用户可以通过点击这些链接或按钮来切换...

    分页控件和List绑定排序

    在本例中,分页控件与List对象绑定,意味着当用户在分页控件中操作时,会触发相应的请求,获取对应页的数据并填充到列表中。 1. **数据绑定**:这是将服务器端数据与前端界面元素关联的技术,使得数据的改变能实时...

    分页显示数据列表

    在IT行业中,分页显示数据列表是一个常见的需求,特别是在网页应用和...总之,分页显示数据列表是数据库驱动的Web应用中不可或缺的一部分,它涉及到数据库操作、数据传输、服务器端和客户端的页面渲染等多个环节。

    JSP实现将数据分页显示类

    在这个场景下,我们讨论的是如何使用JSP来实现数据的分页显示。分页是大型Web应用程序中常见的功能,它有助于提高用户体验,避免一次性加载大量数据导致页面响应变慢。下面将详细解释分页的基本思想和实现步骤。 1....

    list分页代码

    ### List分页技术详解 #### 一、引言 在数据处理过程中,特别是涉及到大量数据展示时,分页是一项常见的需求。例如,在网页上显示文章列表、商品信息等,为了提高用户体验并减轻服务器负担,通常会采用分页的方式...

    JAVA和JSP分页显示实例

    本实例将介绍如何利用Java和JSP实现一个简单的分页显示功能。 首先,我们需要理解分页的基本原理。分页通常涉及到两个关键参数:当前页码(currentPage)和每页显示的条目数量(pageSize)。通过这两个参数,我们...

    C#datagridview分页显示

    这时,分页显示就显得尤为重要。分页技术能有效地解决这个问题,它将大量数据分成多个小部分,每次只加载一部分到界面中,从而提高应用的响应速度和用户交互体验。 在C#中实现DataGridView的分页显示,主要涉及以下...

    ListView分页显示上一页和下一页

    "ListView分页显示上一页和下一页"这一主题,就是讨论如何实现ListView在用户滚动到列表底部时自动加载下一页数据,同时提供上一页的切换功能。 一、分页原理 分页的基本思想是将大量数据分为多个小部分(页)来...

    objectList分页程序

    在这个“ObjectList分页程序”中,我们主要探讨的是如何为ObjectList控件添加分页功能,以便用户可以更有效地浏览大量数据,而不会一次性加载所有记录,从而提高页面性能和用户体验。 分页是Web开发中的一个关键...

    SSH整合开发中的分页显示

    在SSH(Spring、Struts2和Hibernate)框架的整合开发中,分页显示是一个常见的需求,它能够提高用户体验,使得大量数据的展示更加有序和高效。以下是对SSH整合开发中分页显示的详细说明。 首先,我们需要在DAO层...

    jsp分页显示 动态显示

    2. **Servlet处理**:Servlet接收到请求后,处理分页参数,与数据库进行交互,并将查询结果封装成对象,如List或Map。 3. **JSP展示**:Servlet将数据传递给JSP页面,JSP使用JSTL(JavaServer Pages Standard Tag ...

    分页显示方法

    在本篇文章中,我们将详细介绍如何在基于Struts框架的项目中实现分页显示功能。Struts框架作为MVC(Model-View-Controller)架构模式的一个经典实现,广泛应用于Java Web开发中。分页显示是提高用户体验、减少服务器...

    List集合分页.7z

    在大型应用中,数据通常需要进行分页显示,以提高用户体验和系统性能。本实例将详细讲解如何在C#中实现List集合的分页功能,并动态添加用户控件来展示数据,同时利用委托返回底标,实现对List集合的有效操作。 首先...

    JSP页面数据分页显示文档与示例

    在B/S架构的应用程序中,数据分页是常见的功能,特别是在处理大量数据时,为了提高用户体验,我们需要将数据分成多个页面进行展示。...希望这些信息能帮助你更好地理解和应用JSP页面数据分页显示。

    list分页(包含怎么调用分页的例子)

    list的分页 import java.util.ArrayList; import java.util.List; import com.jsp.vo.Client; /** * PageBean * * @author apple * */ public class Page { private int currentPage; // 当前页数 ...

Global site tag (gtag.js) - Google Analytics