package controller;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;public class TransferController extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String username=req.getParameter("username"); //将响应信息拼接一下 resp.setCharacterEncoding("UTF-8"); PrintWriter out= resp.getWriter(); out.write("<html lang=\"en\">" + " <head>" + " <meta charset=\"UTF-8\">" + " </head>" + " <body>" + " <form action=\"doTransfer\" method=\"post\">" + " 请输入转账账户:<input type=\"text\" name=\"transferName\" value=\"\"><br>" + " 请输入转账金额:<input type=\"text\" name=\"transferMoney\" value=\"\"><br>" + " <input type=\"submit\" value=\"确认转账\">" + " <input type=\"hidden\" name=\"username\" value=\""+username+"\">" + " </form>" + " </body>" + "</html>"); }}
package controller;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;public class WithdrawController extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String username=req.getParameter("username"); //将响应信息拼接一下 resp.setCharacterEncoding("UTF-8"); PrintWriter out= resp.getWriter(); out.write("<html lang=\"en\">" + " <head>" + " <meta charset=\"UTF-8\">" + " </head>" + " <body>" + " <form action=\"doWithdraw\" method=\"post\">" + " 请输入取款金额:<input type=\"text\" name=\"withdrawMoney\" value=\"\"><br>" + " <input type=\"submit\" value=\"确认取款\">" + " <input type=\"hidden\" name=\"username\" value=\""+username+"\">" + " </form>" + " </body>" + "</html>"); }}
package dao;import domain.Atm;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class AtmDao { private String url="jdbc:mysql://localhost:3306/atm"; private String className="com.mysql.jdbc.Driver"; private String password="cy414ljh212,,,"; public Atm selectOne(String username){ Atm atm=null; try { Class.forName(className); Connection connection=DriverManager.getConnection(url,"root",password); String sql="SELECT USERNAME,PASSWORD,BALANCE FROM ATM WHERE USERNAME = ?"; PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1,username); ResultSet resultSet=preparedStatement.executeQuery(); if(resultSet.next()){ atm=new Atm(); atm.setUsername(resultSet.getString("username")); atm.setPassword(resultSet.getString("password")); atm.setBalance(resultSet.getFloat("balance")); } resultSet.close(); preparedStatement.close(); }catch (Exception e){ e.printStackTrace(); } return atm; } public void updateOne(Atm atm){ try { Class.forName(className); Connection connection=DriverManager.getConnection(url,"root",password); String sql="UPDATE ATM SET PASSWORD = ?,BALANCE = ? WHERE USERNAME = ?"; PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1,atm.getPassword()); preparedStatement.setFloat(2,atm.getBalance()); preparedStatement.setString(3,atm.getUsername()); preparedStatement.executeUpdate(); preparedStatement.close(); }catch (Exception e){ e.printStackTrace(); } }}
package domain;public class Atm { private String username; private String password; private Float balance; public Atm(String username, String password, Float balance) { this.username = username; this.password = password; this.balance = balance; } public Atm() { } public String getUsername() { return username; } public String getPassword() { return password; } public Float getBalance() { return balance; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setBalance(Float balance) { this.balance = balance; }}
package service;import dao.AtmDao;import domain.Atm;import util.MySpring;public class AtmService { private AtmDao atmDao = MySpring.getJavaBean("dao.AtmDao"); public String login(String username, String password) { String result = "用户名或密码错误"; Atm atm = atmDao.selectOne(username); if (atm != null && atm.getPassword().equals(password)) { result = "登陆成功"; } return result; } public Float inquire(String username) { return atmDao.selectOne(username).getBalance(); } public Float dposit(String username, Float dpositMoney) { Atm atm = atmDao.selectOne(username); atm.setBalance(atm.getBalance() + dpositMoney); atmDao.updateOne(atm); return atm.getBalance(); } public Float withdraw(String username, Float withdrawMoney) { Atm atm = atmDao.selectOne(username); if (atm.getBalance() < withdrawMoney) { return -1F; } else { atm.setBalance(atm.getBalance() - withdrawMoney); atmDao.updateOne(atm); return atm.getBalance(); } } public Float transfer(String username, String transferName, Float transferMoney) { Atm atm1 = atmDao.selectOne(username); Atm atm2 = atmDao.selectOne(transferName); if(atm2==null){ return -1F; }else if(atm1.getBalance()<transferMoney){ return -2F; }else{ atm1.setBalance(atm1.getBalance() - transferMoney); atm2.setBalance(atm2.getBalance()+transferMoney); atmDao.updateOne(atm1); atmDao.updateOne(atm2); return atm1.getBalance(); } }}
package util;
import java.util.HashMap;
public class MySpring {
private static HashMap<String,Object> beanMap=new HashMap<>();
public static <T>T getJavaBean(String className){
T obj=(T) beanMap.get(className);
if(obj==null){
try {
Class clazz=Class.forName(className);
obj=(T) clazz.newInstance();
beanMap.put(className,obj);
}catch (Exception e){
e.printStackTrace();
}
}
return obj;
}
}
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 登录-->
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>controller.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<!-- 查询-->
<servlet>
<servlet-name>query</servlet-name>
<servlet-class>controller.QueryController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>query</servlet-name>
<url-pattern>/query</url-pattern>
</servlet-mapping>
<!-- 存款-->
<servlet>
<servlet-name>deposit</servlet-name>
<servlet-class>controller.DepositController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deposit</servlet-name>
<url-pattern>/deposit</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>doDeposit</servlet-name>
<servlet-class>controller.DoDepositController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doDeposit</servlet-name>
<url-pattern>/doDeposit</url-pattern>
</servlet-mapping>
<!-- 取款-->
<servlet>
<servlet-name>withdraw</servlet-name>
<servlet-class>controller.WithdrawController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>withdraw</servlet-name>
<url-pattern>/withdraw</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>doWithdraw</servlet-name>
<servlet-class>controller.DoWithdrawController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doWithdraw</servlet-name>
<url-pattern>/doWithdraw</url-pattern>
</servlet-mapping>
<!-- 转账-->
<servlet>
<servlet-name>transfer</servlet-name>
<servlet-class>controller.TransferController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>transfer</servlet-name>
<url-pattern>/transfer</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>doTransfer</servlet-name>
<servlet-class>controller.DoTransferController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>doTransfer</servlet-name>
<url-pattern>/doTransfer</url-pattern>
</servlet-mapping>
</web-app>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="login" method="post">
<p>
账号:<input type="text" name="username" value="请输入用户名" style="color: #999;"
onfocus="if(this.value =='请输入用户名'){this.value=''}">
</p>
<p>
密码:<input type="password" name="password">
</p>
<input type="submit" value="登录">
</form>
</body>
</html>
AtmForServlet.zip