to:syuhans(S玉涵S)
能给我一份么?谢谢了 [email protected]

解决方案 »

  1.   

    没有啊,大侠,我的email是:[email protected]
      

  2.   

    也给我一份,谢谢!
    [email protected]
      

  3.   

    还有我
    [email protected]
    谢谢!
      

  4.   

    to syuhans:
     
      我看了你给我发的,首先,表示感谢,我仔细研究了一下你给我的程序,你的分页的地方是调用了javabean,来取得当前的页数和总记录数。我也这么做了,但是问题是,我每次取得当前页数,都是不变的,都是 1。但是我点击下一页时,到下一页,我认为取得的当前页应该为 2才合理。我试了一下,好像就算我给action传递当前页参数。到下一页时调用javabean得到的当前页,还是初始化bean时候设置的值,还是1,而且我已经把bean的作用域,设置成session了,还是有上述问题。
      

  5.   

    我是采用form来分页,方法有点傻,希望大家不吝指教
    实现PageForm,其成员变量如下:
    currentPage - 当前页数
    lastPage - 最后页标志,=1 表示true,=0 表示false
    pageDirection - 页面方向,其值为"first"、"back"、"next"以及"last",分别表示首页,
                    前页,后页,末页
    totalPage - 总页面数
    totalCount - 总记录数当页面提交后,在actionBean中取出这些值,根据pageDirection的值进行计算,然后在页面中显示
      

  6.   

    我免费提供一个JSPStudio自动生成的分页代码程序:
    wc.java文件:
    package  emptyprj;import org.apache.struts.action.ActionForm;public final class wc extends ActionForm  
    {
              private String  颁布时间;          private String  制度内容;          private String  制度名称;          private int  编号;    //myfiledata;        public int get编号()
            {
                return (this.编号);
            }        public void set编号(int 编号)
            {
                this.编号=编号;
            }
            public String get制度名称()
            {
                return (this.制度名称);
            }        public void set制度名称(String 制度名称)
            {
                this.制度名称=制度名称;
            }
            public String get制度内容()
            {
                return (this.制度内容);
            }        public void set制度内容(String 制度内容)
            {
                this.制度内容=制度内容;
            }
            public String get颁布时间()
            {
                return (this.颁布时间);
            }        public void set颁布时间(String 颁布时间)
            {
                this.颁布时间=颁布时间;
            }
    }
    ---------------------------------------------------------------------
    wcDAO.java文件:
    package  emptyprj;
    import emptyprj.wc;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import java.util.Collection;
    import java.util.ArrayList;public class wcDAO {    private Connection con;
        private int rowCount;
        private int pageCount;
        private int length;      
        private String pagestr;
        public int getLength()  {  return (this.length);   }
        public void setLength(int length)  { this.length=length; }  
        public String getPagestr(int ipage)
        {
               String strPage="";
              if(getLength()>0)
              {
                strPage+="共";
                strPage+=String.valueOf(rowCount);
                strPage+="条记录,共";
                strPage+=String.valueOf(pageCount);
                strPage+="页,当前是第";
                strPage+=String.valueOf(ipage);
                strPage+="页,      ";
           
                int istart,iend;
                istart=ipage-5;
                if(istart<0) {istart=0;}
                iend=istart+10;
                if(iend>pageCount) {iend=pageCount;}
                istart=iend-10;
                if(istart<0) {istart=0;}
                for(int i=istart;i<iend;i++)
                {
                    strPage+="<a href='wcAction.do?action=find&page=";
                    strPage+=String.valueOf(i+1);
                    strPage+="'>";
                    strPage+=String.valueOf(i+1);
                    strPage+="</a>"; 
                    strPage+="  ";
                }
           }
           this.pagestr=strPage;
           return strPage;
      }  public wcDAO(Connection con) {
        this.con = con;
      }  public void create(wc m_wc) throws SQLException {
        PreparedStatement ps = null;
        //<createSQL>
        String sql = "INSERT INTO dbo.实验室管理制度 VALUES (?,?,?,?)";
        //</createSQL>
        try {
          if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }
          ps = con.prepareStatement(sql);
          //<create>
          ps.setInt(1,m_wc.get编号());
          ps.setString(2,m_wc.get制度名称());
          ps.setString(3,m_wc.get制度内容());
          ps.setString(4,m_wc.get颁布时间());
          //</create>      if (ps.executeUpdate() != 1) {
            throw new SQLException ("error.create.wc");
          }
        } catch (SQLException e) {
         
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          
        } finally {
          try {
            if (ps != null)
              ps.close();
          } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
      }  public void update(wc m_wc,String keyID) {
        PreparedStatement ps = null;
        //<updateSQL>
       String sql = "UPDATE dbo.实验室管理制度 SET 编号 = ?,制度名称 = ?,制度内容 = ?,颁布时间 = ? WHERE 编号 = ?";
          //</updateSQL>
        try {
          if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }
          ps = con.prepareStatement(sql);
          //<update>
          ps.setInt(1,m_wc.get编号());
          ps.setString(2,m_wc.get制度名称());
          ps.setString(3,m_wc.get制度内容());
          ps.setString(4,m_wc.get颁布时间());
          //</update>      ///////////////
          //<updatekeyID>
          ps.setInt(5,java.lang.Integer.parseInt(keyID,10));
              //</updatekeyID>
          if (ps.executeUpdate() != 1) {
            throw new SQLException (
              "error.removed.wc");
          }    } catch (SQLException e) {
          e.printStackTrace();
          throw new RuntimeException("error.unexpected");
        } finally {
          try {
            if (ps != null)
              ps.close();
          } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
      }
      public void remove(String sql) {
        PreparedStatement ps = null;
        try {      if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }      ps = con.prepareStatement(sql);
       
          if (ps.executeUpdate() != 1) {
            throw new SQLException (
              "error.removed.wc");
          }    } catch (SQLException e) {
          e.printStackTrace();
          throw new RuntimeException("error.unexpected");
        } finally {
          try {
            if (ps != null)
              ps.close();
          } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
      }
      public Collection findSQL(String sql,int ipage) {
        PreparedStatement ps = null;
        ResultSet rs = null;
        ArrayList list = new ArrayList();    try {
          if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }
          ps = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
          rs = ps.executeQuery();
              rs.absolute(-1);
          rowCount=rs.getRow();
         
          int offset=1;
          int pagesize=getLength();
          if(getLength()<1)
          {
              pagesize=rowCount;
              pageCount=1;
          }
          else
          {
              pageCount=rowCount/getLength()+((rowCount%getLength())>0?1:0);
              offset=(ipage-1)*getLength()+1;
              if(offset<1)offset=1;
              if(offset>rowCount)offset=rowCount;        
             
          } 
          rs.absolute(offset);
          for(int i=0;i<pagesize;i++) {           
            wc m_wc= new wc(); 
            //<find>
          m_wc.set编号(rs.getInt(1));
          m_wc.set制度名称(rs.getString(2));
          m_wc.set制度内容(rs.getString(3));
          m_wc.set颁布时间(rs.getString(4));
          //</find>        rs.next();
            list.add(m_wc);      }      return list;    } catch (SQLException e) {
          e.printStackTrace();
          throw new RuntimeException("error.unexpected");
        } finally {
          try {
            if (ps != null)
              ps.close();
            if (rs != null)
              rs.close();
          } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException("error.unexpected");
          }
        }
      }}
      

  7.   

    wcForm.java文件:
    package  emptyprj;import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;public final class wcForm extends ActionForm  
    {
              private String  颁布时间;          private String  制度内容;          private String  制度名称;          private int  编号;          private int page;          private String  pagestr;          private String  action;          private String mybeanvariable1;    //myfiledata;        public String getMybeanvariable1()
            {
                return (this.mybeanvariable1);
            }        public void setMybeanvariable1(String mybeanvariable1)
            {
                this.mybeanvariable1=mybeanvariable1;
            }
            public String getAction()
            {
                return (this.action);
            }        public void setAction(String action)
            {
                this.action=action;
            }
            public String getPagestr()
            {
                return (this.pagestr);
            }        public void setPagestr(String pagestr)
            {
                this.pagestr=pagestr;
            }
            public int getPage()
            {
                return (this.page);
            }        public void setPage(int page)
            {
                this.page=page;
            }
            public int get编号()
            {
                return (this.编号);
            }        public void set编号(int 编号)
            {
                this.编号=编号;
            }
            public String get制度名称()
            {
                return (this.制度名称);
            }        public void set制度名称(String 制度名称)
            {
                this.制度名称=制度名称;
            }
            public String get制度内容()
            {
                return (this.制度内容);
            }        public void set制度内容(String 制度内容)
            {
                this.制度内容=制度内容;
            }
            public String get颁布时间()
            {
                return (this.颁布时间);
            }        public void set颁布时间(String 颁布时间)
            {
                this.颁布时间=颁布时间;
            }}
    ---------------------------------------------
    wcAction.java文件:package  emptyprj;import emptyprj.jdbc.util.ConnectionPool;
    import emptyprj.wcDAO;import java.lang.reflect.InvocationTargetException;
    import java.util.Locale;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.beanutils.PropertyUtils;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionServlet;
    import org.apache.struts.util.ModuleException;
    import org.apache.struts.util.MessageResources;import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Collection;public final class wcAction extends Action 
    {
        // 变量定义:
        private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");    private ConnectionPool pool;    public wcAction() {
            pool = ConnectionPool.getInstance();
        }
        //函数定义:
        public ActionForward execute(ActionMapping mapping,
     ActionForm form,
     HttpServletRequest request,
     HttpServletResponse response)
    throws Exception 
        {
    // Extract attributes and parameters we will need
    Locale locale = getLocale(request);
    MessageResources messages = getResources(request);
    HttpSession session = request.getSession();
    wcForm m_wcForm = (wcForm) form;

         Connection con = null;    try 
            {
           con = pool.getConnection();
           wcDAO m_wcDAO = new wcDAO(con);              String action=request.getParameter("action");
          
           if(action==null)action="find";
               
               if(action.equals("delete"))
               {
                   String expression=request.getParameter("expression");
                   m_wcDAO.removeID(expression);
               }
                ////////////
               if(action.equals("update"))
               {
                     String expression=request.getParameter("expression");
                     wc m_wc= new wc(); 
                   //<update>
                     m_wc.set编号(m_wcForm.get编号());
                     m_wc.set制度名称(m_wcForm.get制度名称());
                     m_wc.set制度内容(m_wcForm.get制度内容());
                     m_wc.set颁布时间(m_wcForm.get颁布时间());
                     //</update>
                  
                   m_wcDAO.update(m_wc,expression);
               }
               ///////////////
           //<sqlstr>
           String sql="SELECT * FROM dbo.实验室管理制度";
           //</sqlstr>             //<分页>
            m_wcDAO.setLength(10);//设置每页显示记录数
            int ipage;//当前页
            try 
            {
                String page=request.getParameter("page");//分页参数,读取请求的当前页
                ipage=java.lang.Integer.parseInt(page,10);
            }
            catch (Exception e) 
                 {
                     ipage=m_wcForm.getPage();
                 } 
                  Collection col = m_wcDAO.findSQL(sql,ipage);//通过DAO对象查询数据
            request.setAttribute("wc",col);  //保存数据
           
            String pagestr=m_wcDAO.getPagestr(ipage);//分页字符串,分页内容
            m_wcForm.setPagestr(pagestr);   
                  m_wcForm.setAction(action);  
            request.setAttribute("wcForm",m_wcForm);
                  //</分页>
           return mapping.findForward("success");
        } 
    catch (SQLException e) 
            {
           e.printStackTrace();
           throw new RuntimeException("Unable to get connection.");
         } 
            finally
            {
               try 
                 {
             if (con != null)
               con.close();
                } 
                 catch (SQLException e) 
                 {
             throw new RuntimeException(e.getMessage());
                }
           }    }} 
      

  8.   

    wcOut.jsp文件:
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %><html:html>
    <head>
    <title></title>
    <html:base/>
    </head>
    <body bgcolor="white">
    <table cellPadding=2 width="80%" border=2>
    <tr>
    <td><span CONTENTEDITABLE=true>编号</span></td>
    <td><span CONTENTEDITABLE=true>制度名称</span></td>
    <td><span CONTENTEDITABLE=true>制度内容</span></td>
    <td><span CONTENTEDITABLE=true>颁布时间</span></td>
    <td><span CONTENTEDITABLE=true>删除</span></td>
    <td><span CONTENTEDITABLE=true>编辑</span></td>
    <td><span CONTENTEDITABLE=true>链接</span></td></tr>
    <logic:iterate name='wc' id='wc' type='emptyprj.wc' scope='request'>
    <logic:notEqual name='wcForm' property='action' value='edit'> 
    <tr>
    <td><bean:write name='wc' property='编号' /></td>
    <td><bean:write name='wc' property='制度名称' /></td>
    <td><bean:write name='wc' property='制度内容' /></td>
    <td><bean:write name='wc' property='颁布时间' /></td>
    <td><a href="wcAction.do?action=delete&expression=<bean:write name='wc' property='编号' />">删除</a></td>
    <td><a href="wcAction.do?action=edit&expression=<bean:write name='wc' property='编号' />">编辑</a></td>
    <td><a href="wcAction.do?action=link&expression=<bean:write name='wc' property='编号' />">链接</a></td></tr>
    </logic:notEqual> 
    <logic:equal name='wcForm' property='action' value='edit'> 
    <tr>
    <form  method='post' name='wcForm' action="/lyk/wcAction.do?action=update&expression=<bean:write name='wc' property='编号' />">
    <td><html:text name='wc' property='编号' /></td>
    <td><html:text name='wc' property='制度名称' /></td>
    <td><html:text name='wc' property='制度内容' /></td>
    <td><html:text name='wc' property='颁布时间' /></td>
    <td><a href="wcAction.do?action=delete&expression=<bean:write name='wc' property='编号' />">删除</a></td>
    <td><html:submit value='更新'></html:submit></form ><html:form  method='post' action='/wcAction.do?action=reset'><html:submit value='取消'></html:submit>
    </html:form ></td>
    <td><a href="wcAction.do?action=link&expression=<bean:write name='wc' property='编号' />">链接</a></td></tr>
    </logic:equal> 
    </logic:iterate><tr><td  align=middle colSpan=8 ><bean:write property='pagestr' name='wcForm' filter='false' /></td></tr></tr>
    </table>
    </body>
    </html:html>
    ---------------------------------------------
    wc.jsp文件:
    <%@ page contentType="text/html;charset=GB2312" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %><html:html>
    <head>
    <title></title>
    <html:base/>
    </head>
    <body bgcolor="white">
    <html:form  action="/wcAction.do"    method="post">
          <html:text property="mybeanvariable1" />
          <html:submit value="提交" />
          <html:reset value="重写" />
      </html:form>
    </body>
    </html:html>
      

  9.   

    to;搂主
      我给你的那个程序,是我转发的,我这几天也在研究,收获不小,但还没最终搞明白,我这几天正在研究struts,主要是相结合stuts做出来,但也是没有成功
      

  10.   

    to kui:
         万分感谢。我要回去好好研究研究。
    to syuhans:
         我用另外的一种方法已经可以分页了。其中组织分页字符串的地方我是在jsp端组织的。
       具体代码如下:
     <%
              String sPageCount=(String)request.getAttribute("pCount");
              int    iPageCount=Integer.valueOf(sPageCount).intValue();
              String sPageIndex = (String)request.getAttribute("pIndex");
              int    iPageIndex = Integer.valueOf(sPageIndex).intValue();
              System.out.println(iPageCount);
              System.out.println(iPageIndex);
              String str = "";
              String str1 = "";
              String str2 = "";
              String str3 = "";
              String str4 = "";
              if(iPageIndex>iPageCount)
         str = "";
      if(iPageIndex<iPageCount&&iPageIndex==1)
      {
         str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共&nbsp;<font color='#FF0000'>";
                 str2 ="</font>&nbsp;条记录&nbsp;&nbsp;共&nbsp;<font color='#FF0000'>";
                 str3="</font>&nbsp;页&nbsp;&nbsp;当前是第&nbsp;<font color='#FF0000'>";      str4="</font>&nbsp;页 &nbsp;&nbsp;";
         str ="<a href='customerAction.do?flag=0'>下一页</a></td></tr></table>";
      }
      if(iPageCount==iPageIndex&&iPageIndex>1)
      {
       str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共&nbsp;<font color='#FF0000'>";
               str2 ="</font>&nbsp;条记录&nbsp;&nbsp;共&nbsp;<font color='#FF0000'>";
               str3="</font>&nbsp;页&nbsp;&nbsp;当前是第&nbsp;<font color='#FF0000'>";
               str4="</font>&nbsp;页 &nbsp;&nbsp;";
       str ="<a href='customerAction.do?flag=2'>上一页</a></td></tr></table>";   }
      if(iPageIndex>1&&iPageIndex<iPageCount)
      {
       str1 = "<table><tr valign=baseline align=center>\n\r<td class='fr'>共&nbsp;<font color='#FF0000'>";
               str2 ="</font>&nbsp;条记录&nbsp;&nbsp;共&nbsp;<font color='#FF0000'>";
               str3="</font>&nbsp;页&nbsp;&nbsp;当前是第&nbsp;<font color='#FF0000'>";
               str4="</font>&nbsp;页 &nbsp;&nbsp;";
       str ="<a href='customerAction.do?flag=0'>下一页</a>&nbsp;&nbsp;<a href='customerAction.do?flag=2'>上一页</a></td></tr></table>";   }
            %>
     显示的时候这样做:<%=str1%><bean:write name="orderCarForm" property="rowCount"/><%=str2%><bean:write name="orderCarForm" property="pageCount"/><%=str3%><bean:write name="orderCarForm" property="showPage"/>/<bean:write name="orderCarForm" property="pageCount"/><%=str4%><%=str%> 结果运行正常。
     我觉得这里不可以用<jsp:usebean>方法来做,我发现每当我这么调用的时候,容器都会重新生成 一个bean实例,这样当前页索引每次都是默认的第一页,我就得不到正确的 当前页索引参数。
    我现在的这种做法可以解决问题,但是我不认为这是一种好方法,拿出来和大家一起讨论。请各位不吝赐教!!!!!谢谢!
      

  11.   

    to syuhans:
          你给我发的那个程序怎么运行不起来。我把相应的文件拷贝到我的web目录下。服务器启动时出了异常。我用的是weblogic服务器。
    异常信息如下:
           <2003-12-26 下午13时51分18秒 CST> <Error> <HTTP> <BEA-101216> <Servlet: "actio
     failed to preload on startup in Web application: "jdcar".
    javax.servlet.ServletException: org/apache/struts/legacy/GenericDataSource
            at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStub
    pl.java:906)
            at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletSt
    Impl.java:842)
            at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStu
    mpl.java:782)
            at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAp
    ervletContext.java:3236)
            at weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebA
    ServletContext.java:3181)
            at weblogic.servlet.internal.WebAppServletContext.preloadResources(Web
    pServletContext.java:3154)
            at weblogic.servlet.internal.HttpServer.preloadResources(HttpServer.ja
    :654)
            at weblogic.servlet.internal.WebService.preloadResources(WebService.ja
    :483)
            at weblogic.servlet.internal.ServletInitService.resume(ServletInitServ
    e.java:30)
            at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
            at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:964)
            at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:359)
            at weblogic.Server.main(Server.java:32)
    >
      

  12.   

    to:搂主
      sorry!我没去配,但我按找那个程序的思路,找出我需用的重新作了一下,也没通过。也许某个地方忽略了。我现在正在试着自己写
      

  13.   

    哎 太多了
    不在复制了
    楼主看看http://expert.csdn.net/Expert/topic/2487/2487451.xml?temp=.8278009
    这个帖子中
    kui(kui) 的回复吧很全的
    不过分要给我哦(呵呵玩笑啊,解决问题首要)
      

  14.   

    to: dby_(小兵) 这是我刚写的程序,可以翻页了,但存在很多缺陷,拿出来咱们一起研究一下。你上面写的,好像和我的思路差不多。
    <%     
         String pag=null;
         int pageId=1;
         int pageSize=2;
         pag=request.getParameter("page");
         if(pag!=null){
         pageId=Integer.parseInt(pag.trim());
         }
           %>                           
      <table width="100%" border="0">
      <tr align="center" bgcolor="#99CCFF"> 
        <td height="28" width="8%">序号</td>
     </tr>
    <!--   调用我写的一个标志,生成了一个结果集对象“readdep” -->
       <tag:readDep /> 
       
       
      <logic:iterate name="readdep" id="customer" offset="<%=(pageId-1)*pageSize+1+""%>" length="<%=pageSize+""%>">
      
      <tr> 
        <td height="28"><bean:write name="customer" property="id"/></td>
      </tr>  </logic:iterate>                        
                                  
       </table> 
       <table><tr><td><a href="index.jsp?page=1">首页</a></td><td><a href="index.jsp?page=<%=pageId-1%>">上一页</a></td>
       <td><a href="index.jsp?page=<%=pageId+1%>">下一页</a></td><td><a href="index.jsp?page=4">尾页</a></td></tr></table>存在的问题是:我还没想到用什么简单的方法确定共有多少页,即尾页?
      

  15.   

    用hibernate嘛
    很容易实现的