1.递归求数组最大值  2.转账(事务)  

1.递归应用

 public class DiGuiDemo3 {

     public static void main(String[] args) {
int[] array = { 31, 23, 2, 42, 23, 98, 12, 32, 17, 66, 31, 12 }; System.out.println(max(array)); } static int max(int[] array, int i) {
if (i == array.length - 1) {
return array[i];
}
return Math.max(array[i], max(array, i + 1));
} static int max(int[] array) {
return max(array, 0);
} }

2.转账案例(启用事务管理)

思路、实现分析

案例一:转账

实现需求:
1,创建页面
2,导包,工具
3,创建包结构
4,提交 Severlet -〉Service -〉Dao
5,页面跳转 代码实现:
1,准备工作:
com.itheima.demo4.transaction.dao
com.itheima.demo4.transaction.domain
com.itheima.demo4.transaction.service
com.itheima.demo4.transaction.servlet
事务管理
2,创建 jsp,作为转账页面
添加表单,有:付款人、收款人、转账金额、必要按钮
调整好页面格式 3,创建类
servlet.AccountServlet.java Web层
service.AccountService.java Service
dao.AccountDao.java Dao
domain.Account.java 4,编写代码:实现转账功能
转账页面提交位置:${ pageContext.request.contextPath }/AccountServlet 编写Servlet接收表单提交:AccountServlet
//处理中文
request.setCharacterEncoding("UTF-8");
//接收数据
String from = request.getParameter("from");
String to = request.getParameter("to");
Double money = request.getParameter("monye"); //处理数据(调用业务层)
AccountService accountService = new AccountService();
accountService.transfer(from, to, money); 实现数据处理方法:AccountService.transfer()
public void transfer(String from, Strinig to, Double money){
//调用dao
AccountDao accountDao = new AccountDao();
accountDao.doTransfer(from, to, money);
} 实现dao处理方法:AccountDao.doTransfer() Connection conn = null; //构造方法
public AccountDao(){
conn = JDBCUtils.getConnection();
setConn(conn);
}
public AccountDao(Connection conn){
this.conn = conn;
} public void doTransfer(String from, String to, Double money){
outMoney(from, money);
inMoney(to, money);
}
protected void outMoney(String name, Double money){
Connection conn = JDBCUtils.getConnection();
String sql = "update account set money = money - ? where name = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setDouble(1, money);
stmt.setString(2, from);
stmt.executeUpdate();
}
protected void inMoney(String name, Double money){ String sql = "update account set money = money + ? where name = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setDouble(1, money);
stmt.setString(2, from);
stmt.executeUpdate();
} protected void setConn(Connection conn){
this.conn = conn;
} 5,加事务管理 业务过程分析:
web层 - Service -- Dao
事务不能跨连接,需要在一个连接内控制。
事务添加位置:
重写业务层:AccountService.transfer()
public void transfer(String from, Strinig to, Double money){
Connection conn = JDBCUtils.getConnection();
//创建对象时,把连接对象传入
conn.setAutoCommit(false);
AccountDao accountDao = new AccountDao(conn);
accountDao.doTransfer(from, to, money);
conn.commit();
}

Z

阅读别人的程序(Java篇)的更多相关文章

  1. java程序设计基础篇 复习笔记 第一单元

    java语言程序设计基础篇笔记1. 几种有名的语言COBOL:商业应用FORTRAN:数学运算BASIC:易学易用Visual Basic,Delphi:图形用户界面C:汇编语言的强大功能和易学性,可 ...

  2. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  3. 最值得收藏的java技术博客(Java篇)

    第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大 ...

  4. 微信小程序+java后台

    博主是大四学生,毕业设计做的是微信小程序+java后台.陆陆续续经历了三个月(因为白天要实习又碰上过年玩了一阵子),从对微信小程序一无所知到完成毕设,碰到许多问题,在跟大家分享一下自己的经历和一个小程 ...

  5. JSON总结(java篇)

    JSON总结(java篇一) JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于 ...

  6. 面试总结——Java篇

    前言:前期对Java基础的相关知识点进行了总结,具体参看:Java基础和面试知识点.近期由于笔者正在换工作(ing),因此下面将笔者在面试过程中或笔者朋友面试过程中反馈的题目进行总结,相信弄清楚下面题 ...

  7. 前端微信小程序实战篇

    电商底部导航栏的制作 我想大家对电商一定不陌生,一般电商的底部导航栏有以下几个首页.分类.购物车.个人中心. app.json是用来配置page路径以及导航栏属性的,那我们要做首页.分类.购物车.个人 ...

  8. 【微信小程序】转载:微信小程序实战篇-下拉刷新与加载更多

    下拉刷新 实现下拉刷新目前能想到的有两种方式 1. 调用系统的API,系统有提供下拉刷新的API接口 当然,你可以直接在全局变量app.json的window里面配置上面这个属性,这样整个项目都允许下 ...

  9. 事件驱动模型实例详解(Java篇)

    或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...

随机推荐

  1. Spring Cloud(Dalston.SR5)--Eureka 注册中心高可用搭建

    高可用集群 在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对与微服务和服务注册中心都需要高可用部署,Eureka 高可用实际上就是将自己 ...

  2. 安装chrome扩展json-handle

    chrome插件安装 方式一,在线安装 直接插到json-handle地址,添加即可 https://chrome.google.com/webstore/detail/json-handle/iah ...

  3. 关于bool 与boolean

    关于bool的介绍,整理如下: bool 关键字是 System.Boolean 的别名.它用于声明变量来存储布尔值 true 和 false. 如果需要一个也可以有 null 值的布尔型变量,请使用 ...

  4. VarIsOrdinal,VarIsFloat,VarIsNumeric判断数字

    VarIsOrdinal        VarIsFloat        VarIsNumeric 就三个. 第一个 是否int,boolean 第二个 是否Double,Simple,Curren ...

  5. String的疑问

    ss[]//var ss:String; 和 Pointer(ss)^ 是不是一个意思呢? 答:不是. ss[]表示第一个字符.如:ss:='abc' 则表示]=Length(ss); Pointer ...

  6. pyqt环境安装

    pyqt环境配置 pip install pyqt5 windows下 pip install pyqt5-tools linux安装designer sudo apt install qttools ...

  7. python打包为独立可执行程序

    linux下 pip install pyinstaller 针对需要的项目 pyinstaller -F -w ./xxx.py 即可

  8. sql中的STRFTIME

    STRFTIME返回的是一个字符串 STRFTIME('%w',myTime) in ('1','2','4','5') 可以正确执行,而 STRFTIME('%w',myTime) in (1,2, ...

  9. Django项目--在开发环境运行静态页面

    在项目中运行静态页面的准备工作: 开发中使用前端node.js 提供的live-server服务器作为前端开发服务器使用 linux终端中准备node环境 npm install -g live-se ...

  10. Python 创建XML

    https://blog.csdn.net/seetheworld518/article/details/49535285