servlet银行储蓄管理系统java存取转账交易 jsp源代码mysql
发布人:shili8
发布时间:2025-03-05 20:55
阅读次数:0
**Servlet银行储蓄管理系统Java实现**
### 系统功能概述本系统是一个简单的银行储蓄管理系统,支持用户登录、查看余额、转账等基本功能。系统使用Java Servlet技术开发,JSP作为视图层,MySQL作为数据库。
### 系统结构* **Servlet**:负责处理请求和响应* **JSP**:用于显示页面内容* **DAO**:数据访问对象,负责与数据库交互* **Model**:模型类,封装业务逻辑### 系统功能实现####1. 用户登录**LoginServlet.java**
javaimport javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet. />import javax.servlet. />import javax.servlet. />import java.io.IOException; @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取用户名和密码 String username = req.getParameter("username"); String password = req.getParameter("password"); // 验证用户登录信息 if (verifyLogin(username, password)) { // 登录成功,跳转到首页 req.getRequestDispatcher("/index.jsp").forward(req, resp); } else { // 登录失败,显示错误消息 req.setAttribute("error", "用户名或密码错误"); req.getRequestDispatcher("/login.jsp").forward(req, resp); } } private boolean verifyLogin(String username, String password) { // 与数据库交互,验证用户登录信息 return DAO.verifyLogin(username, password); } }
####2. 查看余额**BalanceServlet.java**
javaimport javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet. />import javax.servlet. />import javax.servlet. />import java.io.IOException; @WebServlet("/balance") public class BalanceServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取用户名 String username = req.getParameter("username"); // 查询用户余额 double balance = DAO.getBalance(username); // 显示余额信息 req.setAttribute("balance", balance); req.getRequestDispatcher("/balance.jsp").forward(req, resp); } }
####3. 转账**TransferServlet.java**
javaimport javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet. />import javax.servlet. />import javax.servlet. />import java.io.IOException; @WebServlet("/transfer") public class TransferServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取用户名、转出金额和转入账户 String username = req.getParameter("username"); double amount = Double.parseDouble(req.getParameter("amount")); String toAccount = req.getParameter("toAccount"); // 转账操作 if (DAO.transfer(username, toAccount, amount)) { // 转账成功,显示消息 req.setAttribute("message", "转账成功"); } else { // 转账失败,显示错误消息 req.setAttribute("error", "转账失败"); } // 跳转到首页 req.getRequestDispatcher("/index.jsp").forward(req, resp); } }
### DAO实现**DAO.java**
javaimport java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DAO { private static final String DB_URL = "jdbc:mysql://localhost:3306/bank"; private static final String USER = "root"; private static final String PASS = ""; public boolean verifyLogin(String username, String password) { try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE username=? AND password=?")) { pstmt.setString(1, username); pstmt.setString(2, password); ResultSet rs = pstmt.executeQuery(); return rs.next(); } catch (Exception e) { System.out.println(e.getMessage()); return false; } } public double getBalance(String username) { try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement pstmt = conn.prepareStatement("SELECT balance FROM users WHERE username=?")) { pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { return rs.getDouble(1); } } catch (Exception e) { System.out.println(e.getMessage()); return0; } return0; } public boolean transfer(String fromAccount, String toAccount, double amount) { try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); PreparedStatement pstmt1 = conn.prepareStatement("UPDATE users SET balance=balance-? WHERE username=?"); PreparedStatement pstmt2 = conn.prepareStatement("UPDATE users SET balance=balance+? WHERE username=?")) { pstmt1.setDouble(1, amount); pstmt1.setString(2, fromAccount); pstmt2.setDouble(1, amount); pstmt2.setString(2, toAccount); if (pstmt1.executeUpdate() ==1 && pstmt2.executeUpdate() ==1) { return true; } } catch (Exception e) { System.out.println(e.getMessage()); return false; } return false; } }
### JSP实现**login.jsp**
jsp<!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> <form action="login" method="post"> <label>Username:</label> <input type="text" name="username"> <label>Password:</label> <input type="password" name="password"> <input type="submit" value="Login"> </form> </body> </html>
**index.jsp**
jsp<!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <h1>Welcome to Bank Management System!</h1> <a href="balance">Check Balance</a> <a href="transfer">Transfer Money</a> </body> </html>
**balance.jsp**
jsp<!DOCTYPE html> <html> <head> <title>Balance</title> </head> <body> <h1>Your balance is: ${balance}</h1> </body> </html>
### 总结本系统实现了基本的银行储蓄管理功能,包括用户登录、查看余额和转账。使用Java Servlet技术开发,JSP作为视图层,MySQL作为数据库。DAO类负责与数据库交互,模型类封装业务逻辑。