首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - Java 阅读:3711   评论: 5    参与评论
标题   如何实现Struts 数据库应用程序(2)     选择自 kui 的 Blog
关键字   Struts;数据库;JSP;Java;JavaWebStudio
出处  

[相关链接]
《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.csdn.net/develop/article/28/28871.shtm
《如何实现最简单的Struts程序》http://dev.csdn.net/develop/article/28/28946.shtm
《Struts下拉框的实现》http://dev.csdn.net/develop/article/28/28956.shtm
《Sruts单选框的实现》http://dev.csdn.net/develop/article/29/29042.shtm
《Struts复选框的实现》http://dev.csdn.net/develop/article/29/29043.shtm
《Struts程序各文件之间的关系(1)》http://dev.csdn.net/develop/article/29/29131.shtm
《Struts程序各文件之间的关系(2)》http://dev.csdn.net/develop/article/29/29133.shtm
《如何实现Struts 数据库应用程序(1)》http://dev.csdn.net/develop/article/29/29135.shtm
《如何实现Struts 数据库应用程序(2)》
《如何在Struts 数据库应用程序中实现分页显示》
《如何在Struts 数据库应用程序中实现记录的删除、更新及链接》
《如何在Struts 数据库应用程序中实现记录的添加》
《如何建立一个带登陆页面的Struts数据库应用程序》
《如何建立一个带登陆页面及角色的Struts数据库应用程序》

 

上述例子开发环境:Java Web Studio系列开发环境visual strutst版本。
最新JavaWebStudio下载地址:ftp://210.36.64.79/kui

 

[程序源代码]

dbList.jsp文件:

 (省略) 

 

dbListOut.jsp文件:

  (省略) 

 

dbList.java文件:

 (省略) 

 

dbListDAO.java文件:

  这里定义一个DAO类,用于实现数据加的查找、删除、更新、添加及生成分页字符串等功能。

package  emptyprj;

import emptyprj.dbList;

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 dbListDAO {

 

    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='dbListAction.do?action=find&search=search&page=";

                        strPage+=String.valueOf(i+1);

                        strPage+="'>";

                        strPage+=String.valueOf(i+1);

                        strPage+="</a>";

                        strPage+="  ";

                    }

           }

           this.pagestr=strPage;

           return strPage;

  }

 

  public dbListDAO(Connection con) {

    this.con = con;

  }

 

   (省略) 

 

  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&&offset<rowCount+1;i++,offset++) {           

        dbList m_dbList= new dbList();

        //<find>

      m_dbList.set序号(rs.getInt(1));

      m_dbList.set姓名(rs.getString(2));

      m_dbList.set备注(rs.getString(3));

      //</find>

 

        rs.next();

        list.add(m_dbList);

 

      }

 

      return list;

 

    } catch (SQLException e) {

      //e.printStackTrace();

      //throw new RuntimeException("error.unexpected");

       return list;

    } finally {

      try {

        if (ps != null)

          ps.close();

        if (rs != null)

          rs.close();

      } catch (SQLException e) {

        e.printStackTrace();

        throw new RuntimeException("error.unexpected");

      }

    }

  }

 

}

 

dbListForm.java文件:

 (省略) 

 

dbListAction.java文件:

   这里定义一个Action类,用于实现页面的转发功能,另外还包括了不同请求类型的不同操作。其中action变量表示操作类型,相当于事件类型。通过这个变量,实现了类似于.NET中的“事件驱动”的功能。

package  emptyprj;

  (省略)  

public final class dbListAction extends Action

{

    // 变量定义:

    private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");

 

    private ConnectionPool pool;

 

    public dbListAction() {

        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();

       dbListForm m_dbListForm = (dbListForm) form;

      

           Connection con = null;

 

     try

        {

                 con = pool.getConnection();

                 dbListDAO m_dbListDAO = new dbListDAO(con);  //定义DAO对象,用于实现数据库的各种操作

 

                 String action=request.getParameter("action");  //动作类型                 

                 String search=request.getParameter("search");  //数据库查找方式

                 String expression=request.getParameter("expression");    //参数,这里用于保存记录(行)的ID数据

                

                                  ///////////////查找数据库

                 //<sqlstr>

                 String sql="SELECT * FROM dbo.Test";

                 //</sqlstr>

 

              (省略)  

             //<分页>

                m_dbListDAO.setLength(10);//设置每页显示记录数

                int ipage;//当前页

                try

                {

                    String page=request.getParameter("page");//分页参数,读取请求的当前页

                    ipage=java.lang.Integer.parseInt(page,10);

                }

                catch (Exception e)

             {

                 ipage=m_dbListForm.getPage();

             }

             if(ipage<1)ipage=1;

             Collection col = m_dbListDAO.findSQL(sql,ipage);//通过DAO对象查询数据

                request.setAttribute("dbList",col);  //保存数据  

               

                String pagestr=m_dbListDAO.getPagestr(ipage);//分页字符串,分页内容

              String s_find,str;

                if(!"search".equals(search))    //查找和全部显示两个不同的操作,其分页字符串不同,在此进行处理。如果是全部显示则去掉"search=search&"

                 {

                     s_find="search=search&";

                     while(pagestr.indexOf(s_find)!=-1)

                     {

                         str=pagestr.substring(0,pagestr.indexOf(s_find));

                         str+=pagestr.substring(pagestr.indexOf(s_find)+s_find.length(),pagestr.length());

                         pagestr=str;

                     }

                 }

                m_dbListForm.setPagestr(pagestr);  

              m_dbListForm.setAction(action);         

                request.setAttribute("dbListForm",m_dbListForm);

              //</分页>

 

 

                 return mapping.findForward("success");

     }

       catch (SQLException e)

         (省略)  

    }

 

}

 

 


相关文章
对该文的评论
kui ( 2004-06-28)
详细开发资料可到“ftp://61.129.102.53/Struts开发实例/”目录下载。
下载帐号:csdn
下载密码:csdn
CSDN 网友 ( 2004-06-19)
JavaWebStudio 20040521:
这里下好快!300K左右!100多兆,不到五分钟下完!不要急大家慢慢下载,是华军软件园的。Power By 210249(QQ)
http://www.onlinedown.net/soft/31867.htm 
kui ( 2004-06-16)
########################################################
                 FTP信息
********************************************************

感谢  pigo(~_~ ^-^. 。o 0 O O=p&&t=O O 0 o 。. ^-^~_~) 提供的FTP信息,我已把JavaWebStudio放到ftp://218.28.64.19:22
下载帐号:javadown
下载密码:javadown
目录是:JavaWebStudio(VisualStruts20040611版本)

我试过了,可以下,如果你还是下载不了,别骂了,找下面
http://gceclub.sun.com.cn/NASApp/sme/jive/thread.jsp?GXHC_JSESSIONID=5014062459374517771&GXHC_jive.user.lastvisited=1087275199680&forum=8&thread=10011

我白辛苦,也没收过一分钱,还被那么多人在骂,还有人把“语录”也放过来了,真是流年不幸啊。

########################################################
                谢谢大家!!
********************************************************
CSDN 网友 ( 2004-06-16)
**************************************************
   下面我摘录一些网友对我说“话录”:
1、ldelphi(ldelphi) :都别上当了。所有的地址都下不了。不知道玩的是什么支俩!?

2、 keithann() :作者还是挺牛的,不过后来看看它每篇文章结尾的评论,才知道这家伙原来只是个“低级”的程序员。
提醒大家不要上这鸟人的当,对这种人的行为大家唾弃!呸呸

3、 qquge(踏雪无痕):只支持上传,不支持下载,还帖出来骗人,恶劣!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

4、donghx1234(不想再继续):老大,把下载权限打开啊,不让下载呀

5、maomaoguai(乖乖猫):楼上的,你真的可以吗,标题上那个根本登陆不了,下面这个上午我登陆上去了,但只边明确的说"只能上载,不能下载",确实也只能上载不能下传,刚才我又上去看了,呵~~~,居然上午看到有那个软件现在没有了..

6、clarck3000(j2ee):我下了,感觉界面像vc.net,别的就没什么好了
希望继续努力啊

7、CSDN 网友 ( 2004-06-15) :FTP只能上传,不能下载,没有软件试用,你写这文章干吗,吹你的软件多好多好???? 

8、CSDN 网友 ( 2004-06-15) :揍他个狗日的.再来打广告就去死吧!
大家不要用,也不要看.全是骗局.哪有免费的好东东给你 

9、CSDN 网友 ( 2004-06-15) :建议CSDN封他的IP,狗日的,把他的FTP给封了,中国人就这素质.. 

10、CSDN 网友 ( 2004-06-15) :这是素质的问题,你以为自己很了不起吗,唉,失败啊!! 

11、CSDN 网友 ( 2004-06-15) :所给的连接都不能下载!请问Kui。是什么目的,与什么意思。
既然不能下载,版主为何不删除之?! 

12、CSDN 网友 ( 2004-06-15) :一堆狗屎!都是骗人的把戏。给出的地址不能下载。有什么用?  

13、CSDN 网友 ( 2004-06-15) :骗子,又在耍你的什么把戏。给出的例子没有地方测试!给出的软件址不能下载,又有何用??!! 

14、CSDN 网友 ( 2004-06-15) :CSDN 网友 ( 2004-06-15) :高级骗子,我靠,软件不能下载,至少源码能下载,源码能下载,至少软件也让试用试用,一下都不能,写出文章干吗!吃屎去吧!!! 

15、CSDN 网友 ( 2004-06-15) :操你妈,骗子! 

16、CSDN 网友 ( 2004-06-15) :所给的连接都不能下载!请问Kui。是什么目的,与什么意思。
既然不能下载,版主为何不删除之?! 

17、CSDN 网友 ( 2004-06-15) :搞什么飞机啊,不准下 

18、CSDN 网友 ( 2004-06-15) :我不知道作者干什么,要写这种文件,但软件又不让下载...搞什么吗!!写出来有什么用... 

************************************
我只想说一句:中国的软件业,路还很长!
kui ( 2004-06-14)
试到下面ftp看看,看能否下载JavaWebStudio:
ftp://upload:upload@61.155.236.45/