下面是本人實現的網頁版(設計思路見上一篇https://www.cnblogs.com/sengzhao666/p/10445984.html)
源碼下載:https://github.com/yishengxiaobai/JiZhangBen
代碼如下:
運行截圖:
首頁:
創建:
賬本刪除:(先查找后刪除)
查閱賬本:
實體entity層:
package entity; public class Account { private String name; private String amount; private String time; private String money; public void setName(String name) { this.name=name; } public String getName() { return name; } public void setAmount(String a) { amount=a; } public String getAmount() { return amount; } public void setTime(String b) { time=b; } public String getTime() { return time; } public void setMoney(String c) { money=c; } public String getMoney() { return money; } public Account() { } public Account(String a,String b,String c,String d) { name=a; amount=b; money=c; time=d; } }
數據庫util層:
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Shujuku { public static Connection conn(){ String url="jdbc:sqlserver://localhost:1433;DatabaseName=account";//填寫你的數據庫名 String userName="sa";//填寫你的用戶名,我的是sa String userPwd="tzk19991029";//填寫你的密碼tzk19991029 Connection connection=null; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); System.out.println("加載驅動成功!"); }catch(Exception e){ e.printStackTrace(); System.out.println("加載驅動失敗!"); } try{ connection=DriverManager.getConnection(url,userName,userPwd); System.out.println("連接數據庫成功!"); }catch(Exception e){ e.printStackTrace(); System.out.print("SQL Server連接失敗!"); } return connection; } public static void close (Statement state, Connection conn) {//關閉 if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close (ResultSet rs, Statement state, Connection conn) {//關閉 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
servlet層:
package servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import entity.Account; import service.Service; /** * Servlet implementation class AccountServlet */ @WebServlet("/AccountServlet") public class AccountServlet extends HttpServlet { private static final long serialVersionUID = 1L; Service service=new Service(); protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub req.setCharacterEncoding("utf-8"); String method = req.getParameter("method"); if(method.equals("add")) { add(req,resp); }else if(method.equals("delete")) { delete(req,resp); }else if(method.equals("update")) { update(req,resp); }else if(method.equals("list")) { list(req,resp); }else if(method.equals("getByname")) { getByname(req,resp); }else if(method.equals("show")) { show(req,resp); } else if(method.equals("getByname2")) { getByname2(req,resp); } } private void show(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { req.setCharacterEncoding("utf-8"); List<Account> accounts = service.list(); req.setAttribute("accounts", accounts); req.getRequestDispatcher("show.jsp").forward(req,resp); } private void add(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String a = req.getParameter("name"); String b = req.getParameter("amount"); String c = req.getParameter("money"); String d=req.getParameter("time"); Account account=new Account(a,b,c,d); int k=service.add(account); if(k==2) { req.setAttribute("message", "添加成功");//setAttribute方法用於將內容保存在對象中,傳到add.jsp中 req.getRequestDispatcher("add.jsp").forward(req,resp);//getRequestDispatcher方法用於進入下一個頁面 } if(k==0) { req.setAttribute("message", "重復,請重新錄入"); req.getRequestDispatcher("add.jsp").forward(req,resp); } if(k==1) { req.setAttribute("message", "數據庫添加失敗"); req.getRequestDispatcher("add.jsp").forward(req,resp); } } private void delete(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String name = req.getParameter("name"); int k=service.delete(name); if(k==0) { req.setAttribute("message", "刪除失敗"); req.getRequestDispatcher("deleteByname.jsp").forward(req,resp); } if(k==1) { req.setAttribute("message", "刪除成功"); req.getRequestDispatcher("index.jsp").forward(req,resp); } } private void update(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { // 修改 req.setCharacterEncoding("utf-8"); String a = req.getParameter("name"); String b = req.getParameter("amount"); String c = req.getParameter("money"); String d=req.getParameter("time"); Account account=new Account(a,b,c,d); int k=service.update(account); if(k==1) { req.setAttribute("message", "修改成功"); req.getRequestDispatcher("AccountServlet?method=show").forward(req,resp); }else { req.setAttribute("message", "修改失敗"); req.getRequestDispatcher("show.jsp").forward(req,resp); } } private void getByname(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{ //按照名字刪除 req.setCharacterEncoding("utf-8"); String name = req.getParameter("name"); Account account=service.getByname(name); if(account==null) { req.setAttribute("message", "查詢不到,請重新選擇"); req.getRequestDispatcher("deleteByname.jsp").forward(req,resp); }else { req.setAttribute("account", account); req.getRequestDispatcher("delete.jsp").forward(req,resp); } } private void getByname2(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{ //通過名字修改 req.setCharacterEncoding("utf-8"); String name = req.getParameter("name"); Account account=service.getByname2(name); req.setAttribute("account", account); req.getRequestDispatcher("update.jsp").forward(req,resp); } private void list(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException{ req.setCharacterEncoding("utf-8"); List<Account> accounts = service.list(); req.setAttribute("accounts", accounts); req.getRequestDispatcher("list.jsp").forward(req,resp); } }
service層:
package service; import java.util.List; import dao.Dao; import entity.Account; public class Service { Dao dao=new Dao(); public List<Account> show(String name) { return dao.show(name); } public int update(Account account) { int f=0; if(dao.update(account)) { f=1; } return f; } public int delete(String name) { int f=0; if(dao.delete(name)) { f=1; } return f; } public int add(Account account) { int f=0; if(!dao.rename(account.getName())) { f=1; if(dao.add(account)) f=2; } return f; } public Account getByname(String name) { return dao.getByname(name); } public List<Account> list() { // TODO 自動生成的方法存根 return dao.list(); } public Account getByname2(String name) { // TODO 自動生成的方法存根 return dao.getByname2(name); } }
dao層:
package dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import entity.Account; import util.Shujuku; public class Dao { public boolean rename(String name) { // 檢驗名字是否重復 boolean f=false; String sql="select name from account where name='"+name+"'";//數據庫語句,查詢界面輸入和表中name是否重復 Connection conn = Shujuku.conn();//創建連接 Statement state = null;//建立Statement對象,執行靜態SQL語句 ResultSet rs = null;//ResultSet對象 是查詢數據庫時的返回對象,讀取返回結果集 try { state = conn.createStatement(); rs = state.executeQuery(sql); while (rs.next()) {//不重復,返回true f = true; } } catch (SQLException e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return f; } public boolean add(Account account) { //添加 String sql = "insert into account(name,amount,money,time) values('" +account.getName() + "','" + account.getAmount() + "','" + account.getMoney() + "','" +account.getTime() + "')";//添加 Connection conn = Shujuku.conn(); Statement state = null; boolean f = false; int a=0; try { state = conn.createStatement(); a=state.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { Shujuku.close(state, conn); } if (a > 0) { f = true; } return f; } public boolean delete(String name) { // 通過名字刪除 boolean f=false; String sql = "delete from account where name ='" + name + "'";//刪除 Connection conn = Shujuku.conn(); Statement state = null; int a=0; try { state = conn.createStatement(); a=state.executeUpdate(sql); }catch (Exception e) { e.printStackTrace(); } finally { Shujuku.close(state, conn); } if(a>0) { f=true; } return f; } public boolean update(Account account) { // 修改 String sql = "update account set amount='" + account.getAmount() + "', money='" + account.getMoney()+"',time='" + account.getTime()+"'where name='"+account.getName()+"'"; Connection conn = Shujuku.conn(); Statement state = null; boolean f = false; int a = 0; try { state = conn.createStatement(); a = state.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } finally { Shujuku.close(state, conn); } if (a > 0) { f = true; } return f; } public List<Account> show(String name) { // 列出數據 String sql = "select * from account"; Connection conn = Shujuku.conn(); Statement state = null; ResultSet rs = null; List<Account> list = new ArrayList<>(); try { state = conn.createStatement(); rs = state.executeQuery(sql); Account bean = null; while (rs.next()) { String a = rs.getString("name"); String b = rs.getString("amount"); String c= rs.getString("money"); String d= rs.getString("time"); bean= new Account( a,b,c,d); list.add(bean); } } catch (SQLException e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return list; } public Account getByname(String name) { //通過名字得到 //模糊查詢 String sql = "select * from account where "; if (name != "") { sql += "name like '%" + name + "%'"; } Connection conn = Shujuku.conn(); Statement state = null; ResultSet rs = null; Account account = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while (rs.next()) { String d=rs.getString("name"); String a = rs.getString("amount"); String b=rs.getString("money"); String c=rs.getString("time"); account = new Account(d,a,b,c); } } catch (Exception e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return account; } public List<Account> list() { String sql = "select * from account"; List<Account> list = new ArrayList<>(); Connection conn = Shujuku.conn(); Statement state = null; ResultSet rs = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); Account bean = null; while (rs.next()) { String a = rs.getString("name"); String b = rs.getString("amount"); String c = rs.getString("money"); String d = rs.getString("time"); bean = new Account(a,b,c,d); list.add(bean); } } catch (SQLException e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return list; } public Account getByname2(String name) { String sql = "select * from account where "; if (name != "") { sql += "name like '%" + name + "%'"; } Connection conn = Shujuku.conn(); Statement state = null; ResultSet rs = null; Account account = null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while (rs.next()) { String d=rs.getString("name"); String a = rs.getString("amount"); String b=rs.getString("money"); String c=rs.getString("time"); account = new Account(d,a,b,c); } } catch (Exception e) { e.printStackTrace(); } finally { Shujuku.close(rs, state, conn); } return account; } }
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首頁</title> <style > .a{ font-size: 26px; margin-top: 20px; } </style> </head> <body> <div align="center"> <h1 style="color: red;">家庭記賬本</h1> <div class="a"> <a href="add.jsp">創建賬本</a> </div> <div class="a"> <a href="deleteByname.jsp">賬本刪除</a> </div> <div class="a"> <a href="AccountServlet?method=list">查閱賬本</a> </div> </div> </body> </html>
add.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">信息錄入</h1> <a href="index.jsp">返回主頁</a> <form action="AccountServlet?method=add" method="post" onsubmit="return check()"> <div > 名稱<input type="text" id="name" name="name"/> </div> <div > 數量<input type="text" id="amount" name="amount" /> </div> <div > 消費<input type="text" id="money" name="money" /> </div> <div > 時間<input type="text" id="time" name="time" /> </div> <div > <button type="submit" >保 存</button> </div> </form> </div> <script type="text/javascript"> function check() { var a = document.getElementById("name"); var b= document.getElementById("amount"); var c = document.getElementById("money"); //非空 if(a.value == '') { alert('名稱為空'); a.focus(); return false; } if(b.value == '') { alert('數量為空'); b.focus(); return false; } if(c.value == '') { alert('消費為空'); c.focus(); return false; } } </script> </body> </html>
deleteByname.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;"> 查找 </h1> <a href="index.jsp">返回主頁</a> <form action="AccountServlet?method=getByname" method="post" onsubmit="return check()"> <div > 名字<input type="text" id="name" name="name"/> </div> <div > <button type="submit" >查 詢</button> </div> </form> </div> <script type="text/javascript"> function check() { var name = document.getElementById("name"); //非空 if(name.value == '') { alert('名稱為空'); name.focus(); return false; } } </script> </body> </html>
delete.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <style> .a{ margin-top: 20px; } .b{ font-size: 20px; width: 160px; color: white; background-color: greenyellow; } .tb, td { border: 1px solid black; font-size: 22px; } </style> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">賬本刪除</h1> <a href="index.jsp">返回主頁</a> <table class="tb"> <tr> <td>姓名</td> <td>${account.name}</td> </tr> <tr> <td>數量</td> <td>${account.amount}</td> </tr> <tr> <td>消費</td> <td>${account.money}</td> </tr> <tr> <td>時間</td> <td>${account.time}</td> </tr> </table> <div > <a onclick="return check()" href="AccountServlet?method=delete&name=${account.name}">刪 除</a> </div> </div> <script type="text/javascript"> function check() { if (confirm("真的要刪除嗎?")){ return true; }else{ return false; } } </script> </body> </html>
list.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style> .a{ margin-top: 20px; } .b{ font-size: 20px; width: 160px; color: white; background-color: greenyellow; } .tb, td { border: 1px solid black; font-size: 22px; } </style> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">賬單列表</h1> <a href="index.jsp">返回主頁</a> <table class="tb"> <tr> <td>名 稱 </td> <td>數 量 </td> <td>消費總額</td> <td>消費時間</td> <td align="center" colspan="2">操作</td> </tr> <c:forEach items="${accounts}" var="item"> <tr> <td>${item.name}</td> <td>${item.amount}</td> <td>${item.money}</td> <td>${item.time}</td> <td><a href="AccountServlet?method=getByname2&name=${item.name}">修改</a></td> <td><a href="AccountServlet?method=getByname&name=${item.name}">刪除</a></td> </tr> </c:forEach> </table> </div> </body> </html>
update.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style> .a{ margin-top: 20px; } .b{ font-size: 20px; width: 160px; color: white; background-color: greenyellow; } </style> </head> <body> <% Object message = request.getAttribute("message"); if(message!=null && !"".equals(message)){ %> <script type="text/javascript"> alert("<%=request.getAttribute("message")%>"); </script> <%} %> <div align="center"> <h1 style="color: red;">信息修改</h1> <a href="index.jsp">返回主頁</a> <form action="AccountServlet?method=update" method="post" onsubmit="return check()"> <div class="a"> 名稱<input type="text" name="name" value="${account.name}"/> </div> <div class="a"> 數量<input type="text" id="amount" name="amount" value="${account.amount}"/> </div> <div class="a"> 消費<input type="text" id="money" name="money" value="${account.money}"/> </div> <div class="a"> 時間<input type="text" name="time" value="${account.time}"/> </div> <div class="a"> <button type="submit" class="b">修 改</button> </div> </form> </div> <script type="text/javascript"> function check() { var b = document.getElementById("amount"); var c = document.getElementById("money"); //非空 if(b.value == '') { alert('數量為空'); b.focus(); return false; } if(c.value == '') { alert('消費為空'); c.focus(); return false; } } </script> </body> </html>
show.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style> .a{ margin-top: 20px; } .b{ font-size: 20px; width: 160px; color: white; background-color: greenyellow; } .tb, td { border: 1px solid black; font-size: 22px; } </style> </head> <body> <div align="center"> <h1 style="color: red;">信息列表</h1> <a href="index.jsp">返回主頁</a> <table class="tb"> <tr> <td>名稱</td> <td>數量</td> <td>消費</td> <td>時間</td> </tr> <!-- forEach遍歷出adminBeans --> <c:forEach items="${accounts}" var="item" varStatus="status"> <tr> <td>${item.name}</td> <td><a>${item.amount}</a></td> <td>${item.money}</td> <td>${item.time}</td> </tr> </c:forEach> </table> </div> </body> </html>