黑马程序员技术交流社区

标题: 我今天终于用MVC完成了一个项目,再次分享 [打印本页]

作者: 樊占江    时间: 2012-8-3 16:37
标题: 我今天终于用MVC完成了一个项目,再次分享
先是数据库(我用的orcal)
create table ACCOUNTINFO
(
   id number(11) primary key not null,
   account_number varchar2(16) not null,
   account_password varchar2(6) not null,
   account_money number(11) not null,
   account_stutus number(11) not null--0可用,1不可用
);

create sequence seq_accountinfo;

insert into ACCOUNTINFO values(seq_accountinfo.nextval,'6221000000000001','123456',6000,0);
insert into ACCOUNTINFO values(seq_accountinfo.nextval,'6221000000000002','222222',8000,0);
insert into ACCOUNTINFO values(seq_accountinfo.nextval,'6221000000000003','333333',1000,1);
insert into ACCOUNTINFO values(seq_accountinfo.nextval,'6221000000000004','444444',2000,0);

action类:
package cn.account.action;

import cn.account.bean.AccountInfo;
import cn.account.service.AccoutInfoService;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
* 核心控制器
*
*
*
*/
public class AccountInfoAction extends ActionSupport {

        /**
         *
         */
        private static final long serialVersionUID = -8436508189819715435L;
        private String accountNumber; // 卡号
        private String accountPwd; // 密码
        private AccountInfo account; // 卡
        private Integer money;// 取钱数
        private String message; // 消息
        private AccoutInfoService accountService; // 业务

        public String getAccountNumber() {
                return accountNumber;
        }

        public void setAccountNumber(String accountNumber) {
                this.accountNumber = accountNumber;
        }

        public String getAccountPwd() {
                return accountPwd;
        }

        public void setAccountPwd(String accountPwd) {
                this.accountPwd = accountPwd;
        }

        public AccountInfo getAccount() {
                return account;
        }

        public void setAccount(AccountInfo account) {
                this.account = account;
        }

        public Integer getMoney() {
                return money;
        }

        public void setMoney(Integer money) {
                this.money = money;
        }

        public String getMessage() {
                return message;
        }

        public void setMessage(String message) {
                this.message = message;
        }

        public void setAccountService(AccoutInfoService accountService) {
                this.accountService = accountService;
        }

        public String validateAccount() {
                 account = this.accountService.getAccountByNumPwd(accountNumber, accountPwd);
                if (account != null) {
                        ActionContext.getContext().getSession().put("account", account);
                        return Action.SUCCESS;
                } else {
                        this.message = "卡号或密码错误!";
                        return Action.INPUT;
                }
        }
       
        public String updateAccount(){
                account = this.accountService.updateAccount(account, money);
                if(account != null){
                        return Action.SUCCESS;
                }else{
                        this.message = "取款金额不能超过余额!";
                        return Action.INPUT;
                }
        }
}
bean类:
package cn.account.bean;

/**
* AccountInfo entity. @author MyEclipse Persistence Tools
*/

public class AccountInfo implements java.io.Serializable {

        // Fields

        /**
         *
         */
        private static final long serialVersionUID = 2800588973146481870L;
        private Integer id;
        private String accountNumber;
        private String accountPassword;
        private Integer accountMoney;
        private Integer accountStutus;

        // Constructors

        /** default constructor */
        public AccountInfo() {
        }

        /** full constructor */
        public AccountInfo(String accountNumber, String accountPassword,
                        Integer accountMoney, Integer accountStutus) {
                this.accountNumber = accountNumber;
                this.accountPassword = accountPassword;
                this.accountMoney = accountMoney;
                this.accountStutus = accountStutus;
        }

        // Property accessors

        public Integer getId() {
                return this.id;
        }

        public void setId(Integer id) {
                this.id = id;
        }

        public String getAccountNumber() {
                return this.accountNumber;
        }

        public void setAccountNumber(String accountNumber) {
                this.accountNumber = accountNumber;
        }

        public String getAccountPassword() {
                return this.accountPassword;
        }

        public void setAccountPassword(String accountPassword) {
                this.accountPassword = accountPassword;
        }

        public Integer getAccountMoney() {
                return this.accountMoney;
        }

        public void setAccountMoney(Integer accountMoney) {
                this.accountMoney = accountMoney;
        }

        public Integer getAccountStutus() {
                return this.accountStutus;
        }

        public void setAccountStutus(Integer accountStutus) {
                this.accountStutus = accountStutus;
        }

}

dao类:
package cn.account.dao;

import cn.account.bean.AccountInfo;

/**
* 数据库访问接口
*
*/
public interface AccountInfoDao {
    /**
     * 根据卡号和密码得到卡
     * @param accountNumber
     * @param accountPwd
     * @return 卡对象AccountInfo
     */
    public AccountInfo getAccountByNumPwd(String accountNumber,String accountPwd);
   
    /**
     * 修改卡内数据
     * @param account
     * @return 卡对象AccountInfo
     */
    public AccountInfo updateAccount(AccountInfo account,Integer money);
}
daoimpl类:
package cn.account.dao.impl;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cn.account.bean.AccountInfo;
import cn.account.dao.AccountInfoDao;

/**
* 数据库访问接口实现类
*
*/
public class AccountInfoDaoImpl extends HibernateDaoSupport implements
                AccountInfoDao {

        public AccountInfo getAccountByNumPwd(String accountNumber,
                        String accountPwd) {
                String hql = "from AccountInfo where accountNumber=" + accountNumber + " and accountPassword=" + accountPwd;
                return this.getHibernateTemplate().find(hql).size() == 0 ? null : (AccountInfo)this.getHibernateTemplate().find(hql).get(0);
        }

        public AccountInfo updateAccount(AccountInfo account,Integer money) {
           Integer newMoney = 0;
                if(money > account.getAccountMoney())
                    return null;
                newMoney = account.getAccountMoney() - money;
                account.setAccountMoney(newMoney);
                return account;
        }

}

作者: 樊占江    时间: 2012-8-3 16:38
service类:
package cn.account.service;

import cn.account.bean.AccountInfo;

/**
* 业务处理接口
*
*/
public interface AccoutInfoService {
         /**
     * 根据卡号和密码得到卡
     * @param accountNumber
     * @param accountPwd
     * @return 卡对象AccountInfo
     */
    public AccountInfo getAccountByNumPwd(String accountNumber,String accountPwd);
   
    /**
     * 修改卡内数据
     * @param account
     * @return 卡对象AccountInfo
     */
    public AccountInfo updateAccount(AccountInfo account,Integer money);
}
serviceimpl类:
package cn.account.service.impl;

import cn.account.bean.AccountInfo;
import cn.account.dao.AccountInfoDao;
import cn.account.service.AccoutInfoService;


/**
* 业务处理接口实现类
*
*/
public class AccountInfoServiceImpl implements AccoutInfoService {
    private AccountInfoDao accountDao;
   
        public void setAccountDao(AccountInfoDao accountDao) {
                this.accountDao = accountDao;
        }

        public AccountInfo getAccountByNumPwd(String accountNumber,
                        String accountPwd) {
                return accountDao.getAccountByNumPwd(accountNumber, accountPwd);
        }

        public AccountInfo updateAccount(AccountInfo account, Integer money) {
                return accountDao.updateAccount(account, money);
        }

}
util类:
package cn.account.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution.  Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateUtil {

    /**
     * Location of hibernate.cfg.xml file.
     * Location should be on the classpath as Hibernate uses  
     * #resourceAsStream style lookup for its configuration file.
     * The default classpath location of the hibernate config file is
     * in the default package. Use #setConfigFile() to update
     * the location of the configuration file for the current session.   
     */
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
        private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private  static Configuration configuration = new Configuration();   
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;

        static {
            try {
                        configuration.configure(configFile);
                        sessionFactory = configuration.buildSessionFactory();
                } catch (Exception e) {
                        System.err
                                        .println("%%%% Error Creating SessionFactory %%%%");
                        e.printStackTrace();
                }
    }
    private HibernateUtil() {
    }
       
        /**
     * Returns the ThreadLocal Session instance.  Lazy initialize
     * the <code>SessionFactory</code> if needed.
     *
     *  @return Session
     *  @throws HibernateException
     */
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

                if (session == null || !session.isOpen()) {
                        if (sessionFactory == null) {
                                rebuildSessionFactory();
                        }
                        session = (sessionFactory != null) ? sessionFactory.openSession()
                                        : null;
                        threadLocal.set(session);
                }

        return session;
    }

        /**
     *  Rebuild hibernate session factory
     *
     */
        public static void rebuildSessionFactory() {
                try {
                        configuration.configure(configFile);
                        sessionFactory = configuration.buildSessionFactory();
                } catch (Exception e) {
                        System.err
                                        .println("%%%% Error Creating SessionFactory %%%%");
                        e.printStackTrace();
                }
        }

        /**
     *  Close the single hibernate session instance.
     *
     *  @throws HibernateException
     */
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

        /**
     *  return session factory
     *
     */
        public static org.hibernate.SessionFactory getSessionFactory() {
                return sessionFactory;
        }

        /**
     *  return session factory
     *
     *        session factory will be rebuilded in the next call
     */
        public static void setConfigFile(String configFile) {
                HibernateUtil.configFile = configFile;
                sessionFactory = null;
        }

        /**
     *  return hibernate configuration
     *
     */
        public static Configuration getConfiguration() {
                return configuration;
        }

}


这是所有src 配置文件和jsp我没有发,不过谁想要全部代码,在群里找我。我传给他




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2