• Struts2+Spring2+Hibernate3 web应用示例(一)


    Struts作为MVC 2Web框架,自推出以来不断受到开发者的追捧,得到广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点:MVC 2模型的使用、功能齐全的标志库(Tag Library)、开放源代码。而Spring的出现,在某些方面极大的方面了Struts的开发。同时,Hibernate作为对象持久化的框架,能显示的提高软件开发的效率与生产力。这三种流行框架的整合应用,可以发挥它们各自的优势,使软件开发更加的快速与便捷。
    struts2发布已经很久了,但关于如何使用它的教程及实例并不多。特别是与SpringHibernate等流行框架的集成,并不多见。现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6Spring2.0.6Hibernate3.1进行整合,希望通过这样的整合示例,让读者了解这些框架各自的特点,以便于在自己的项目中,根据实际情况,尽快的过渡到Struts2的时代。本文的内容基于Struts2.0.6
     
    一、       准备工作
    spring21.x区别不大,可以平滑的过度,笔者也是把spring1.28换成了spring2.0.6,算是升级到spring 2.0了。struts2基本就是webwork2.2,与以前的struts1.x可以说没任何关系了。因为是第一次用struts2,也是第一次用webwork,所以有很多不完善,不规范的地方,还望大家来拍砖。
    开发环境:MyEclipse5.0+Eclipse3.2+JDK5.0+
    Tomcat5.5+struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个图书进行管理的系统,提供基本的增加、删除、修改、查询等功能。
    lib包需要以下右图所示的这些包。其中Struts2.0.6的下载地址为:
    Hibernate3.1的下载地址为:
    spring2.0.6的下载地址为:
    使用的数据库为mysql 5.0,使用的JDBC驱动JAR包为:mysql-connection-java-5.0.4-bin
    创建数据表的sql语句为:
    create database game
    CREATE TABLE `books` (
      `book_id` 
    int(11NOT NULL default '0',
      `book_name` 
    varchar(200character set gb2312 default NULL,
      `book_author` 
    varchar(100character set gb2312 default NULL,
      `book_publish` 
    varchar(100character set gb2312 default NULL,
      `book_date` date 
    default NULL,
      `book_isbn` 
    varchar(20default NULL,
      `book_page` 
    int(11default NULL,
      `book_price` 
    decimal(10,2default NULL,
      `book_content` 
    varchar(100character set gb2312 default NULL,
      
    PRIMARY KEY  (`book_id`)
    ) ENGINE
    =InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED;

     
    二、       建立公共类
    1、AbstractAction类
     
    Struts2Struts1.x的差别,最明显的就是Struts2是一个pull-MVC架构。Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过GetterSetter获取。
    虽然,在理论上Struts2Action无须实现任何接口或者是继承任何的类,但是,在实际编程过程中,为了更加方便的实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并且重载(Override
    package com.sterning.commons;

    import com.opensymphony.xwork2.ActionSupport;

    public class AbstractAction extends ActionSupport {
    }

    com.sterning.commons.AbstractAction.java
    参考JavaDoc,可知ActionSupport类实现了接口:
    com.uwyn.rife.continuations.ContinuableObject
    2、Pager分页类
    为了增加程序的分页功能,特意建立共用的分页类。
    package com.sterning.commons;

    import java.math.*;

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

        
        
    public Pager(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();
            }

        }

    }

    com.sterning.commons.Pager.java
    同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
    同时,采用PagerService类来发布成为分页类服务PagerService,代码如下:
    package com.sterning.commons;

    public class PagerService {
        
    public Pager getPager(String currentPage,String pagerMethod,int totalRows) {
            
    //    定义pager对象,用于传到页面
            Pager pager = new Pager(totalRows);
            
    //    如果当前页号为空,表示为首次查询该页
            
    //    如果不为空,则刷新pager对象,输入当前页号等信息
            if (currentPage != null{
                pager.refresh(Integer.parseInt(currentPage));
            }

            
    //    获取当前执行的方法,首页,前一页,后一页,尾页。
            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;
        }

    }

    com.sterning.commons.PagerService.java

    未完待续,下节开始编写数据持久化层......... 
  • 相关阅读:
    listview右边显示 abcd快速选择
    显示密码
    欢迎界面动画
    web get Post测试
    使用MultiDexApplication
    获取当前运行的Activity信息
    MFC得到运行程序路径
    构建之法阅读笔记01
    个人作业1:随机生成四则运算
    软件工程第一步
  • 原文地址:https://www.cnblogs.com/new0801/p/6176014.html
Copyright © 2020-2023  润新知