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. ASP.NET AJAX入门系列

    ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...

  2. JAVAFX开发桌面应用

    javafx中文版文档: http://www.yiibai.com/javafx/ JavaFX之FXController详解 JavaFx系列教程 含打包部署 javafx之两种局部界面的呈现方式 ...

  3. ubuntu-docker入门到放弃(二)docker初探(基本用法及命令)

    一.使用公共镜像 docker有一个开源的镜像管理系统,上面有很多常见的images,如mysql,nginx,tomcat等,可以直接根据自己的需求下载下来用,还有系统images,如redhat, ...

  4. docker-compose编排springcloud微服务

    .创建注册中心Eureka package com.dan.eurekaserver; import org.springframework.boot.SpringApplication; impor ...

  5. libextobjc使用

    pod 'libextobjc' #import "extobjc.h" 使用@weakify(self); @strongify(self)

  6. 【git】之push异常

    Push rejected: Push to origin/master was rejected 打开git shell面板 $ git pull origin master --allow-unr ...

  7. 使用jquery.mCustomScrollbar自定义滚动条(1)

    参考博客:https://blog.csdn.net/cdnight/article/details/41351505 api网址:http://manos.malihu.gr/jquery-cust ...

  8. 学习笔记之Visual Studio Code & Clang

    Mac上XCode太占空间,卸载然后安装VSCode和Clang.在VSCode中再安装extension C/C++和Code Runner,配置Tasks: Configure Task,就可以开 ...

  9. 学习笔记之Introduction to Data Visualization with Python | DataCamp

    Introduction to Data Visualization with Python | DataCamp https://www.datacamp.com/courses/introduct ...

  10. python输出缓冲区的问题

    碰到的问题,一段代码,print在前,log的在后,查看日志中log的反而在前面.是python输出缓冲区的问题. python输出缓冲区要满 4k 才写入文件,除非禁用缓存或者强制输出或者程序结束. ...