例如下面是分页显示、删除记录、更新记录代码:
LykAction.java文件:
package  emptyprj;import emptyprj.jdbc.util.ConnectionPool;
import emptyprj.lykDAO;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 lykAction extends Action 
{
    // 变量定义:
    private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");    private ConnectionPool pool;    public lykAction() {
        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();
lykForm m_lykForm = (lykForm) form;

     Connection con = null;    try 
        {
       con = pool.getConnection();
       lykDAO m_lykDAO = new lykDAO(con);              String action=request.getParameter("action");
      
       if(action==null)action="find";
           
           if(action.equals("delete"))
           {
               String expression=request.getParameter("expression");
               m_lykDAO.removeID(expression);
           }
            ////////////
           if(action.equals("update"))
           {
                 String expression=request.getParameter("expression");
                 lyk m_lyk= new lyk(); 
               //<update>
                 m_lyk.set姓名(m_lykForm.get姓名());
                 m_lyk.set性别(m_lykForm.get性别());
                 m_lyk.set年龄(m_lykForm.get年龄());
                 //</update>
              
               m_lykDAO.update(m_lyk,expression);
           }
           ///////////////
       //<sqlstr>
       String sql="SELECT * FROM dbo.TABLE1";
       //</sqlstr>             //<分页>
        m_lykDAO.setLength(10);//设置每页显示记录数
        int ipage;//当前页
        try 
        {
            String page=request.getParameter("page");//分页参数,读取请求的当前页
            ipage=java.lang.Integer.parseInt(page,10);
        }
        catch (Exception e) 
             {
                 ipage=m_lykForm.getPage();
             } 
             if(ipage<1)ipage=1;
             Collection col = m_lykDAO.findSQL(sql,ipage);//通过DAO对象查询数据
        request.setAttribute("lyk",col);  //保存数据
       
        String pagestr=m_lykDAO.getPagestr(ipage);//分页字符串,分页内容
        m_lykForm.setPagestr(pagestr);   
              m_lykForm.setAction(action);  
        request.setAttribute("lykForm",m_lykForm);
              //</分页>
       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());
            }
       }    }} 

解决方案 »

  1.   

    下面是LykDAO.java文件:
    package  emptyprj;
    import emptyprj.lyk;
    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 lykDAO {    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='lykAction.do?action=find&page=";
                    strPage+=String.valueOf(i+1);
                    strPage+="'>";
                    strPage+=String.valueOf(i+1);
                    strPage+="</a>"; 
                    strPage+="  ";
                }
           }
           this.pagestr=strPage;
           return strPage;
      }  public lykDAO(Connection con) {
        this.con = con;
      }  public void create(lyk m_lyk) throws SQLException {
        PreparedStatement ps = null;
        //<createSQL>
        String sql = "INSERT INTO dbo.TABLE1 VALUES (?,?,?)";
        //</createSQL>
        try {
          if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }
          ps = con.prepareStatement(sql);
          //<create>
          ps.setString(1,m_lyk.get姓名());
          ps.setString(2,m_lyk.get性别());
          ps.setInt(3,m_lyk.get年龄());
          //</create>      if (ps.executeUpdate() != 1) {
            throw new SQLException ("error.create.lyk");
          }
        } 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(lyk m_lyk,String keyID) {
        PreparedStatement ps = null;
        //<updateSQL>
       String sql = "UPDATE dbo.TABLE1 SET 姓名 = ?,性别 = ?,年龄 = ? WHERE 姓名 = ?";
          //</updateSQL>
        try {
          if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }
          ps = con.prepareStatement(sql);
          //<update>
          ps.setString(1,m_lyk.get姓名());
          ps.setString(2,m_lyk.get性别());
          ps.setInt(3,m_lyk.get年龄());
          //</update>      ///////////////
          //<updatekeyID>
          ps.setString(4,keyID);
              //</updatekeyID>
          if (ps.executeUpdate() != 1) {
            throw new SQLException (
              "error.removed.lyk");
          }    } 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 removeID(String keyID) {
       
        //<removeIDSQL>
        String sql="DELETE FROM dbo.TABLE1 WHERE ";
        sql+="姓名";
        sql+=" = ?";
        //</removeIDSQL>    PreparedStatement ps = null;
        try {      if (con.isClosed()) {
            throw new IllegalStateException("error.unexpected");
          }      ps = con.prepareStatement(sql);
          
          //<setremovekeyIDdata>
          ps.setString(1,keyID);
              //</setremovekeyIDdata>
       
          if (ps.executeUpdate() != 1) {
            throw new SQLException (
              "error.removed.lyk");
          }    } 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++) {           
            lyk m_lyk= new lyk(); 
            //<find>
          m_lyk.set姓名(rs.getString(1));
          m_lyk.set性别(rs.getString(2));
          m_lyk.set年龄(rs.getInt(3));
          //</find>        rs.next();
            list.add(m_lyk);      }      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");
          }
        }
      }}
      

  2.   

    下面是输出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></tr>
    <logic:iterate name='lyk' id='lyk' type='emptyprj.lyk' scope='request'>
    <logic:notEqual name='lykForm' property='action' value='edit'> 
    <tr>
    <td><bean:write name='lyk' property='姓名' /></td>
    <td><bean:write name='lyk' property='性别' /></td>
    <td><bean:write name='lyk' property='年龄' /></td></tr>
    </logic:notEqual> 
    <logic:equal name='lykForm' property='action' value='edit'> 
    <tr>
    <form  method='post' name='lykForm' action="/hello/lykAction.do?action=update&expression=<bean:write name='lyk' property='' />">
    <td><html:text name='lyk' property='姓名' /></td>
    <td><html:text name='lyk' property='性别' /></td>
    <td><html:text name='lyk' property='年龄' /></td></tr>
    </logic:equal> 
    </logic:iterate><tr><td  align=middle colSpan=4 ></td></tr></tr>
    </table>
    </body>
    </html:html>