web应用之转账实现

版权声明: https://blog.csdn.net/llxybm/article/details/82491245

目录

 

项目简介

项目逻辑

转账前数据库效果展示

转账前端页面实现

效果展示

转账功能实现

web层

service层

dao层 

扫描二维码关注公众号,回复: 3757378 查看本文章

执行效果 


项目简介

          金钱对于我们每个人来说都很重要,存钱取钱不能说一点不会出错,但是在一定程度上还是比较安全的,但是如何做到安全转账,下面就简单介绍一下转账功能的实现

项目逻辑

         该项目通过三层架构来完成转账:

                    1,在web层通过request请求获取相关属性值然后传递到service层,由于在service层不需要进行复杂的业务处理,进一步将数据传递到dao层

                    2,在dao层完成相应的逻辑处理,要分别对收账人和转账人的存款金额进行处理,转账人的金额要有相应的金额减少而对应的收账人的金额要有所增加

                     3,在完成转账金额的逻辑处理中要先开启事务,接下来对相应的业务逻辑进行处理,如果转账过程中没有出现错误,则通过commit方法完成转账操作并提示用户转账成功,相应的数据库中的值也要发生相应的改变,否则要进行事务的回滚处理并给出用户转账失败的信息,同时要确保数据库中的数据不发生改变

转账前数据库效果展示

注意:完成此项目要导入相应的jar包和相应的工具类否则会出现错误

转账前端页面实现

效果展示

转账功能实现

web层

   主要实现获取参数和传递参数功能

package pdsu.edu.web;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import pdsu.edu.service.ZhuanzhangService;

/**
 * Servlet implementation class ZhuanzhangServlet
 */
public class ZhuanzhangServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-genunerated method stub
        String name1 = request.getParameter("name1");
        String name2 = request.getParameter("name2");
        String moneystr = request.getParameter("money");
        int money = Integer.parseInt(moneystr);
        ZhuanzhangService zz=new ZhuanzhangService();
        boolean is;
        try {
            is = zz.Out(name1,name2,money);
            if(is) {
                System.out.println("转账成功!");
            }else {
                System.out.println("转账失败!");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

service层

该部分主要完成事务的开启操作以及对于不同情况对于传递参数的回应信息,并向dao层传递参数

package pdsu.edu.service;

import java.sql.SQLException;

import pdsu.edu.dao.ZhuanzhangDao;

public class ZhuanzhangService {

    public boolean Out(String name1, String name2, int money)  {
        // TODO Auto-generated method stub
        ZhuanzhangDao dd=new ZhuanzhangDao();
        boolean transferSuccess=true;
        try {
            pdsu.edu.utils.MyDataSourceUtils.startTransaction();//开启事务
            dd.out(name1,money);
            dd.in(name2,money);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            transferSuccess=false;
            try {
                pdsu.edu.utils.MyDataSourceUtils.rollback();//事务回滚
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            try {
                pdsu.edu.utils.MyDataSourceUtils.commit();//事务提交
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return transferSuccess;
    }

}

dao层 

package pdsu.edu.dao;

import java.sql.Connection;
import java.sql.SQLException;

import javax.management.Query;

import org.apache.commons.dbutils.QueryRunner;

import pdsu.edu.utils.DataSourceUtils;
import pdsu.edu.utils.MyDataSourceUtils;

public class ZhuanzhangDao {

//转账放数据操作的实现
    public void out(String name1, int money) {
        // TODO Auto-generated method stub
        QueryRunner qr = new QueryRunner();
        try {
            Connection conn = MyDataSourceUtils.getCurrentConnection();
            String sql = "update zhuanzhang set money=money-? where name=?";
            qr.update(conn, sql, money,name1);
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

//收款方数据操作的实现    

public void in(String name2, int money) {
        // TODO Auto-generated method stub
        QueryRunner qr = new QueryRunner();
        Connection conn;
        try {
            conn = MyDataSourceUtils.getCurrentConnection();
            String sql = "update zhuanzhang set money=money+? where name=?";
            qr.update(conn, sql, money,name2);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


}

执行效果 

猜你喜欢

转载自blog.csdn.net/llxybm/article/details/82491245
今日推荐