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. golang 自定义json解析

    在实际开发中,经常会遇到需要定制json编解码的情况. 比如,按照指定的格式输出json字符串, 又比如,根据条件决定是否在最后的json字符串中显示或者不显示某些字段. 如果希望自己定义对象的编码和 ...

  2. redis 如何查看所有的key

    可以使用KEYS 命令 KEYS pattern 例如, 列出所有的key redis> keys * 列出匹配的key redis>keys apple* 1) apple1 2) ap ...

  3. Spark代码Eclipse远程调试

    我们在编写Spark Application或者是阅读源码的时候,我们很想知道代码的运行情况,比如参数设置的是否正确等等.用Logging方式来调试是一个可以选择的方式,但是,logging方式调试代 ...

  4. jQuery介绍 常用选择器

    jquery现在三个版本, 1.x  2.x  3.x  都在用,越小的版本兼容性越好,ie8以下浏览器也支持,新功能不多.我们通常使用1.x 在html中,css放Head中,js放body尾部 j ...

  5. 固态硬盘SSD,机械硬盘HDD,4K速度对比。

    HDD - SSD -

  6. regasm 无法定位输入程序集

    c# 写的DLL是32位的,在64位机器上注册时提示 无法定位输入程序集 方法1: 使用绝对路径: "%windir%\Microsoft.NET\Framework\v2.0.50727\ ...

  7. sql server 拼接字段

    方式一: --select @p_AllPARTOFCHECK = (select CAST(t.PARTOFCHECK as varchar)+'|' from QUEUEDETAIL t wher ...

  8. C#实现设置系统时间

    using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Demo { pub ...

  9. vi命令【方向键】变字母键的解决方法

    vi命令[方向键]变字母键的解决方法   最近在SSH下玩Debian发现了一个有趣的现象,就是在一些个别版本的Debian镜像下,使用vi命令时会出现键盘输出出错的现象,使用方向键时会变成C,D等字 ...

  10. 【git】之修改git仓库地址

    方法1 git remote set-url origin <url> 方法2 git remote rm origin git remote add origin [url] 方法三 直 ...