⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tradeformsaveaction.java

📁 基于Struts的电子银行系统
💻 JAVA
字号:
/*
 * Created on 2005-7-27
 *
 */
package banksystem.action;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import banksystem.Constants;
import banksystem.PO.Customer;
import banksystem.PO.Trade;
import banksystem.VO.TradeActionForm;
import banksystem.VO.UserInfoActionForm;
import banksystem.business.BusinessDelegate;
import banksystem.business.SearchGene;
import banksystem.exception.AccountFreezedException;
import banksystem.exception.BalanceNotEnoughException;
import banksystem.exception.TranferAccountNotExistException;

/**
 * @author 曲本盛
 *
 * TODO Struts 项目实践
 */
public class TradeFormSaveAction extends Action {
	
	BusinessDelegate business = null;
	public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		if(this.isCancelled(request)){
			//点击取消返回主服务页面
			return actionMapping.findForward("main");
		}
		
		// TODO Auto-generated method stub
		HttpSession session = request.getSession(false);
		ActionMessages errors = this.getErrors(request);
		
		if(session==null||session.getAttribute(Constants.KEY_CUSTOMER_INFO)==null){
			errors.add("failed",new ActionMessage(Constants.ERRORS_SESSION_INVALID));
			this.saveErrors(request,errors);
			return actionMapping.findForward("login");
		}

		//防止多次提交
		if(!isTokenValid(request,true)){
			this.resetToken(request);
			this.saveToken(request);
			errors.add("failed",new ActionMessage(Constants.ERRORS_SUBMIT_AGAIN));
			this.saveErrors(request,errors);
			return actionMapping.getInputForward();
		}
		this.resetToken(request);
		this.saveToken(request);
		//从session中提取客户信息 
		UserInfoActionForm userinfo = (UserInfoActionForm)session.getAttribute(Constants.KEY_CUSTOMER_INFO); 
		
		TradeActionForm tradeActionForm = (TradeActionForm)actionForm;
		Trade trade = new Trade();
		
		String action = tradeActionForm.getAction();
		String tradePass = tradeActionForm.getTradePass();
		
		String accountID = tradeActionForm.getAccountID();
		String transferAccountID = tradeActionForm.getTransferAccountID()==null?accountID:tradeActionForm.getTransferAccountID();
		Double money = tradeActionForm.getMoney();
		String tradeType = null;
		
		if("saving".equals(action)){
			tradeType = "1";
		}
		if("fetch".equals(action)){
			tradeType = "0";
		}
		if("transfer".equals(action)){
			tradeType = "2";
		}
		//如果用户的操作不是存款则检查交易密码
		if(!"saving".equals(action)){
			if(!tradePass.equals(userinfo.getTradePass())){
				errors.add("failed",new ActionMessage(Constants.ERRORS_TRADEPASS_INVALID));
				this.saveErrors(request,errors);
				return actionMapping.getInputForward();
			}
		}
		trade.setAccountID(accountID);
		trade.setMoney(money);
		trade.setTransferAccountID(transferAccountID);
		trade.setType(tradeType);
		
		business = BusinessDelegate.getInstance();
		
		try{
			DataSource dataSource = this.getDataSource(request);
			if("logout".equals(action)){
				//使用查询精灵代理生成更新语句,更新数据库.
				//这样作可能不符合Struts的规范,要改进.
				SearchGene gene = new SearchGene();
				gene.setAccountID(accountID);
				gene.setAction(action);
				business.setAccountStatus(dataSource,gene);
				//注销成功返回用户登录界面
				errors.add("success",new ActionMessage("message.success.logout"));
				this.saveErrors(request,errors);
				return actionMapping.findForward("login");
			}
			else{
				business.tradeBusiness(dataSource,trade);
			}
			//刷新用户信息************************************************
			UserInfoActionForm newuserinfo = new UserInfoActionForm();
			Customer customer = business.getCustomer(dataSource,accountID);
			BeanUtils.copyProperties(newuserinfo,customer);
			session.setAttribute(Constants.KEY_CUSTOMER_INFO,newuserinfo);
			//***********************************************************
			errors.add("success",new ActionMessage("message.success"));
			this.saveErrors(request,errors);
			return actionMapping.findForward("success");
		}
		catch(TranferAccountNotExistException te){
			errors.add("failed",new ActionMessage(te.getKey()));
			this.saveErrors(request,errors);
			return actionMapping.getInputForward();
		}
		catch(BalanceNotEnoughException be){
			errors.add("failed",new ActionMessage(be.getKey()));
			this.saveErrors(request,errors);
			return actionMapping.getInputForward();
		}
		catch(AccountFreezedException ae){
			errors.add("failed",new ActionMessage(ae.getKey()));
			this.saveErrors(request,errors);
			return actionMapping.getInputForward();
		}
		catch(SQLException e){
			errors.add("failed",new ActionMessage(Constants.ERRORS_DATA_SAVE_EXCEPTION,e.getMessage()));
			this.saveErrors(request,errors);
			e.printStackTrace();
			return actionMapping.getInputForward();
		}
		catch(Exception e){
			errors.add("failed",new ActionMessage(Constants.ERRORS_UNKNOWN_EXCEPTION,e.getMessage()));
			this.saveErrors(request,errors);
			return actionMapping.getInputForward();
		}
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -