• Struts+Hibernate+jsp页面 实现分页


    dao层数据库代码:

    复制代码
    package com.hanqi.dao;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    
    import com.hanqi.utility.USer;
    
    public class USerDAO 
    {
            private Configuration cfg = null ;
            private ServiceRegistry sr = null ;
            
            private SessionFactory sf = null ;
            private Session se = null ;
            Transaction ts = null ;
            
            
            public USerDAO()
            {
                //初始化Hibernate
                cfg = new Configuration().configure() ;
                
                sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build() ;
                
            }
            
            public void init()
            {
                sf = cfg.buildSessionFactory(sr) ;
                
                se = sf.openSession() ;
                
                ts = se.beginTransaction() ;
            }
            
            
            public void destory()
            {
                ts.commit() ; 
                
                se.close() ;
                
                sf.close() ; 
            }
            
            
            
            //查询列表
            public List<USer> getAll(int page)
            {
                List<USer> list = new ArrayList<>() ;
                
                init() ;
                
                 //设置每页两行及起始页
                list = se.createQuery("from USer").setMaxResults(2)
                            .setFirstResult((page-1)*2).list() ;
                
                destory();
                
                return list;
            }
    }
    复制代码

    接下来就是jsp页面,这里通过a标签的get方式传递页码

    复制代码
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <a href="addUSer">添加用户</a>
    <br><br>
    <a href="selectUSer?pages=1" >用户列表</a>
    </body>
    </html>
    复制代码

    跳转到显示界面

    复制代码
     1 <%@page import="com.hanqi.utility.USer"%>
     2 <%@page import="java.util.List"%>
     3 <%@ page language="java" contentType="text/html; charset=UTF-8"
     4     pageEncoding="UTF-8"%>
     5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     6 <html>
     7 <head>
     8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     9 <title>Insert title here</title>
    10 </head>
    11 <body>
    12 <%
    13 
    14 List<USer> list = (List<USer>)request.getAttribute("selectuser") ;
    15 
    16 for(USer us : list )
    17 {
    18     out.print(us + "<a href='deleteuser?user_id="+us.getUser_id()+"'>    【删除】</a>"
    19                         +"<a href='modify?userid="+us.getUser_id()+"'>    【修改】</a>"
    20                             +"<br>") ;
    21 }
    22 int pages = Integer.parseInt(request.getParameter("pages")) ;
    23 
    24 %>
    25 
    26 <% if(list.size()==0){response.getWriter().write("页码超出范围") ;
    27                                 response.setHeader("refresh", "3;url=selectUSer?pages=1") ;}else{ %>
    28 <%%>
    29 <a href="selectUSer?pages=<%=pages-1%>">上一页</a>
    30 <a href="selectUSer?pages=<%=pages+1%>">下一页</a>
    31 <%} %>
    32 </body>
    33 </html>
    复制代码

    Struts文件配置

    复制代码
    1 <!-- 查询全部 -->
    2         <action name="selectUSer" class="com.hanqi.action.USerAction" method="selectUSer">
    3         
    4                 <result name="fail">/WEB-INF/pages/fail.jsp</result>
    5         
    6                 <result name="success">/WEB-INF/pages/selectUSer.jsp</result>
    7         
    8         </action>
    复制代码

    service层方法

    复制代码
    public String selectUSer()
        {
            String rtn = "fail" ;
            
            try
            {//得到原生request
                HttpServletRequest hsr = ServletActionContext.getRequest() ;
                
                int page = Integer.parseInt(hsr.getParameter("pages")) ;
                
                //page = Integer.parseInt(hsr.getParameter("pagess")) ;
                //调用查询的方法
                List<USer> list = new UserService().getAll(page);
                
                hsr.setAttribute("pages", page+1);
                
                hsr.setAttribute("selectuser", list);
            
                rtn = "success" ;
            }catch(Exception e)
            {
                e.printStackTrace();
            }
            
            return rtn;
        }
    复制代码
     

    页码超出时,提示错误(通过jsp的List来判断)Hibernate提供的方法返回的List.size()为行数(最后一页可能少于行数),若为零则没有数据即可判断

  • 相关阅读:
    vscode Nodejs 调试 相关总结
    编程语言中的foo,bar到底是什么
    带T和带Z的相关时间是什么 及关于时间的一些知识
    自定义Firefox的 "切换previous标签页"快捷键, 增加"切回last标签页"快捷键
    开始使用Firefox
    Fork-Join 原理深入分析(二)
    Fork-Join分治编程介绍(一)
    Executor框架(七)Future 接口、FutureTask类
    Executor框架(六)CompletionService 接口
    Executor框架(五)Executors工厂类
  • 原文地址:https://www.cnblogs.com/smile-dream/p/6108509.html
Copyright © 2020-2023  润新知