用struts2怎么写的分页,谢谢高手解答

解决方案 »

  1.   

    DBConnection.java类package com.net.dao;
    import java.sql.*;
    public class DBConnection {
    private Connection cn;
    public DBConnection(Connection cn) {
    super();
    this.cn = cn;
    }
    public DBConnection() {
    super();
    // TODO Auto-generated constructor stub
    }
    private Connection getConnection(){
    try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    cn= DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=db_book","sa","123");
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return cn;
    }
    public ResultSet getResultSet(String sql,Object args[]){
    try {
    PreparedStatement ps=this.getConnection().prepareStatement(sql);
    if(args!=null){
    for(int i=0;i<args.length;i++){
    ps.setObject(i+1,args[i]);
    }
    }
    return ps.executeQuery();

    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    return null;
    }
    }
    DBcommend.java类package com.net.dao;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;import com.net.Entity.books;public class DBcommend { public List getlist(int pid){
    List list=new ArrayList();
    DBConnection db=new DBConnection();
    books book=null;
    try {
    int cnt=(pid-1)*books.pagetol;
    String sql="select top (?) * from book where bookid not in(select top (?) bookid from book order by bookid desc) order by bookid desc";
    ResultSet rs=db.getResultSet(sql, new Object[]{books.pagetol,cnt});
    while (rs.next()) {
    book=new books();
    book.setBookid(rs.getInt("bookid"));
    book.setBookname(rs.getString("bookname"));
    book.setOuthor(rs.getString("bookouthor"));
    list.add(book);
    }
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    return list;
    }
    public int getcount(){
    int count=0;
    DBConnection db=new DBConnection();
    try {
    String sql="select count(*)  from book";
    ResultSet rs=db.getResultSet(sql,null);
    rs.next();
    count=rs.getInt(1);
    } catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
    }
    return count;
    }
    }
      数据库字段
    books.java类
    package com.net.Entity;public class books {
    public static final int pagetol=5;
    private int bookid;
    private String bookname;
    private String outhor;
    public int getBookid() {
    return bookid;
    }
    public void setBookid(int bookid) {
    this.bookid = bookid;
    }
    public String getBookname() {
    return bookname;
    }
    public void setBookname(String bookname) {
    this.bookname = bookname;
    }
    public String getOuthor() {
    return outhor;
    }
    public void setOuthor(String outhor) {
    this.outhor = outhor;
    }}
    Pageinfo.java  分页属性package com.net.Entity;public class Pageinfo {
    private int pid;
    private int tallPage;
    private int count ;
    private String up;
    private String down;
    public int getPid() {
    return pid;
    }
    public void setPid(int pid) {
    this.pid = pid;
    }
    public int getTallPage() {
    return tallPage;
    }
    public void setTallPage(int tallPage) {
    this.tallPage = tallPage;
    }
    public int getCount() {
    return count;
    }
    public void setCount(int count) {
    this.count = count;
    }
    public String getUp() {
    return up;
    }
    public void setUp(String up) {
    this.up = up;
    }
    public String getDown() {
    return down;
    }
    public void setDown(String down) {
    this.down = down;
    }
    }
    BookAction.java        (Action)类
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.yourcompany.struts.action;import java.util.List;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;import com.net.Entity.Pageinfo;
    import com.net.Entity.books;
    import com.net.dao.DBConnection;
    import com.net.dao.DBcommend;
    public class BookAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    String pid1=request.getParameter("id");
    if(pid1==null || pid1.equals("")){
    pid1="1";
    }
    int pid=Integer.parseInt(pid1);
    DBcommend db=new DBcommend();
    Pageinfo page=new Pageinfo();
    List list=db.getlist(pid);
    int count=db.getcount();
    System.out.println(count);
    int tollPage=(int)Math.ceil(count*1.0/books.pagetol);
    page.setCount(count);
    page.setTallPage(tollPage);
    page.setPid(pid);
    String up="javascript:;";
    String down="javascript:;";
    if(pid==1 && tollPage>1){
    down="book.do?id="+(pid+1);
    }else if(tollPage>1 && pid==tollPage){
    up="book.do?id="+(pid-1);
    }else if(pid>1 && pid<tollPage){
    up="book.do?id="+(pid-1);
    down="book.do?id="+(pid+1);
    }
    page.setUp(up);
    page.setDown(down);
    request.setAttribute("list", list);
    request.setAttribute("page", page);
    return mapping.findForward("index");
    }
    }struts-config.xml  配置文件
    <?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 />
      <global-exceptions />
      <global-forwards />
      <action-mappings >
        <action path="/book" type="com.yourcompany.struts.action.BookAction">
          <forward name="index" path="/index.jsp" />
        </action>  </action-mappings>  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
    </struts-config>
    index.jsp jsp页面<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
      <head>
        <title>My JSP 'index.jsp' starting page</title>  </head>
      
      <body>
       <table border="1">
           <tr>
        <td>序列</td>
        <td>书名</td>
        <td>作者</td>
        </tr>
        <c:forEach items="${requestScope.list}" var="li">
        <tr>
        <td>${li.bookid }</td>
        <td>${li.bookname }</td>
        <td>${li.outhor }</td>
        </tr>
        </c:forEach>
       </table>
        <a href="book.do">首页</a>
        <a href="${requestScope.page.up}">上一页</a>
        <a href="${requestScope.page.down }">下一页</a>
        <a href="book.do?id=${requestScope.page.tallPage}">尾页</a>
        当前页${requestScope.page.pid }/${requestScope.page.tallPage } &nbsp;&nbsp;&nbsp;共有记录&nbsp;${requestScope.page.count }&nbsp;条
      </body>
    </html>
    接复制 数据库
     数据库名:db_book;
     表名:book;
     字段1 :bookid;
     字段2:bookname;
     字段3:outhor;以上是分页全部代码 直接复制 加分吧亲手帮你敲的?
      

  2.   

    额 分页?这个不是要用到数据库吗?为什么用structs实现分页?不理解~  
    请高手告诉下啊
      

  3.   

    分页貌似是数据库的事情吧。。关 struts什么事啊。。数据库查询出了就直接展现在jsp中不就好了。。
      

  4.   

    不好意思啊,分页应该可以用struts标签吧
      

  5.   

    用标签的话页面加载就会减少,减少缓冲等待时间。用Struts标签的话,大部分只要写入配置文件进行配置就好了吧?也能增加可复用性。
      

  6.   

    分页的核心在于sql语句,三层嵌套查询方能完成
      

  7.   

    可以在sturuts2.0中写一个Dao用于操作数据库,在专门用sql语句写一个分写算法就行了分页SQL语句:
    比如:第三页的数据:
    select top 10 * from 表名 where id not in (select  top  30 * from 表名 order by id desc)
      

  8.   

    分页的话最好用hibernate呀。 struts2只要传2个参数就行了 一个 起始 start 一个一页最多显示多少 max
      

  9.   

    分页的话传个最大页出来...然后判断一下当前页...然后在适当的显示页的下标就好了么...
    Hibernate把数据取出来设置firstResult和maxResult就好了吧...