首页 > 编程语言 >JAVA-EE在不使用MVC分层的情况下用一个servlet完成转账业务------Java-Web项目

JAVA-EE在不使用MVC分层的情况下用一个servlet完成转账业务------Java-Web项目

时间:2023-10-28 10:31:43浏览次数:40  
标签:Web balance JAVA java EE connection import null servlet

在不使用MVC分层的情况下用一个servlet完成转账业务

package com.bjpowernode.Bank.servlet;

import com.bjpowernode.Bank.exception.AppException;
import com.bjpowernode.Bank.exception.MoneyNotEnoughException;
import com.bjpowernode.oa.utils.DBUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

//@WebServlet("/bank/transfer")
public class AccountTransferServlet extends HttpServlet
{
    //当前Servlet实际上负责了
    //数据接收,核心业务处理,CRUD操作,界面的数据展示
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String fromActno = request.getParameter("fromActno");
        String toActno = request.getParameter("toActno");
        Double value = Double.parseDouble(request.getParameter("Value"));
        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        PreparedStatement statement1 = null;
        PreparedStatement statement2 = null;
        try
        {
            connection = DBUtil.getConnection();
            connection.setAutoCommit(false);
            String sql = "select * from t_act where actno = ?";
            statement = connection.prepareStatement(sql);
            statement.setString(1,fromActno);
            resultSet = statement.executeQuery();
            if(resultSet.next())
            {
                System.out.println("我在这");
                double balance = resultSet.getDouble("balance");
                System.out.println(balance);
                if(balance < value)
                {
                    //余额不足
                    throw new MoneyNotEnoughException("余额不足");
                }
                else
                {
                    String newSql = "update t_act set balance = balance - ? where actno = ?";
                    statement1 = connection.prepareStatement(newSql);
                    statement1.setDouble(1,value);
                    statement1.setString(2,fromActno);
                    int count = statement1.executeUpdate();
                    String sql2 = "update t_act set balance = balance + ? where actno = ?";
                    statement2 = connection.prepareStatement(sql2);
                    statement2.setDouble(1,value);
                    statement2.setString(2,toActno);
                    count = count + statement2.executeUpdate();
                    if(count != 2)
                    {
                        throw new AppException("App异常请联系管理员");
                    }
                    else
                    {
                        connection.commit();
                        out.println("转账成功");
                    }
                }
            }
        }
        catch (Exception e)
        {
            if (connection != null)
            {
                try
                {
                    connection.rollback();
                }
                catch (SQLException ex)
                {
                    throw new RuntimeException(ex);
                }
            }
            //传的一定是构造方法我们传的值
            out.println(e.getMessage());
        }
        finally
        {
            DBUtil.close(connection,statement,resultSet);
            DBUtil.close(null,statement1,null);
            DBUtil.close(null,statement2,null);
        }
    }
}

标签:Web,balance,JAVA,java,EE,connection,import,null,servlet
From: https://blog.51cto.com/u_16322355/8067835

相关文章

  • Java 垃圾回收机制
    目录垃圾回收的基础知识堆空间的基本结构内存分配和回收原则对象优先在Eden区分配大对象直接进入老年代长期存活的对象将进入老年代GC分类对象是否可被回收引用计数算法可达性分析算法引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomRefere......
  • LeetCode 11. 盛最多水的容器
    盛水最多的容器题目链接11.盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。**说明:**你不能倾斜容器。示例1:......
  • LeetCode 202. 快乐数
    快乐数题目链接202.快乐数编写一个算法来判断一个数n是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为1,也可能是无限循环但始终变不到1。如果这个过程结果为1,那么这个数就是快乐数。如果n......
  • Leetcode 1089. 复写零
    复写零题目链接1089.复写零给你一个长度固定的整数数组arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。注意:请不要在超过该数组长度的位置写入元素。请对输入的数组就地进行上述修改,不要从函数返回任何东西。示例1:输入:arr=[1,0,2,3,0,4,5,0]输出:[1,0,0,......
  • LeetCode 611. 有效三角形的个数
    有效三角形的个数题目链接611.有效三角形的个数给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。示例1:输入:nums=[2,2,3,4]输出:3解释:有效的组合是:2,3,4(使用第一个2)2,3,4(使用第二个2)2,2,3示例2:输入:nums=[4,2,3,4]输出:......
  • Leetcode 283. 移动零
    移动零题目链接283.移动零给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3,12,0,0]示例2:输入:nums=[0]输出:[0]题目解释这道题目......
  • Java 音频处理,音频流转音频文件,获取音频播放时长
    1.背景最近对接了一款智能手表,手环,可以应用与老人与儿童监控,环卫工人监控,农场畜牧业监控,宠物监控等,其中用到了音频传输,通过平台下发语音包,发送远程命令录制当前设备音频并将音频分包传输到服务器上生成音频文件等。其中关于音频的一些简单操作封装成了工具包。2.音频工具包引入jaud......
  • 你知道Java21中的顺序集合吗?
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java21中,处理集合的方式得到了改进,因为三个新的接口已经融入了现有的类型层次结构。这些顺序集合为我们提供了一个统一的API来访问第一个和最后一个元素,并以相反的顺序处理集合。为了更好地理解顺序集合是什么,让我们回顾一下集合......
  • java redis 短信业务应用
    javaredis短信业务应用短信业务场景:根据实际业务来通知客户,在短信的MQ中新增字段:是否需要发送短信的标识,短信微服务可以接收到MQ后根据该字段来判断是否发送。如果发送端MQ的事件的操作是分开的,比如步骤1:修改订单,步骤2:产生修改后的费用去支付,在支付成功之后才发送该MQ消息。......
  • Safeline开源免费的Web应用防火墙(WAF)
    https://zhuanlan.zhihu.com/p/641742236安装指南:配置需求:操作系统:Linux指令架构:x86_64软件依赖:Docker20.10.6或更高版本软件依赖:DockerCompose2.0.0或更高版本最小环境要求:1核CPU/1GB内存/10GB磁盘一键安装:bash-c"$(curl-fsSLkhttps://waf-ce.chaiti......