`
wangkebin
  • 浏览: 75013 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论
阅读更多

 

     由于项目中分页风格多样化,而分页又是项目中必不可少的,为统一项目分页风格,在上次封装的分页的组件找不到的的情况下,重新封装了一下分页组件,特意分享给大家,也防止再次丢失!

   1.分页html/CSS代码及素材准备

     请参考我的博客《div+css分页条》

         http://wilr.iteye.com/blog/1208045

    2.分页组件实体bean类

package wilr.utils.paging.domain;

import java.io.Serializable;
import java.util.List;
/**
 * @project paging
 * @path wilr.utils.paging.domain
 * @desc SSH版通用分页标签
 * @author Wilr 
 * @QQ:545881075
 * @time 2012-2-28 上午12:01:18
 */
public class Page implements Serializable {

	private static final long serialVersionUID = 1L;
	/**
	 * 每页显示条数 默认显示10条
	 */
	private Integer pageSize = 10;
	/**
	 * 总条数
	 */
	private Integer totalCount = 0;
	/**
	 * 总页数
	 */
	private Integer totalPage = 0;
	/**
	 * 当前页
	 */
	private Integer currentPage = 1;
	/**
	 * 起始索引
	 */
	private Integer startIndex = 0;
	/**
	 * 分页条件
	 */
	private String condition;
	/**
	 * 查询的返回值
	 */
	private List<?> objList;
	/**
	 * 排序
	 */
	private String orderBy;
	/**
	 * 查询对象名称或表名/或查询语句
	 */
	private String objName;
	/**
	 * 需要查询的字段
	 */
	private String queryField;
	
	public Page(Integer totalCount,List<?> objList, Integer currentPage) {
		super();
		this.totalCount = totalCount;
		this.objList = objList;
		this.currentPage = currentPage;
	}

	public Page(Integer pageSize, String condition, List<?> objList,
			String orderBy, String objName) {
		super();
		this.pageSize = pageSize;
		this.condition = condition;
		this.objList = objList;
		this.orderBy = orderBy;
		this.objName = objName;
	}

	public Page(Integer pageSize, String objName) {
		super();
		this.pageSize = pageSize;
		this.objName = objName;
	}
	public Page(){}


	public Integer getPageSize() {
		return pageSize;
	}

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

	public Integer getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(Integer totalCount) {
		this.totalCount = totalCount;
	}
	public Integer getTotalPage() {
		totalPage=totalCount % pageSize == 0 ? (totalCount / pageSize): (totalCount / pageSize + 1);
		return totalPage;
	}

	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}

	public Integer getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(Integer currentPage) {
		if (currentPage <= 0)
			currentPage = 1;
		this.currentPage = currentPage;
	}

	public Integer getStartIndex() {
		startIndex=this.pageSize * (this.currentPage - 1);
		return startIndex;
	}

	public void setStartIndex(Integer startIndex) {
		this.startIndex =startIndex;
	}

	public String getCondition() {
		return condition;
	}

	public void setCondition(String condition) {
		this.condition = condition;
	}

	public List<?> getObjList() {
		return objList;
	}

	public void setObjList(List<?> objList) {
		this.objList = objList;
	}

	public String getOrderBy() {
		return orderBy;
	}

	public void setOrderBy(String orderBy) {
		this.orderBy = orderBy;
	}

	public String getObjName() {
		return objName;
	}

	public void setObjName(String objName) {
		this.objName = objName;
	}
	public String getQueryField() {
		return queryField;
	}

	public void setQueryField(String queryField) {
		this.queryField = queryField;
	}
}
  

   3.标签实现类

 

 

package wilr.utils.paging.taglib;

import java.io.Serializable;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import wilr.utils.paging.domain.Page;

/**
 * @project paging
 * @path wilr.utils.paging.taglib
 * @desc 分页标签
 * @author Wilr
 * @QQ:545881075
 * @time 2012-2-28 上午12:02:21
 */
public class PagingTag extends TagSupport implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 是否显示改变页数下拉框
	 */
	private boolean skipCount = true;
	/**
	 * 是否显示跳页输入框
	 */
	private boolean jumpText = true;
	/**
	 * 是否显示上/下一页按钮
	 */
	private boolean prevPage = true;
	/**
	 * 是否显示首/尾页按钮
	 */
	private boolean startPage = true;
	/**
	 * 是否显示遍历页
	 */
	private boolean forPage = true;
	/**
	 * 是否显示当前页和总页数
	 */
	private boolean showCurAndSum = true;
	/**
	 * 是否启用刷新
	 */
	private boolean refresh=true;
	/**
	 * 分页实体对象
	 */
	private Page page;
	/**
	 *请求URL
	 */
    private String url;
   
	public boolean isSkipCount() {
		return skipCount;
	}

	public void setSkipCount(boolean skipCount) {
		this.skipCount = skipCount;
	}

    
	public boolean isJumpText() {
		return jumpText;
	}

	public void setJumpText(boolean jumpText) {
		this.jumpText = jumpText;
	}

	public boolean isPrevPage() {
		return prevPage;
	}

	public void setPrevPage(boolean prevPage) {
		this.prevPage = prevPage;
	}

	public boolean isStartPage() {
		return startPage;
	}

	public void setStartPage(boolean startPage) {
		this.startPage = startPage;
	}

	public boolean isForPage() {
		return forPage;
	}

	public void setForPage(boolean forPage) {
		this.forPage = forPage;
	}

	public boolean isShowCurAndSum() {
		return showCurAndSum;
	}

	public void setShowCurAndSum(boolean showCurAndSum) {
		this.showCurAndSum = showCurAndSum;
	}
	
	public boolean isRefresh() {
		return refresh;
	}

	public void setRefresh(boolean refresh) {
		this.refresh = refresh;
	}

	public Page getPage() {
		return page;
	}

	public void setPage(Page page) {
		this.page = page;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * 输出分页标签
	 */
	public int doStartTag() throws JspException {
        try {
        	if(page!=null){
        		long currentPage=page.getCurrentPage();   //获得当前页面
        		long totalPage=page.getTotalPage();       //获得总页数
        		StringBuilder builder=new StringBuilder("<script type='text/javascript'>");
        		builder.append("function loadPage(pagenum){var url='"+url+"?page.currentPage='+pagenum;self.location.href=url}");
        		builder.append("function jumpPage(){var jumpPageNum=document.getElementById('jump_page_num').value;");
        		builder.append("if(jumpPageNum.length<=0){alert('请填写要跳转的页面值!');return false;}");
        		builder.append("if(!(/^[1-9]\\d*$/).test(jumpPageNum)){alert('跳转页面值只能填写正整数');return false;}");
        		builder.append("if(jumpPageNum>"+page.getTotalPage()+"){alert('跳转的页数大于总页数!');return false;}");
        		builder.append("var url='"+url+"?page.currentPage='+jumpPageNum;self.location.href=url }");
        		builder.append("function refreshPage(){self.location.href='"+url+"';}");
        		builder.append("</script>");
        		builder.append("<div class='page'><ul>");
        		//如果当前页面为第一页
        		if(currentPage==1){
        			if(startPage)
        				builder.append("<li class='start_off'></li>");
        			if(prevPage)
        				builder.append("<li class='first_off'></li>");
        		}
        		//当前页面不是第一页
        		else{
        			if(startPage)
        				builder.append("<li class='start' onclick='javascript:loadPage(\"1\");'></li>");
        			if(prevPage)
        				builder.append("<li class='first' onclick='javascript:loadPage(\""+(page.getCurrentPage()-1)+"\");'></li>");
        		}
        		//判断是否显示google风格的分页
        		if(forPage && totalPage>0){
        			builder.append("<li>");
             	    builder.append("<div class='pagenumber'>");
             	    builder.append("<ul>");
             	    builder.append("<li class='fleft'></li>");
             	    /**
             	     * 每次只取9页
             	     */
             	    for(long pagenum=1;pagenum<=page.getTotalPage();pagenum++){
             	        if(page.getCurrentPage()<5 && pagenum<10){	
	             	    	if(pagenum==page.getCurrentPage())
	             	    		builder.append("<li class='nowPage' title='第"+pagenum+"页'>"+pagenum+"</li>");
	             	    	else
	             	    		builder.append("<li class='fcenter' title='第"+pagenum+"页'><a href='"+url+"?page.currentPage="+pagenum+"'>"+pagenum+"</a></li>");
             	    	}else{
             	    		//页面大于5以后,当前页位于中间
             	    		if(pagenum>page.getCurrentPage()-5 && pagenum<page.getCurrentPage()+5){
             	    			if(pagenum==page.getCurrentPage())
    	             	    		builder.append("<li class='nowPage' title='第"+pagenum+"页'>"+pagenum+"</li>");
    	             	    	else
    	             	    		builder.append("<li class='fcenter' title='第"+pagenum+"页'><a href='"+url+"?page.currentPage="+pagenum+"'>"+pagenum+"</a></li>");
             	    		}
             	    	}
             	    }
             	    builder.append("<li class='fright'></li>");
	           	    builder.append("</ul>");
	           	    builder.append("</div>");
	           	    builder.append("</li>");
        		}

        		//如果当前页面为尾页
        		if(currentPage==totalPage || totalPage<=0){
        			if(prevPage)
        				builder.append("<li class='next_off'></li>");
        			if(startPage)
        				builder.append("<li class='end_off'></li>");
        			
        		}
        		//当前页面不是尾页
        		else{
        			if(prevPage)
        				builder.append("<li class='next' onclick='javascript:loadPage(\""+(page.getCurrentPage()+1)+"\");'></li>");
        			if(startPage)
        				builder.append("<li class='end' onclick='javascript:loadPage(\""+page.getTotalPage()+"\");'></li>");
        		}
        		/* 先屏蔽
        		//如果启用页面显示页数选择 这里启用5 10 15 20供用户选择
        		if(skipCount){
        			builder.append("<li>");
             	    builder.append("<select class='rounded' name='page.pageSize'");
             	    builder.append("<option value='5'>5条/页</option>");
             	    builder.append("<option value='10' selected='selected'>10条/页</option>");
             	    builder.append("<option value='15'>15条/页</option>");
             	    builder.append("<option value='20'>20条/页</option>");
             	    builder.append("</select>");
             	    builder.append("</li>");
        		}*/
        		//如果启用页面跳转
        	    
        		if(jumpText && totalPage>0){
        	    	builder.append("<li>");
              	    builder.append("<input type='text' size='5' name='page.currentPage' id='jump_page_num' class='rounded jumpInput'>");
              	    builder.append("</li>");
              	    builder.append("<li class='jump' onclick='javascript:jumpPage();'></li>");
        	    }
        	    //如启用总页数显示
        		if(showCurAndSum){
        		    builder.append("<li class='pageInfo'>共<span>"+page.getTotalCount()+"</span>条/共<span>"+page.getTotalPage()+"</span>页</li>");
        		}
        		if(refresh){
        			builder.append("<li class='refresh' title='刷新' onclick='javascript:refreshPage();'></li>");
        		}
        		builder.append("</ul></div>");
        	    super.pageContext.getOut().print(builder.toString());
        	}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SKIP_BODY;
	}

}
 

    4.标签配置

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>w</short-name>
	<uri>http://wilr.iteye.com</uri>
	<display-name>分页通用标签</display-name>
	<tag>
		<name>p</name>
		<tag-class>wilr.utils.paging.taglib.PagingTag</tag-class>
		<attribute>
			<name>skipCount</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否显示条数选择</description>
		</attribute>
		<attribute>
			<name>jumpText</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否显示跳页输入</description>
		</attribute>
		<attribute>
			<name>prevPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否显示上/下一页</description>
		</attribute>
		<attribute>
			<name>startPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否显示首/尾页</description>
		</attribute>
		<attribute>
			<name>forPage</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否使用循环输出页</description>
		</attribute>
		<attribute>
			<name>showCurAndSum</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否显示总页/总条数</description>
		</attribute>
		<attribute>
			<name>refresh</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
			<type>boolean</type>
			<description>是否可以刷新</description>
		</attribute>
		<attribute>
		    <name>url</name>
		    <required>true</required>
		    <rtexprvalue>true</rtexprvalue>
		    <type>String</type>
		    <description>请求URL</description>
		</attribute>
		<attribute>
		    <name>page</name>
		    <required>true</required>
		    <rtexprvalue>true</rtexprvalue>
		    <description>分页对象</description>
		</attribute>
	</tag>
</taglib>

     5.分页数据持久层实例工厂

 

package wilr.utils.paging.factory;
import wilr.utils.paging.domain.Page;

/**
 * @project paging
 * @path wilr.utils.paging.factory
 * @desc 分页组件接口工厂
 * @author Wilr 
 * @QQ:545881075
 * @time 2012-2-29 上午10:08:16
 */
public interface PagingFactory {
	/**
	 * @project paging
	 * @path wilr.utils.paging.factory
	 * @desc 查询对象条数
	 * @author Wilr 
	 * @QQ:545881075
	 * @time 2012-2-29 上午10:08:49
	 * @param page 分页对象
	 * @return
	 */
    public Integer queryObjCount(Page page);
    /**
	 * @project paging
	 * @path wilr.utils.paging.factory
	 * @desc 查询对象
	 * @author Wilr 
	 * @QQ:545881075
	 * @time 2012-2-29 上午10:08:49
	 * @param page 分页对象
	 * @return
	 */
    public Page queryObjList(Page page);
}

     6.分页组件持久层实例工厂实现类(这里采用Spring注解方式,有需求的朋友可以自己修改)

package wilr.utils.paging.factory.impl;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import wilr.utils.paging.domain.Page;
import wilr.utils.paging.factory.PagingFactory;
@Service
@Transactional
public class PagingFactoryImpl implements PagingFactory {
	@Resource SessionFactory factory;
	@Transactional(propagation=Propagation.NOT_SUPPORTED) 
	public Integer queryObjCount(Page page) {
		StringBuffer queryHQL=new StringBuffer("SELECT COUNT(*) FROM "+page.getObjName());
		//如果查询条件不为空
		if(page.getCondition()!=null && !page.getCondition().trim().equals(""))
		    queryHQL.append(" WHERE "+page.getCondition());
		//如果排序不为空
		if(page.getOrderBy()!=null && !page.getOrderBy().trim().equals(""))
		    queryHQL.append(" order by "+page.getOrderBy());
	    return Integer.parseInt(factory.getCurrentSession().createQuery(queryHQL.toString()).uniqueResult().toString());
	}
	@Transactional(propagation=Propagation.NOT_SUPPORTED) 
	public Page queryObjList(Page page) {
		    StringBuffer queryHQL=new StringBuffer();
			if(page.getQueryField()!=null && !page.getQueryField().trim().equals(""))
				queryHQL.append("SELECT "+page.getQueryField()+" FROM "+page.getObjName());
			else
				queryHQL.append("FROM "+page.getObjName());
			if(page.getCondition()!=null && !page.getCondition().trim().equals(""))
				queryHQL.append(" WHERE "+page.getCondition());
			if(page.getOrderBy()!=null)
				queryHQL.append(" order by "+page.getOrderBy());
			System.out.println(queryHQL.toString());
			Query query=factory.getCurrentSession().createQuery(queryHQL.toString());
		    query.setFirstResult(page.getStartIndex());
		    query.setMaxResults(page.getPageSize());
		    page.setTotalCount(this.queryObjCount(page));
		    page.setObjList(query.list());
			return page;
		} 
}
 

    7.Service或Action使用Demo

     7.1 注入分页数据持久层工厂

 

@Resource PagingFactory factory;

 

    7.2 声明分页主键实体对象Page并get set

 private Page page;
 public Page getPage() {return page;}
 public void setPage(Page page) {this.page = page;}
 

    7.3 方法调用

if(page==null)page=new Page();
//对象名称
page.setObjName("Demo t");
//条件
page.setCondition("t.id>0");
//排序
page.setOrderBy("t.id desc");
//每页显示条数(默认10)
page.setPageSize(15);
//查询属性(为空查询所有)
page.setQueryField("t.id,t.name');
//调用工厂获得数据
page=factory.queryObjList(page);
 

    8.页面使用(css相关可参考第1条查看我的博客获得)

    8.1 引入标签

 

 <%@ taglib prefix="w" uri="http://wilr.iteye.com"%>

    8.2 引入CSS 

<link rel="stylesheet" type="text/css" href="${path}/paging/paging.css">
    

    8.3 使用标签

<w:p url="${path}/test!loadDemoList.action" page="${page}"></w:p>

    8.3页面调用数据

<s:if test="page.objList==null || page.objList.size==0">
           无信息!
 </s:if>
  <s:else>
  <s:iterator value="page.objList" id="demo">
       ${demo.id}--${demo.name}
  </s:iterator>
  </s:else>

    需要JSON数据可在Action中如下处理:

  

JSONArray.fromObject(page.getObjList()); 

    

   标签全部结束,将工厂、实体、标签打包,以后就可以通用。呵呵!!!!欢迎大家交流和提出宝贵的意见!!!

   附:标签参数说明:

 

必选参数 
   url:查询列表的action访问路径。 
   page:分页对象。从actiong中得到。

可选参数: 
   forPage:是否显示多页风格(类似google),值:true/false    默认为:true 
   jumpText:是否可以输入跳转页,值:true/false    默认为:true 
   prevPage:是否显示上/下一页,值:true/false    默认为:true 
   prevPage:是否显示上/下一页,值:true/false    默认为:true 
   startPage:是否显示首/尾页,值:true/false    默认为:true 
   showCurAndSum:是否显示总条数和总页数,值:true/false    默认为:true 
   refresh:是否启用刷新,值:true/false    默认为 true


 

4
0
分享到:
评论
10 楼 lqp2012 2012-12-21  
可以发份源码学习下(805406443@qq.com),谢谢
9 楼 datouxiangzi 2012-12-12  
博主求一份源码,谢谢了邮箱 datouxiangzi@163.com
8 楼 gzhgc2010 2012-11-27  
,能给一份源码吗,  邮箱gzhgc2010@163.com  非常感谢!

7 楼 javaxiake 2012-11-14  
请问有完整源码嘛 或者已经打包好的jar 能否发我邮箱 823871571@qq.com 学习一下 我连的oracle没事吧,对了,这个代码任何数据库都通用么?谢谢!
6 楼 zhan19861022 2012-11-13  
您好,求份源码,谢谢 290581396@qq.com
5 楼 zqssei 2012-10-30  
/test!loadDemoList.action
这段是什么意思?
4 楼 wangkebin 2012-10-30  
zqssei 写道
求份源码学习一下 邮箱549834027@qq.com 谢谢

已发
3 楼 wangkebin 2012-10-30  
liuwenfeng554 写道
很不错  请问有完整源码嘛 或者已经打包好的jar 能否发我邮箱 277302106@qq.com 学习一下

已发
2 楼 zqssei 2012-10-29  
求份源码学习一下 邮箱549834027@qq.com 谢谢
1 楼 liuwenfeng554 2012-09-02  
很不错  请问有完整源码嘛 或者已经打包好的jar 能否发我邮箱 277302106@qq.com 学习一下

相关推荐

    JSP通讯录/SSH/带分页/带源码/

    总结,这个"JSP通讯录/SSH/带分页/带源码/"项目展示了如何使用SSH框架开发一个具备分页功能的Web应用,实现了基础的增删改查操作。这对于学习和理解SSH框架的整合以及Java Web开发流程具有很高的参考价值。源码的...

    ssh 分页组件,含使用示例

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

    SSH分页组件

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

    java ssh的分页详解,及详细问题解答

    Java SSH(Struts2、Spring、Hibernate)框架是Java企业级开发中常用的一种技术栈,它结合了这三个组件的优点,提供了强大的MVC架构支持。在处理大数据量时,分页功能是必不可少的,它可以提高应用性能,提升用户...

    java 分页组件

    Java 分页组件是Java开发中常见的一种工具,用于在Web应用程序中实现数据的分页显示。在大型系统中,由于数据量庞大,一次性加载所有数据不仅会影响页面加载速度,也会消耗大量的服务器资源。因此,分页技术应运而生...

    SSH 通用分页插件

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

    struts hibernate spring 分页ssh分页

    综上所述,SSH分页是Java企业级开发中的一个重要技术,它涉及到了Struts的控制层、Hibernate的数据访问层和Spring的整合及服务层,是提升应用性能和用户体验的关键手段之一。通过熟练掌握SSH分页,开发者可以更高效...

    java web中的struts分页组件

    总的来说,理解并掌握Struts中的分页机制对于Java Web开发者来说至关重要,这不仅可以提升应用的用户体验,还能有效提高服务器的运行效率。通过阅读`javaweb分页.txt`文件,您可以更深入地学习和理解这个主题。

    ssh分页经典代码

    在实际开发中,我们还可以考虑使用一些现成的分页组件,如MyBatis的PageHelper插件,它可以简化分页的实现,减少代码量,同时提供了一些额外的优化功能。 综上所述,SSH框架下的分页实现涉及到多个层次的协同工作,...

    SSH分页完整实例

    SSH(Struts、Spring、Hibernate)是Java Web...理解这些组件的协同工作原理,对于开发高效且易于维护的Java Web应用至关重要。在实践中,开发者需要根据具体需求灵活运用这些技术,实现高效、稳定和易用的分页功能。

    很好的一个SSH分页小例子

    总的来说,SSH分页是一个涉及前端交互、后端处理和数据库查询的完整过程,需要协调多个组件协同工作。这个例子是一个很好的学习资源,可以帮助开发者掌握在Java Web应用中实现高效分页的关键技术。

    SSH+Mysql无刷新分页实例

    在IT行业中,SSH和MySQL是两个非常重要的技术组件。SSH(Spring、Struts、Hibernate)是一种常见的Java web开发框架,而MySQL则是一款广泛使用的开源关系型数据库管理系统。在这个"SSH+Mysql无刷新分页实例"中,我们...

    ssh分页完整实例数据库mysql

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

    SSH分页源代码

    在这个"SSH分页源代码"中,我们可以深入理解如何在Java Web应用中实现数据的分页显示。 Spring框架作为整个应用的基石,提供了一个统一的入口点,管理了其他组件的生命周期和依赖关系。在分页场景中,Spring可以...

    ssh框架的java分页代码

    在Java Web开发中,SSH(Struts2、Hibernate、Spring)框架是一个常见的组合,用于构建高效、可维护的Web应用程序。SSH框架集成了MVC设计模式、对象关系映射(ORM)以及依赖注入(DI)和面向切面编程(AOP)。在本...

    ssh分页实例java,ssh,(struts,spring,hibernate)

    **SSH分页实例** 在实际项目中,当数据量较大时,通常需要实现分页展示,以提高用户体验。在SSH框架下,可以利用Struts2的拦截器或者Action方法来实现分页参数的传递,如当前页数和每页记录数。然后在Spring管理的...

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

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

    SSH分页

    SSH,全称是Struts、Hibernate和Spring,是中国乃至全球许多Java Web开发中的经典技术栈。这三种技术分别负责Web层、持久层和应用层的管理,构建出强大的企业级应用解决方案。 Struts是Apache软件基金会的一个开源...

    ssh分页源码

    在这个"ssh分页源码"项目中,开发者已经实现了一套基于这三个框架的分页功能。分页是Web应用中常见的需求,它允许用户浏览大量数据时,一次只显示一部分,提高用户体验并减轻服务器负载。 Struts2在分页中主要负责...

    java中SSH整合最全版本

    本资源"java中SSH整合最全版本"显然包含了这些框架的整合教程或实例,特别提到了"加分页"功能,意味着它可能包含如何在SSH应用中实现分页查询的示例。 Struts2是Apache基金会的一个项目,它提供了强大的Action和...

Global site tag (gtag.js) - Google Analytics