MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)

MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第1张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第2张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第3张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第4张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第5张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第6张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第7张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第8张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第9张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第10张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第11张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第12张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第13张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第14张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第15张图片MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第16张图片

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>






My JSP 'zhuanzhang.jsp' starting page











	

转账页面

付款人 收款人 转账金额
package transaction;

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

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

public class AccountServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		//接收参数
		String from=request.getParameter("from");
		String to=request.getParameter("to");
		Double money=Double.parseDouble(request.getParameter("money"));
		//处理数据
		AccountService as=new AccountService();
		try {
			as.transfer(from,to,money);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet( request,  response);
	}

}
package transaction;

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

import utils.c3p0tool;

public class AccountService {
	//业务层完成转账方法
	public void transfer(String from, String to, Double money) throws SQLException  {
		// TODO Auto-generated method stub
		AccountDao ad=new AccountDao();
		//方式一:在业务层获得Connection,传递给Dao
		Connection con = c3p0tool.getConnection();
		con.setAutoCommit(false);//不让数据库一步一步执行
		try {
			ad.outmoney(from,money);
			ad.inmoney(to,money);
			con.commit();
		} catch (Exception e) {//如果发生异常
			// TODO Auto-generated catch block
			con.rollback();
		}
		public void transfer2(String from, String to, Double money) throws SQLException  {
			// TODO Auto-generated method stub
			AccountDao ad=new AccountDao();
			//方式二:将connection绑定在当前线程
			try {
				c3p0tool.beginTransaction();
				ad.outmoney(from,money);
				ad.inmoney(to,money);
				c3p0tool.commitTransaction();
			} catch (Exception e) {//如果发生异常
				// TODO Auto-generated catch block
				c3p0tool.rollback();
			}
		}

	}
}

package transaction;

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

import utils.c3p0tool;

public class AccountDao {

	public void outmoney(String from, Double money) throws SQLException {
		// TODO Auto-generated method stub
		//获得连接
		/*Connection con = c3p0tool.getConnection();*/
		Connection con = c3p0tool.getConnection();
		//编写sql语句
		String sql="update account set money=money-? where name=?";
		//预编译sql
		PreparedStatement pst = con.prepareStatement(sql);
		pst.setDouble(1, money);
		pst.setString(2, from);
		pst.executeUpdate();
	}

	public void inmoney(String to, Double money) throws SQLException {
		// TODO Auto-generated method stub
		//获得连接
		/*Connection con = c3p0tool.getConnection();*/
		Connection con = c3p0tool.getConnection();
		//编写sql语句
		//int z=1/0;
		String sql="update account set money=money+? where name=?";
		//预编译sql
		PreparedStatement pst = con.prepareStatement(sql);
		pst.setDouble(1, money);
		pst.setString(2, to);
		pst.executeUpdate();
	}

}
package utils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;


public class c3p0tool {
	private static final ComboPooledDataSource datasource=new ComboPooledDataSource("");
	private static final ThreadLocaltl=new ThreadLocal();
	//将connection绑定在当前线程中
	public static Connection getConnection(){
		Connection con = null;
		//
		try {
			con=tl.get();
			if(con==null){
				con=datasource.getConnection();
				tl.set(con);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
	public static void update(String sql,Object...objects) throws SQLException{
		Connection con=getConnection();
		PreparedStatement prs = con.prepareStatement(sql);
		int count=prs.getParameterMetaData().getParameterCount();
		for(int i=0;i
MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第17张图片


package transaction;

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

import org.apache.commons.dbutils.DbUtils;

import utils.c3p0tool;

public class AccountService {
	//业务层完成转账方法
		public void transfer(String from, String to, Double money) throws SQLException  {
			AccountDao ad=new AccountDao();
			Connection con = c3p0tool.getConnection();
			con.setAutoCommit(false);//不让数据库一步一步执行
			try {
				ad.outmoney(con,from,money);
				ad.inmoney(con,to,money);
				DbUtils.commitAndCloseQuietly(con);
		}catch(Exception e){
			DbUtils.rollbackAndCloseQuietly(con);
		}

	}
}
package transaction;

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

import org.apache.commons.dbutils.QueryRunner;

import utils.c3p0tool;

public class AccountDao {

	public void outmoney(Connection con, String from, Double money) throws SQLException {
		// TODO Auto-generated method stub
		QueryRunner qr=new QueryRunner();
		String sql="update account set money=money-? where name=?";
		qr.update(con, sql, money,from);
	}

	public void inmoney(Connection con, String to, Double money) throws SQLException {
		// TODO Auto-generated method stub
		// TODO Auto-generated method stub
		QueryRunner qr=new QueryRunner();
		String sql="update account set money=money+? where name=?";
		qr.update(con, sql, money,to);
		//int z=1/0;
	}

}

MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第18张图片 MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第19张图片 MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第20张图片 MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第21张图片 MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第22张图片 MVC完成转账(JSP开发模式、反射、JAVABEAN、事物)_第23张图片



你可能感兴趣的:(MVC完成转账(JSP开发模式、反射、JAVABEAN、事物))