`
jiayj198609
  • 浏览: 150081 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

偷窥struts+hibernate分页(第一种方法)

阅读更多
根据原文有点改动。原文忘记在那里看到了。看到提个醒


新建表

DROP DATABASE IF EXISTS `wjcms`;
CREATE DATABASE `wjcms` /*!40100 DEFAULT CHARACTER SET gb2312 */;
USE `wjcms`;

#
# Table structure for table t_article
#

CREATE TABLE `t_article` (
  `a_id` int(11) NOT NULL auto_increment,
  `a_sort` int(11) NOT NULL default '0',
  `a_title` varchar(50) default NULL,
  `a_body` text,
  `a_author` varchar(11) default '',
  `a_hit` int(11) NOT NULL default '0',
  `c_id` int(11) default '0',
  `a_date` varchar(20) default NULL,
  PRIMARY KEY  (`a_id`)
)

实体

public class articleVO {
    private int a_id;
    private int a_sort;
    private int a_hit;
    private int c_id;
    private String a_title;
    private String a_body;
    private String a_author;
    private String a_date;
    // getter setter


新建page.java

package page.dal;

public class page {
    private int totalRows; //总行数
    private int pageSize = 10; //每页显示的行数
    private int currentPage; //当前页号
    private int totalPages; //总页数
    private int startRow; //当前页在数据库中的起始行

    public page(int _totalRows) {
     totalRows = _totalRows;
     totalPages=totalRows/pageSize;
     int mod=totalRows%pageSize;
     if(mod>0){
       totalPages++;
     }
     currentPage = 1;
     startRow = 0;
   }

   public int getStartRow() {
     return startRow;
   }

   public int getTotalPages() {
     return totalPages;
   }

   public int getCurrentPage() {
     return currentPage;
   }

   public int getPageSize() {
     return pageSize;
   }

   public void setTotalRows(int totalRows) {
     this.totalRows = totalRows;
   }

   public void setStartRow(int startRow) {
     this.startRow = startRow;
   }

   public void setTotalPages(int totalPages) {
     this.totalPages = totalPages;
   }

   public void setCurrentPage(int currentPage) {
     this.currentPage = currentPage;
   }

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

   public int getTotalRows() {
     return totalRows;
   }

   public void first() {
     currentPage = 1;
     startRow = 0;
   }

   public void previous() {
     if (currentPage == 1) {
       return;
     }
     currentPage--;
     startRow = (currentPage - 1) * pageSize;
   }

   public void next() {
     if (currentPage < totalPages) {
       currentPage++;
     }
     startRow = (currentPage - 1) * pageSize;
   }

   public void last() {
     currentPage = totalPages;
     startRow = (currentPage - 1) * pageSize;
   }

   public void refresh(int _currentPage) {
     currentPage = _currentPage;
     if (currentPage > totalPages) {
       last();
     }
   }

}



新建 pageHelp.java

package page.dal;
import javax.servlet.http.*;

public class PagerHelp {
    public static page getPager(HttpServletRequest httpServletRequest,int totalRows) {

     //定义pager对象,用于传到页面
     page pager = new page(totalRows);

     //从Request对象中获取当前页号
     String currentPage = httpServletRequest.getParameter("currentPage");

     //如果当前页号为空,表示为首次查询该页
     //如果不为空,则刷新page对象,输入当前页号等信息
     if (currentPage != null) {
       pager.refresh(Integer.parseInt(currentPage));
     }

     //获取当前执行的方法,首页,前一页,后一页,尾页。
     String pagerMethod = httpServletRequest.getParameter("pageMethod");

     if (pagerMethod != null) {
       if (pagerMethod.equals("first")) {
         pager.first();
       } else if (pagerMethod.equals("previous")) {
         pager.previous();
       } else if (pagerMethod.equals("next")) {
         pager.next();
       } else if (pagerMethod.equals("last")) {
         pager.last();
       }
     }
     return pager;
   }

}



新建 util.java
package page.dal;
import net.sf.hibernate.Query;
import net.sf.hibernate.cfg.Configuration;
import java.util.List;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Session;
import java.util.*;
public class util {
    public util() {
    }
     private Session ss=null;
    public Session getSession()
  {
      //  Configuration config=null;
      SessionFactory sessionFactory;
      try {
          Configuration cfg = new Configuration();
          sessionFactory = cfg.addClass(articleVO.class).
                           buildSessionFactory();
          // SessionFactory sessionFactory=config.buildSessionFactory();
          ss = sessionFactory.openSession();
          return ss;
      } catch (HibernateException ex) {
          System.out.print("getsession出错了。。" + ex.getMessage());
          return null;
      }
  }

  public int getCount()
  {
      String sql="select count(*) from articleVO" ;
      this.getSession();

    try {
     // ss.createQuery("select count(a)as cont from articleVO a ");
      int rows= ((Integer) ss.iterate(sql).next()).intValue();
      ss.flush();
      return rows;

    } catch (HibernateException ex) {
        System.out.print("ex::"+ex.getMessage());
        return 0;
    }


  }

  public Collection  getList(int pagesize,int currow) throws HibernateException {
      Collection vehicleList = null;
      this.getSession();
      Query q=ss.createQuery("from articleVO");
      q.setFirstResult(currow);
      q.setMaxResults(pagesize);
      vehicleList=q.list();
      ss.flush();
      return vehicleList;
  }

}


新建 struts  PageAction.java


package page.dal;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import page.dal.*;
import java.util.*;
import net.sf.hibernate.*;

public class pageAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
        Collection clInfos = null;//用于输出到页面的记录集合
        int totalRows;//记录总行数
        util dal=new util();
        totalRows=dal.getCount();
        System.out.print("总行数=="+totalRows);
        page p=PagerHelp.getPager(request,totalRows);
        try {
            clInfos = dal.getList(p.getPageSize(), p.getStartRow());

        } catch (HibernateException ex) {
            System.out.print("action里的错误="+ex.getMessage());
        }
        request.setAttribute("page",p);
        request.setAttribute("list",clInfos);
        return mapping.findForward("page");
        //pageForm pageForm = (pageForm) form;
      //  throw new java.lang.UnsupportedOperationException(
              //  "Method $execute() not yet implemented.");
    }
}


前台页面

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head>
<title>
page
</title>
</head>
<body>
<table align="center" border="2">
<tr>
<th>a_title</th>
<th>a_body</th>
<th>a_a_date</th>
<th>a_author</th>
</tr>

<logic:iterate id="listd" name="list">
<tr>
<td>
<bean:write name="listd" property="a_title"/>
</td>
<td>
<bean:write name="listd" property="a_author"/>
</td>
<td>
<bean:write name="listd" property="a_date"/>
</td>
<td>
<bean:write name="listd" property="a_date"/>
</td>
</tr>
</logic:iterate>

</table>

第<bean:write name="page" property="currentPage"/>页
共<bean:write name="page" property="totalPages" />页
<html:link action="/pageAction.do?pageMethod=first"
paramName="page" paramProperty="currentPage" paramId="currentPage">首页</html:link>
   <html:link action="/pageAction.do?pageMethod=previous"
paramName="page" paramProperty="currentPage" paramId="currentPage">上一页</html:link>
   <html:link action="/pageAction.do?pageMethod=next"
paramName="page" paramProperty="currentPage" paramId="currentPage">下一页</html:link>

   <html:link action="/pageAction.do?pageMethod=last"
paramName="page" paramProperty="currentPage" paramId="currentPage">尾页</html:link>
</body>
</html:html>



启动浏览 pageAction.do  运行OK。



****************************************************************************************


配置文件


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>

    <class name="page.dal.articleVO" table="t_article" >


    <id name="a_id" column="a_id" unsaved-value="0" >
      <generator class="native"/>
</id>
     <property name="c_id"    column="c_id"/>
     <property name="a_title" column="a_title"/>
     <property name="a_sort"  column="a_sort"/>
     <property name="a_date"  column="a_date"/>
     <property name="a_body"  column="a_body"/>
     <property name="a_hit"   column="a_hit"/>
     <property name="a_author" column="a_author"/>
  
   
  </class>

</hibernate-mapping>

hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.url jdbc:mysql://localhost:3306/wjcms
hibernate.connection.username root
hibernate.connection.password
hibernate.connection.pool_size 1
hibernate.proxool.pool_alias pool1
hibernate.show_sql true
hibernate.max_fetch_depth 1
hibernate.cache.use_query_cache true

分享到:
评论

相关推荐

    USB摄像头偷窥终结者(防止别人偷窥你

    标题中的“USB摄像头偷窥终结者”是一款专为保护个人隐私设计的安全软件,它主要针对的是USB摄像头可能带来的隐私泄露风险。在当前数字化社会中,USB摄像头被广泛应用于电脑、笔记本、网络摄像头等设备,然而,这也...

    U盘偷窥者主程序

    【U盘偷窥者主程序】是一种特殊类型的恶意软件,主要设计用于在用户不知情的情况下监视和窃取通过U盘(USB闪存驱动器)进行的数据传输。这种类型的恶意程序通常利用U盘的便捷性和普遍性,通过伪装成正常文件或利用...

    桌面偷窥器

    【标题】"桌面偷窥器"所提及的是一款软件,主要功能是远程监控或查看他人的桌面活动。这种类型的软件通常被用于企业管理员对员工的工作监控,或者在技术支持场景下远程协助用户解决问题。然而,未经同意的个人使用...

    偷窥者远程控制软件的VC源代码

    在IT行业,远程控制软件是一种能够允许用户通过网络对另一台计算机进行操作的应用程序。这类软件通常用于系统管理、技术支持或恶意活动,如黑客攻击。在这里,我们关注的是合法的开发和理解远程控制软件的工作原理。...

    鼠标键盘记录偷窥器鼠标键盘记录偷窥器

    鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器鼠标键盘记录偷窥器

    CSS3可爱偷窥小狗动画代码.zip

    在本资源中,"CSS3可爱偷窥小狗动画代码.zip"是一个包含HTML和CSS源码的压缩包,用于创建一个动态的、具有趣味性的“可爱偷窥小狗”动画效果。这个动画可能展示了一只小狗从屏幕边缘探头探脑的形象,为网站增添互动...

    易语言密码文本偷窥器

    易语言是一种以“易”为理念,面向初学者的中文编程语言。它采用直观的中文语法,降低了编程的学习门槛,使得非计算机专业背景的人也能快速上手编程。在本项目中,开发者使用易语言编写了这个密码文本偷窥器的源代码...

    密码偷窥器--可以显示密码框内容的软件

    1. **密码安全**:在互联网安全中,密码是保护用户数据的第一道防线。通常,密码输入框会隐藏实际字符以防止他人窥探。因此,任何能揭示这些隐藏字符的工具都可能对密码安全构成威胁。 2. **钩子技术**:“Hook”在...

    U盘偷窥者升级版加入隐藏模式

    1. **恶意软件**:U盘偷窥者是一种可能的恶意软件,通常这类软件设计用于非法监控用户活动,窃取数据,或者在用户不知情的情况下复制文件。它们可能通过U盘等移动存储设备传播,利用人们的日常使用习惯进行感染。 2...

    如何有效防止Java程序源码被人偷窥.doc

    一种常见的方法是使用模糊化技术,通过修改类文件的结构来降低反编译器的理解效果。然而,这种方法的局限在于,熟练的攻击者可以调整反编译器来应对模糊处理,因此并不能完全确保源码的安全。 另一种策略是使用像...

    偷窥各种桌面程序SPwdSpyDemo_Src

    标题 "偷窥各种桌面程序SPwdSpyDemo_Src" 提示我们这可能是一个关于桌面应用程序密码监测或安全漏洞的研究项目。这个项目的源代码可能包含了用于分析、监控或模拟桌面应用程序密码输入过程的代码。描述中同样重复了...

    打倒偷窥者——局域网扫描攻防战归纳.pdf

    打倒偷窥者——局域网扫描攻防战归纳.pdf

    端口扫描软件

    扫描开放的端口,以及如何关闭开放的端口。

    网络端口教程

    内容为网络端口教程的文档 是 exe 格式

    人类最后堡垒将被攻破!GPT读心术来了,能偷窥大脑

    研究人员已经开发出第一种非侵入性的方法来确定内在言语(inner speech)的要点,为不能说话的人提供了一个可能的沟通渠道。 在一项开创性的研究中,科学家们利用类似ChatGPT的生成式预训练转换器(GPT)人工智能模型...

    创建PPT课件章节页的4种方法.docx

    以下是四种创建PPT课件章节页的方法: 1. **黑板素材**: 黑板背景能够唤起人们对传统教学环境的记忆,吸引学员的注意力。可以使用带有教师或相关主题图像的黑板图片,增加视觉冲击力。网络上(如Google和...

    谁在偷窥你的隐私智能家居安全不得不防.pdf

    谁在偷窥你的隐私智能家居安全不得不防.pdf

    偷窥桌面程序和IE浏览器的密码编辑框VC源代码

    这是一个不可多得的工具,它不仅能偷窥各种桌面程序的密码框,还能窥到IE页面中的密码框,这个程序就是本文要介绍的——SuperPasswordSpy++。 关键字:hook,ie,com,钩子,安全上下文

Global site tag (gtag.js) - Google Analytics